aboutsummaryrefslogtreecommitdiffstats
path: root/rpc/notification_test.go
Commit message (Collapse)AuthorAgeFilesLines
* rpc: refactor subscriptions and filtersBas van Kervel2016-08-171-155/+0
|
* rpc: ensure client doesn't block for slow subscribersFelix Lange2016-08-061-0/+4
| | | | | | | | | | | | | | | | | | | | | I initially made the client block if the 100-element buffer was exceeded. It turns out that this is inconvenient for simple uses of the client which subscribe and perform calls on the same goroutine, e.g. client, _ := rpc.Dial(...) ch := make(chan int) // note: no buffer sub, _ := client.EthSubscribe(ch, "something") for event := range ch { client.Call(...) } This innocent looking code will lock up if the server suddenly decides to send 2000 notifications. In this case, the client's main loop won't accept the call because it is trying to deliver a notification to ch. The issue is kind of hard to explain in the docs and few people will actually read them. Buffering is the simple option and works with close to no overhead for subscribers that always listen.
* rpc: add new client, use it everywhereFelix Lange2016-07-231-7/+38
| | | | | | The new client implementation supports concurrent requests, subscriptions and replaces the various ad hoc RPC clients throughout go-ethereum.
* rpc: remove NotifierContextKeyFelix Lange2016-04-161-1/+1
| | | | | | | Context keys must have a unique type in order to prevent any unintented clashes. The code used int(1) as key. Fix it by implementing the pattern recommended by package context.
* all: update license informationFelix Lange2016-04-151-0/+1
|
* rpc: add pub/sub supportBas van Kervel2016-04-021-0/+119