Commit Graph

46 Commits

Author SHA1 Message Date
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