channel steps forward.
There are two additional important structures that you may use either on the same device
-as the `ChannelManager` or on a separate one. `NetGraphMsgHandler` handles receiving channel
-and node announcements, which are then used to calculate routes by `get_route` for sending payments.
-`PeerManager` handles the authenticated and encrypted communication protocol,
-monitoring for liveness of peers, routing messages to `ChannelManager` and `NetGraphMsgHandler`
+as the `ChannelManager` or on a separate one. `P2PGossipSync` handles receiving channel
+and node announcements, which are then used to calculate routes by `find_route` for sending
+payments. `PeerManager` handles the authenticated and encrypted communication protocol,
+monitoring for liveness of peers, routing messages to `ChannelManager` and `P2PGossipSync`
instances directly, and receiving messages from them via the `EventsProvider` interface.
These structs communicate with each other using a public API, so that you can easily add
-----------------
| KeysInterface | --------------
----------------- | UserConfig |
- -------------------- | --------------
- ------| MessageSendEvent | | | ----------------
+ -------------------- ^ --------------
+ ------| MessageSendEvent | | ^ ----------------
/ -------------------- | | | FeeEstimator | <-----------------------
| (as MessageSendEventsProvider) | | ---------------- \
- | ^ | | / ------------------------ |
+ | ^ | | ^ ------------------------ |
| \ | | / ---------> | BroadcasterInterface | |
| \ | | / / ------------------------ |
- | \ v v v / ^ |
+ | \ | | / / ^ |
| (as ------------------ ---------------- | |
| ChannelMessageHandler)-> | ChannelManager | ----> | chain::Watch | | |
v / ------------------ ---------------- | |
--------------- / (as EventsProvider) ^ | |
| PeerManager |- \ | | |
--------------- \ | (is-a) | |
- | ----------------- \ _---------------- / /
- | | chain::Access | \ / | ChainMonitor |---------------
- | ----------------- \ / ----------------
- | | \ / |
-(as RoutingMessageHandler) v v v
- \ ---------------------- --------- -----------------
- -----------------> | NetGraphMsgHandler | | Event | | chain::Filter |
- ---------------------- --------- -----------------
+ | -------------- \ _---------------- / /
+ | | UtxoLookup | \ / | ChainMonitor |---------------
+ | -------------- \ / ----------------
+ | ^ \ / |
+(as RoutingMessageHandler) | v v
+ \ ----------------- --------- -----------------
+ -----------------> | P2PGossipSync | | Event | | chain::Filter |
+ ----------------- --------- -----------------
```