Skip to content
  • Hernando Castano's avatar
    Add Subscription RPC for Grandpa Finality (#5732) · eb0e05e1
    Hernando Castano authored
    
    
    * Rough skeleton for what I think the RPC should look like
    
    * Create channel for sending justifications
    
    Sends finalized header and justification from Grandpa to the
    client. This lays the groundwork for hooking into the RPC module.
    
    * WIP: Add subscribers for justifications to Grandpa
    
    Adds the Sender end of a channel into Grandpa, through which notifications
    about block finality events can be sent.
    
    * WIP: Add a struct for managing subscriptions
    
    Slightly different approach from the last commit, but same
    basic idea. Still a rough sketch, very much doesn't compile yet.
    
    * Make naming more clear and lock data in Arc
    
    * Rough idea of what RPC would look like
    
    * Remove code from previous approach
    
    * Missed some things
    
    * Update client/rpc-api/src/chain/mod.rs
    
    Co-Authored-By: default avatarTomasz Drwięga <[email protected]>
    
    * Update client/rpc-api/src/chain/mod.rs
    
    Co-Authored-By: default avatarTomasz Drwięga <[email protected]>
    
    * Split justification subscription into sender and receiver halves
    
    * Replace RwLock with a Mutex
    
    * Add sample usage from the Service's point of view
    
    * Remove code that referred to "chain_" RPC
    
    * Use the Justification sender/receivers from Grandpa LinkHalf
    
    * Add some PubSub boilerplate
    
    * Add guiding comments
    
    * TMP: comment out to fix compilation
    
    * Return MetaIoHandler from PubSubHandler in create_full
    
    * Uncomment pubsub methods in rpc handler (fails to build)
    
    * node/rpc: make Metadata concrete in create_full to fix compilation
    
    * node: pass in SubscriptionManger to grandpa rpc handler
    
    * grandpa-rpc: use SubscriptionManger to add subscriber
    
    * grandpa-rpc: attempt at setting up the justification stream (fails to build)
    
    * grandpa-rpc: fix compilation of connecting stream to sink
    
    * grandpa-rpc: implement unsubscribe
    
    * grandpa-rpc: update older tests
    
    * grandpa-rpc: add full prefix to avoid confusing rust-analyzer
    
    * grandpa-rpc: add test for pubsub not available
    
    * grandpa-rpc: tidy up leftover code
    
    * grandpa-rpc: add test for sub and unsub of justifications
    
    * grandpa-rpc: minor stylistic changes
    
    * grandpa-rpc: split unit test
    
    * grandpa-rpc: minor stylistic changes in test
    
    * grandpa-rpc: skip returning future when cancelling
    
    * grandpa-rpc: reuse testing executor from sc-rpc
    
    * grandpa-rpc: don't need to use PubSubHandler in tests
    
    * node-rpc: use MetaIoHandler rather than PubSubHandler
    
    * grandpa: log if getting header failed
    
    * grandpa: move justification channel creation into factory function
    
    * grandpa: make the justification sender optional
    
    * grandpa: fix compilation warnings
    
    * grandpa: move justification notification types to new file
    
    * grandpa-rpc: move JustificationNotification to grandpa-rpc
    
    * grandpa-rpc: move JustificationNotification to its own file
    
    * grandpa: rename justification channel pairs
    
    * grandpa: rename notifier types
    
    * grandpa: pass justification as GrandpaJustification to the rpc module
    
    * Move Metadata to sc-rpc-api
    
    * grandpa-rpc: remove unsed error code
    
    * grandpa: fix bug for checking if channel is closed before sendind
    
    * grandpa-rpc: unit test for sending justifications
    
    * grandpa-rpc: update comments for the pubsub test
    
    * grandpa-rpc: update pubsub tests with more steps
    
    * grandpa-rpc: fix pubsub test
    
    * grandpa-rpc: minor indendation
    
    * grandpa-rpc: decode instead of encode in test
    
    * grandpa: fix review comments
    
    * grandpa: remove unused serde dependency
    
    Co-authored-by: default avatarTomasz Drwięga <[email protected]>
    Co-authored-by: default avatarJon Häggblad <[email protected]>
    Co-authored-by: default avatarTomasz Drwięga <[email protected]>
    eb0e05e1