mirror of
https://github.com/aljazceru/lightning.git
synced 2025-12-19 15:14:23 +01:00
jsonrpc: allow multiple commands at once.
We now keep multiple commands for a json_connection, and an array of json_streams. When a command wants to write something, we allocate a new json_stream at the end of the array. We always output from the first available json_stream; once that command has finished, we free that and move to the next. Once all are done, we wake the reader. This means we won't read a new command if output is still pending, but as most commands don't start writing until they're ready to write everything, we still get command parallelism. In particular, you can now 'waitinvoice' and 'delinvoice' and it will work even though the 'waitinvoice' blocks. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
This commit is contained in:
committed by
Christian Decker
parent
f9fd802147
commit
e0d14bddb9
@@ -605,7 +605,7 @@ def test_multirpc(node_factory):
|
||||
b'{"id":5,"jsonrpc":"2.0","method":"listpeers","params":[]}',
|
||||
b'{"id":6,"jsonrpc":"2.0","method":"listpeers","params":[]}',
|
||||
b'{"method": "invoice", "params": [100, "foo", "foo"], "jsonrpc": "2.0", "id": 7 }',
|
||||
# FIXME: b'{"method": "waitinvoice", "params": ["foo"], "jsonrpc" : "2.0", "id": 8 }',
|
||||
b'{"method": "waitinvoice", "params": ["foo"], "jsonrpc" : "2.0", "id": 8 }',
|
||||
b'{"method": "delinvoice", "params": ["foo", "unpaid"], "jsonrpc" : "2.0", "id": 9 }',
|
||||
]
|
||||
|
||||
|
||||
Reference in New Issue
Block a user