Skip to content

Commit da5ba6a

Browse files
committed
Object hierarchy documentation.
1 parent f3bfaa7 commit da5ba6a

3 files changed

Lines changed: 133 additions & 0 deletions

File tree

include/bitcoin/server/channels/channels.hpp

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,3 +28,32 @@
2828

2929
#endif
3030

31+
/*
32+
33+
Network provides the base for all channels as rpc, http, peer. Websocket and
34+
html are not fully independent subclasses (operate within http).
35+
36+
network::channel
37+
├── [server::channel_stratum_v2]
38+
├── channel_rpc<Interface>
39+
│ └── [server::channel_stratum_v1]
40+
│ └── [server::channel_electrum]
41+
├── channel_http
42+
│ ├── [server::channel_http]
43+
│ └── channel_ws
44+
│ └── [server::channel_ws]
45+
└── channel_peer
46+
└── [node::channel_peer]
47+
48+
node::channel
49+
├── [server::channel]
50+
└── channel_peer → network::channel_peer
51+
52+
server::channel → node::channel
53+
├── channel_stratum_v2 → network::channel
54+
├── channel_stratum_v1 → network::channel_rpc<interface::stratum_v1>
55+
├── channel_electrum → network::channel_rpc<interface::electrum>
56+
├── channel_http → network::channel_http
57+
└── channel_ws → network::channel_ws
58+
59+
*/

include/bitcoin/server/protocols/protocols.hpp

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,3 +33,67 @@
3333
#include <bitcoin/server/protocols/protocol_admin.hpp>
3434

3535
#endif
36+
37+
/*
38+
39+
Network provides the base for all protocols as rpc, http, peer. However node
40+
and server do not inherit directly from network. Server extends node, but
41+
neither inherit from network until a subclass is defined (rpc, http, peer).
42+
Since stratum_v2 is just a stub it doesn't yet have its own subclass. Websocket
43+
and html are not independent subclasses (operate within http).
44+
45+
network::protocol
46+
├── [server:protocol_stratum_v2]
47+
├── protocol_rpc<Channel>
48+
│ └── [server::protocol_rpc<server::channel_stratum_v1>]
49+
│ └── [server::protocol_rpc<server::channel_electrum>]
50+
├── protocol_http
51+
│ ├── [server::protocol_bitcoind_rpc]
52+
│ └── protocol_ws
53+
│ └── [server::protocol_html]
54+
└── protocol_peer
55+
├── [node::protocol_peer]
56+
├── protocol_alert_311
57+
├── protocol_reject_70002
58+
├── protocol_seed_209
59+
├── protocol_address_in_209
60+
├── protocol_address_out_209
61+
├── protocol_ping_106
62+
│ └── protocol_ping_60001
63+
└── protocol_version_106
64+
└── protocol_version_70001
65+
└── protocol_version_70002
66+
└── protocol_version_70016
67+
68+
node::protocol
69+
├── [server::protocol]
70+
└── protocol_peer → network::protocol_peer
71+
├── protocol_observer
72+
├── protocol_filter_out_70015
73+
├── protocol_block_in_106
74+
├── protocol_performer
75+
│ └── protocol_block_in_31800
76+
├── protocol_block_out_106
77+
│ └── protocol_block_out_70012
78+
├── protocol_header_in_31800
79+
│ └── protocol_header_in_70012
80+
├── protocol_header_out_31800
81+
│ └── protocol_header_out_70012
82+
├── protocol_transaction_in_106
83+
└── protocol_transaction_out_106
84+
85+
server::protocol → node::protocol
86+
├── protocol_stratum_v2 → network::protocol
87+
├── protocol_rpc<channel_stratum_v1> → network::protocol_rpc<channel_stratum_v1>
88+
│ └── protocol_stratum_v1
89+
├── protocol_rpc<channel_electrum> → network::protocol_rpc<channel_electrum>
90+
│ ├── protocol_electrum
91+
│ └── protocol_electrum_version
92+
└── protocol_http
93+
├── protocol_html → network::protocol_ws
94+
│ ├── protocol_admin
95+
│ └── protocol_native
96+
└── protocol_bitcoind_rpc → network::protocol_http
97+
└── protocol_bitcoind_rest
98+
99+
*/

include/bitcoin/server/sessions/sessions.hpp

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,3 +41,43 @@ using session_electrum = session_handshake<protocol_electrum_version,
4141
} // namespace libbitcoin
4242

4343
#endif
44+
45+
/*
46+
47+
Network provides the base for all channels as client-server (server) and
48+
peer-to-peer (peer). ══ represents template instantiation (vs. derivation).
49+
50+
network::session
51+
├── session_server
52+
│ └── [server::session_server<...Protocols>]
53+
└── session_peer
54+
├── session_seed
55+
├── session_inbound
56+
│ └── [node::session_peer<network::session_inbound>]
57+
├── session_outbound
58+
│ └── [node::session_peer<network::session_outbound>]
59+
└── session_manual
60+
└── [node::session_peer<network::session_manual>]
61+
62+
node::session
63+
├── [server::session]
64+
└── session_peer<NetworkSession> → NetworkSession
65+
╞══ session_peer<network::session_inbound>
66+
│ └── session_inbound
67+
╞══ session_peer<network::session_outbound>
68+
│ └── session_outbound
69+
╘══ session_peer<network::session_manual>
70+
└── session_manual
71+
72+
server::session → node::session
73+
└── server::session_server<...Protocols> → network::session_server
74+
╞══ session_admin = server::session_server<protocol_admin>
75+
╞══ session_native = server::session_server<protocol_native>
76+
╞══ session_bitcoind = server::session_server<protocol_bitcoind_rest>
77+
╞══ session_stratum_v1 = server::session_server<protocol_stratum_v1>
78+
╞══ session_stratum_v2 = server::session_server<protocol_stratum_v2>
79+
└── server::session_handshake<...Protocols>
80+
╘══ session_electrum = server::session_handshake<
81+
protocol_electrum_version, protocol_electrum>
82+
83+
*/

0 commit comments

Comments
 (0)