Neil Booth
06c8eda161
Preparations for peer discovery
...
DEFAULT_PORTS is a now a coin property.
Other miscellaneous updates to get things closer
2017-01-29 06:47:43 +09:00
Neil Booth
e56f188816
Implement peer subscriptions
...
Incremental updates are passed.
Also implement a server.features RPC
2017-01-25 20:28:19 +09:00
Neil Booth
76b6899cf2
Try to avoid asyncio log spew on shutdown
...
Closes #106 .
This is a hacky workaround to an issue that needs to be
fixed in Python's asyncio library (where I filed issue 487
on github)
2017-01-25 20:27:33 +09:00
Neil Booth
cb0160901f
Unify executor and futures logic
2017-01-24 21:25:37 +09:00
Neil Booth
0ac36aeca0
Make a copy of sessions to loop over
2017-01-24 07:55:52 +09:00
Neil Booth
a7462a6ea3
Complete rewrite of JSON RPC infrastructure
...
Aim to be easier for clients to use, because to do peer
discovery we must act as a client to other servers.
Split out JSON session concept from the asyncio protocol
concept. This makes the JSON RPC support more easily
testable and usable as a stand-alone library.
In addition, support JSON RPC v1 and v2, and auto-detection
of peer's version.
2017-01-23 23:36:02 +09:00
Neil Booth
05a6da1920
Move peer management to peers.py from irc
...
It's cleaner and will be useful for peer-to-peer comms later
2017-01-22 23:34:44 +09:00
Neil Booth
766da5ed79
Don't maintain a sub_count in controller
...
Just do a tally occasionally.
It's too tricky to keep it accurate as it double-counts resubscribing to
the same address, for example
2017-01-20 08:09:33 +09:00
Neil Booth
4729ba2e21
Tweak the shutdown process
...
Clean it up a bit and make it harder to do wrongly.
2017-01-18 20:28:57 +09:00
Neil Booth
9a8c598fa8
The session needs to handle the version command.
2017-01-18 19:50:26 +09:00
Neil Booth
5abe4faa8d
JSON results are returned with HTTP status 500
2017-01-17 07:23:58 +09:00
Neil Booth
131601a7b2
Rework clean shutdown logic
...
So that the main block processor future is cancellable.
We wait for the executor and then flush anything unflushed.
Resolves the rest of the second part of #100
2017-01-16 21:22:24 +09:00
Neil Booth
b01933913f
Add traceback for daemon errors
2017-01-16 19:32:22 +09:00
Neil Booth
8d58d2a0e7
Clean up shutdown logic and logging
...
Add RPC "stop" command, and document it.
Fixes the 2nd part of #100
2017-01-16 19:31:57 +09:00
Neil Booth
9e6de7a554
Merge branch 'json-named-args' into develop
2017-01-12 22:41:18 +09:00
Neil Booth
d2da494120
Clarify README; no need to resync.
...
Update HOWTO and docs
2017-01-12 22:40:21 +09:00
Neil Booth
4eed43accb
Add named-argument handling as per JSON RPC 2.0
...
This involved a rewrite of the JSON RPC layer.
I took the opportunity to clean up the handling of requests
in general. It should now be easy to return nice help from
the docstrings.
Closes issue #99
2017-01-12 07:59:21 +09:00
Neil Booth
2ad64f6243
Add an RPC call to force a reorg at run-time
...
This required a large rework block processor and prefetcher
interaction, and led to various cleanups
Closes #103
2017-01-09 17:14:06 +09:00
Neil Booth
15051124af
Make flushes and reorgs async
...
Apart from the flush on shutdown and the flush when caught up,
neither of which matter, this makes flushes asynchronous.
Also, block processing for reorgs is now asynchronous.
This also removes the FORCE_REORG debug envvar; I want to
put that into the RPC interface.
Closes #102
2017-01-09 16:15:17 +09:00
Neil Booth
18af57059f
Improve group handling.
...
I believe this fixes #94
2017-01-07 15:21:45 +09:00
Neil Booth
2b2909f1c4
Move to hashX
...
The hashX of a script is the first 11 bytes of its sha256 hash.
Closes #72 .
2017-01-07 11:51:01 +09:00
Neil Booth
5cbe878cb8
Move ServerManager to controller.py
...
rename Controller
2017-01-02 17:30:32 +09:00
Neil Booth
93d53bdd87
The controller is dead!
2016-11-08 08:29:56 +09:00
Neil Booth
2b028cc065
Create BlockServer
...
Controller now an empty shell
2016-11-08 08:09:59 +09:00
Neil Booth
1393f6a030
Move signal handling out of the controller
2016-11-08 00:04:10 +09:00
Neil Booth
7f03b0fa73
Move job handling out of the controller
...
Controller on its last legs...
2016-11-07 19:57:23 +09:00
Neil Booth
00e9c5a31d
Add daemon debugging caught-up facility
2016-11-05 21:37:02 +09:00
Neil Booth
fb43712869
Controller clean up
2016-11-03 19:09:33 +09:00
Neil Booth
be2475f617
Handle utxo.get_address
2016-11-03 19:08:25 +09:00
Neil Booth
ceecdc54ac
Server work
...
Avoid touching the block preprocessor hot loop for now
2016-11-03 17:26:50 +09:00
Neil Booth
3d11afbda2
Enable servers
2016-11-03 16:48:10 +09:00
Neil Booth
d2ebb80fac
Extend copyright notice; improve comments
2016-11-03 16:45:06 +09:00
Neil Booth
3e4db868e6
Don't start servers for now.
2016-10-28 05:47:34 +09:00
Neil Booth
cdbb6b093a
Fix fs_cache tx count
2016-10-27 19:26:47 +09:00
Neil Booth
2001d5c4f4
Merge the DB and BlockProcessor classes
2016-10-27 07:59:46 +09:00
Neil Booth
c008c04e43
Move caches to their own file.
...
Move the DB to the block_processor file. It will merge with it soon.
2016-10-27 07:58:00 +09:00
Neil Booth
ace80c7b87
Split out the prefetcher.
2016-10-27 07:49:56 +09:00
Neil Booth
a813eaf5f5
Rename BlockCache and put in own file
2016-10-27 07:49:23 +09:00
Neil Booth
897e68d20c
Move some daemon logic to daemon.py
2016-10-27 07:45:10 +09:00
Neil Booth
6711ed0ae8
Clean up initialization of controller
2016-10-27 07:44:26 +09:00
Neil Booth
8452d0c016
Split out daemon handler into separate file.
2016-10-27 07:43:48 +09:00
Neil Booth
30d1b7f77c
Add proper block chaining check
2016-10-27 07:38:39 +09:00
Neil Booth
6ad8c16c47
Handle a couple more requests.
2016-10-27 07:25:34 +09:00
Neil Booth
1084060493
Clean up controller init, and sync on catch up
2016-10-27 07:23:52 +09:00
Neil Booth
208ed5d2b2
Don't start servers
2016-10-27 07:13:50 +09:00
Neil Booth
334ffdaa4f
Begin work on proper server
2016-10-17 20:02:42 +09:00