Skip to content

Commit b5101a2

Browse files
authored
Merge pull request #866 from evoskuil/master
Fix up full network->node derivation hierarchy.
2 parents 9553285 + 03b01a4 commit b5101a2

30 files changed

+808
-64
lines changed

Makefile.am

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -159,6 +159,7 @@ include_bitcoin_node_HEADERS = \
159159
include_bitcoin_node_channelsdir = ${includedir}/bitcoin/node/channels
160160
include_bitcoin_node_channels_HEADERS = \
161161
include/bitcoin/node/channels/channel.hpp \
162+
include/bitcoin/node/channels/channel_http.hpp \
162163
include/bitcoin/node/channels/channel_peer.hpp \
163164
include/bitcoin/node/channels/channel_tcp.hpp \
164165
include/bitcoin/node/channels/channels.hpp
@@ -185,22 +186,30 @@ include_bitcoin_node_impl_chasers_HEADERS = \
185186
include_bitcoin_node_protocolsdir = ${includedir}/bitcoin/node/protocols
186187
include_bitcoin_node_protocols_HEADERS = \
187188
include/bitcoin/node/protocols/protocol.hpp \
189+
include/bitcoin/node/protocols/protocol_bitcoind.hpp \
188190
include/bitcoin/node/protocols/protocol_block_in_106.hpp \
189191
include/bitcoin/node/protocols/protocol_block_in_31800.hpp \
190192
include/bitcoin/node/protocols/protocol_block_out_106.hpp \
191193
include/bitcoin/node/protocols/protocol_block_out_70012.hpp \
194+
include/bitcoin/node/protocols/protocol_electrum.hpp \
192195
include/bitcoin/node/protocols/protocol_explore.hpp \
193196
include/bitcoin/node/protocols/protocol_filter_out_70015.hpp \
194197
include/bitcoin/node/protocols/protocol_header_in_31800.hpp \
195198
include/bitcoin/node/protocols/protocol_header_in_70012.hpp \
196199
include/bitcoin/node/protocols/protocol_header_out_31800.hpp \
197200
include/bitcoin/node/protocols/protocol_header_out_70012.hpp \
201+
include/bitcoin/node/protocols/protocol_html.hpp \
202+
include/bitcoin/node/protocols/protocol_http.hpp \
198203
include/bitcoin/node/protocols/protocol_observer.hpp \
199204
include/bitcoin/node/protocols/protocol_peer.hpp \
200205
include/bitcoin/node/protocols/protocol_performer.hpp \
206+
include/bitcoin/node/protocols/protocol_stratum_v1.hpp \
207+
include/bitcoin/node/protocols/protocol_stratum_v2.hpp \
201208
include/bitcoin/node/protocols/protocol_tcp.hpp \
202209
include/bitcoin/node/protocols/protocol_transaction_in_106.hpp \
203210
include/bitcoin/node/protocols/protocol_transaction_out_106.hpp \
211+
include/bitcoin/node/protocols/protocol_web.hpp \
212+
include/bitcoin/node/protocols/protocol_websocket.hpp \
204213
include/bitcoin/node/protocols/protocols.hpp
205214

206215
include_bitcoin_node_sessionsdir = ${includedir}/bitcoin/node/sessions
@@ -210,6 +219,7 @@ include_bitcoin_node_sessions_HEADERS = \
210219
include/bitcoin/node/sessions/session_manual.hpp \
211220
include/bitcoin/node/sessions/session_outbound.hpp \
212221
include/bitcoin/node/sessions/session_peer.hpp \
222+
include/bitcoin/node/sessions/session_server.hpp \
213223
include/bitcoin/node/sessions/session_tcp.hpp \
214224
include/bitcoin/node/sessions/sessions.hpp
215225

builds/msvc/vs2022/libbitcoin-node/libbitcoin-node.vcxproj

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -166,6 +166,7 @@
166166
<ClInclude Include="..\..\..\..\include\bitcoin\node\block_arena.hpp" />
167167
<ClInclude Include="..\..\..\..\include\bitcoin\node\block_memory.hpp" />
168168
<ClInclude Include="..\..\..\..\include\bitcoin\node\channels\channel.hpp" />
169+
<ClInclude Include="..\..\..\..\include\bitcoin\node\channels\channel_http.hpp" />
169170
<ClInclude Include="..\..\..\..\include\bitcoin\node\channels\channel_peer.hpp" />
170171
<ClInclude Include="..\..\..\..\include\bitcoin\node\channels\channel_tcp.hpp" />
171172
<ClInclude Include="..\..\..\..\include\bitcoin\node\channels\channels.hpp" />
@@ -189,28 +190,37 @@
189190
<ClInclude Include="..\..\..\..\include\bitcoin\node\full_node.hpp" />
190191
<ClInclude Include="..\..\..\..\include\bitcoin\node\parser.hpp" />
191192
<ClInclude Include="..\..\..\..\include\bitcoin\node\protocols\protocol.hpp" />
193+
<ClInclude Include="..\..\..\..\include\bitcoin\node\protocols\protocol_bitcoind.hpp" />
192194
<ClInclude Include="..\..\..\..\include\bitcoin\node\protocols\protocol_block_in_106.hpp" />
193195
<ClInclude Include="..\..\..\..\include\bitcoin\node\protocols\protocol_block_in_31800.hpp" />
194196
<ClInclude Include="..\..\..\..\include\bitcoin\node\protocols\protocol_block_out_106.hpp" />
195197
<ClInclude Include="..\..\..\..\include\bitcoin\node\protocols\protocol_block_out_70012.hpp" />
198+
<ClInclude Include="..\..\..\..\include\bitcoin\node\protocols\protocol_electrum.hpp" />
196199
<ClInclude Include="..\..\..\..\include\bitcoin\node\protocols\protocol_explore.hpp" />
197200
<ClInclude Include="..\..\..\..\include\bitcoin\node\protocols\protocol_filter_out_70015.hpp" />
198201
<ClInclude Include="..\..\..\..\include\bitcoin\node\protocols\protocol_header_in_31800.hpp" />
199202
<ClInclude Include="..\..\..\..\include\bitcoin\node\protocols\protocol_header_in_70012.hpp" />
200203
<ClInclude Include="..\..\..\..\include\bitcoin\node\protocols\protocol_header_out_31800.hpp" />
201204
<ClInclude Include="..\..\..\..\include\bitcoin\node\protocols\protocol_header_out_70012.hpp" />
205+
<ClInclude Include="..\..\..\..\include\bitcoin\node\protocols\protocol_html.hpp" />
206+
<ClInclude Include="..\..\..\..\include\bitcoin\node\protocols\protocol_http.hpp" />
202207
<ClInclude Include="..\..\..\..\include\bitcoin\node\protocols\protocol_observer.hpp" />
203208
<ClInclude Include="..\..\..\..\include\bitcoin\node\protocols\protocol_peer.hpp" />
204209
<ClInclude Include="..\..\..\..\include\bitcoin\node\protocols\protocol_performer.hpp" />
210+
<ClInclude Include="..\..\..\..\include\bitcoin\node\protocols\protocol_stratum_v1.hpp" />
211+
<ClInclude Include="..\..\..\..\include\bitcoin\node\protocols\protocol_stratum_v2.hpp" />
205212
<ClInclude Include="..\..\..\..\include\bitcoin\node\protocols\protocol_tcp.hpp" />
206213
<ClInclude Include="..\..\..\..\include\bitcoin\node\protocols\protocol_transaction_in_106.hpp" />
207214
<ClInclude Include="..\..\..\..\include\bitcoin\node\protocols\protocol_transaction_out_106.hpp" />
215+
<ClInclude Include="..\..\..\..\include\bitcoin\node\protocols\protocol_web.hpp" />
216+
<ClInclude Include="..\..\..\..\include\bitcoin\node\protocols\protocol_websocket.hpp" />
208217
<ClInclude Include="..\..\..\..\include\bitcoin\node\protocols\protocols.hpp" />
209218
<ClInclude Include="..\..\..\..\include\bitcoin\node\sessions\session.hpp" />
210219
<ClInclude Include="..\..\..\..\include\bitcoin\node\sessions\session_inbound.hpp" />
211220
<ClInclude Include="..\..\..\..\include\bitcoin\node\sessions\session_manual.hpp" />
212221
<ClInclude Include="..\..\..\..\include\bitcoin\node\sessions\session_outbound.hpp" />
213222
<ClInclude Include="..\..\..\..\include\bitcoin\node\sessions\session_peer.hpp" />
223+
<ClInclude Include="..\..\..\..\include\bitcoin\node\sessions\session_server.hpp" />
214224
<ClInclude Include="..\..\..\..\include\bitcoin\node\sessions\session_tcp.hpp" />
215225
<ClInclude Include="..\..\..\..\include\bitcoin\node\sessions\sessions.hpp" />
216226
<ClInclude Include="..\..\..\..\include\bitcoin\node\settings.hpp" />

builds/msvc/vs2022/libbitcoin-node/libbitcoin-node.vcxproj.filters

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -185,6 +185,9 @@
185185
<ClInclude Include="..\..\..\..\include\bitcoin\node\channels\channel.hpp">
186186
<Filter>include\bitcoin\node\channels</Filter>
187187
</ClInclude>
188+
<ClInclude Include="..\..\..\..\include\bitcoin\node\channels\channel_http.hpp">
189+
<Filter>include\bitcoin\node\channels</Filter>
190+
</ClInclude>
188191
<ClInclude Include="..\..\..\..\include\bitcoin\node\channels\channel_peer.hpp">
189192
<Filter>include\bitcoin\node\channels</Filter>
190193
</ClInclude>
@@ -254,6 +257,9 @@
254257
<ClInclude Include="..\..\..\..\include\bitcoin\node\protocols\protocol.hpp">
255258
<Filter>include\bitcoin\node\protocols</Filter>
256259
</ClInclude>
260+
<ClInclude Include="..\..\..\..\include\bitcoin\node\protocols\protocol_bitcoind.hpp">
261+
<Filter>include\bitcoin\node\protocols</Filter>
262+
</ClInclude>
257263
<ClInclude Include="..\..\..\..\include\bitcoin\node\protocols\protocol_block_in_106.hpp">
258264
<Filter>include\bitcoin\node\protocols</Filter>
259265
</ClInclude>
@@ -266,6 +272,9 @@
266272
<ClInclude Include="..\..\..\..\include\bitcoin\node\protocols\protocol_block_out_70012.hpp">
267273
<Filter>include\bitcoin\node\protocols</Filter>
268274
</ClInclude>
275+
<ClInclude Include="..\..\..\..\include\bitcoin\node\protocols\protocol_electrum.hpp">
276+
<Filter>include\bitcoin\node\protocols</Filter>
277+
</ClInclude>
269278
<ClInclude Include="..\..\..\..\include\bitcoin\node\protocols\protocol_explore.hpp">
270279
<Filter>include\bitcoin\node\protocols</Filter>
271280
</ClInclude>
@@ -284,6 +293,12 @@
284293
<ClInclude Include="..\..\..\..\include\bitcoin\node\protocols\protocol_header_out_70012.hpp">
285294
<Filter>include\bitcoin\node\protocols</Filter>
286295
</ClInclude>
296+
<ClInclude Include="..\..\..\..\include\bitcoin\node\protocols\protocol_html.hpp">
297+
<Filter>include\bitcoin\node\protocols</Filter>
298+
</ClInclude>
299+
<ClInclude Include="..\..\..\..\include\bitcoin\node\protocols\protocol_http.hpp">
300+
<Filter>include\bitcoin\node\protocols</Filter>
301+
</ClInclude>
287302
<ClInclude Include="..\..\..\..\include\bitcoin\node\protocols\protocol_observer.hpp">
288303
<Filter>include\bitcoin\node\protocols</Filter>
289304
</ClInclude>
@@ -293,6 +308,12 @@
293308
<ClInclude Include="..\..\..\..\include\bitcoin\node\protocols\protocol_performer.hpp">
294309
<Filter>include\bitcoin\node\protocols</Filter>
295310
</ClInclude>
311+
<ClInclude Include="..\..\..\..\include\bitcoin\node\protocols\protocol_stratum_v1.hpp">
312+
<Filter>include\bitcoin\node\protocols</Filter>
313+
</ClInclude>
314+
<ClInclude Include="..\..\..\..\include\bitcoin\node\protocols\protocol_stratum_v2.hpp">
315+
<Filter>include\bitcoin\node\protocols</Filter>
316+
</ClInclude>
296317
<ClInclude Include="..\..\..\..\include\bitcoin\node\protocols\protocol_tcp.hpp">
297318
<Filter>include\bitcoin\node\protocols</Filter>
298319
</ClInclude>
@@ -302,6 +323,12 @@
302323
<ClInclude Include="..\..\..\..\include\bitcoin\node\protocols\protocol_transaction_out_106.hpp">
303324
<Filter>include\bitcoin\node\protocols</Filter>
304325
</ClInclude>
326+
<ClInclude Include="..\..\..\..\include\bitcoin\node\protocols\protocol_web.hpp">
327+
<Filter>include\bitcoin\node\protocols</Filter>
328+
</ClInclude>
329+
<ClInclude Include="..\..\..\..\include\bitcoin\node\protocols\protocol_websocket.hpp">
330+
<Filter>include\bitcoin\node\protocols</Filter>
331+
</ClInclude>
305332
<ClInclude Include="..\..\..\..\include\bitcoin\node\protocols\protocols.hpp">
306333
<Filter>include\bitcoin\node\protocols</Filter>
307334
</ClInclude>
@@ -320,6 +347,9 @@
320347
<ClInclude Include="..\..\..\..\include\bitcoin\node\sessions\session_peer.hpp">
321348
<Filter>include\bitcoin\node\sessions</Filter>
322349
</ClInclude>
350+
<ClInclude Include="..\..\..\..\include\bitcoin\node\sessions\session_server.hpp">
351+
<Filter>include\bitcoin\node\sessions</Filter>
352+
</ClInclude>
323353
<ClInclude Include="..\..\..\..\include\bitcoin\node\sessions\session_tcp.hpp">
324354
<Filter>include\bitcoin\node\sessions</Filter>
325355
</ClInclude>

include/bitcoin/node.hpp

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
#include <bitcoin/node/settings.hpp>
2929
#include <bitcoin/node/version.hpp>
3030
#include <bitcoin/node/channels/channel.hpp>
31+
#include <bitcoin/node/channels/channel_http.hpp>
3132
#include <bitcoin/node/channels/channel_peer.hpp>
3233
#include <bitcoin/node/channels/channel_tcp.hpp>
3334
#include <bitcoin/node/channels/channels.hpp>
@@ -44,28 +45,37 @@
4445
#include <bitcoin/node/chasers/chaser_validate.hpp>
4546
#include <bitcoin/node/chasers/chasers.hpp>
4647
#include <bitcoin/node/protocols/protocol.hpp>
48+
#include <bitcoin/node/protocols/protocol_bitcoind.hpp>
4749
#include <bitcoin/node/protocols/protocol_block_in_106.hpp>
4850
#include <bitcoin/node/protocols/protocol_block_in_31800.hpp>
4951
#include <bitcoin/node/protocols/protocol_block_out_106.hpp>
5052
#include <bitcoin/node/protocols/protocol_block_out_70012.hpp>
53+
#include <bitcoin/node/protocols/protocol_electrum.hpp>
5154
#include <bitcoin/node/protocols/protocol_explore.hpp>
5255
#include <bitcoin/node/protocols/protocol_filter_out_70015.hpp>
5356
#include <bitcoin/node/protocols/protocol_header_in_31800.hpp>
5457
#include <bitcoin/node/protocols/protocol_header_in_70012.hpp>
5558
#include <bitcoin/node/protocols/protocol_header_out_31800.hpp>
5659
#include <bitcoin/node/protocols/protocol_header_out_70012.hpp>
60+
#include <bitcoin/node/protocols/protocol_html.hpp>
61+
#include <bitcoin/node/protocols/protocol_http.hpp>
5762
#include <bitcoin/node/protocols/protocol_observer.hpp>
5863
#include <bitcoin/node/protocols/protocol_peer.hpp>
5964
#include <bitcoin/node/protocols/protocol_performer.hpp>
65+
#include <bitcoin/node/protocols/protocol_stratum_v1.hpp>
66+
#include <bitcoin/node/protocols/protocol_stratum_v2.hpp>
6067
#include <bitcoin/node/protocols/protocol_tcp.hpp>
6168
#include <bitcoin/node/protocols/protocol_transaction_in_106.hpp>
6269
#include <bitcoin/node/protocols/protocol_transaction_out_106.hpp>
70+
#include <bitcoin/node/protocols/protocol_web.hpp>
71+
#include <bitcoin/node/protocols/protocol_websocket.hpp>
6372
#include <bitcoin/node/protocols/protocols.hpp>
6473
#include <bitcoin/node/sessions/session.hpp>
6574
#include <bitcoin/node/sessions/session_inbound.hpp>
6675
#include <bitcoin/node/sessions/session_manual.hpp>
6776
#include <bitcoin/node/sessions/session_outbound.hpp>
6877
#include <bitcoin/node/sessions/session_peer.hpp>
78+
#include <bitcoin/node/sessions/session_server.hpp>
6979
#include <bitcoin/node/sessions/session_tcp.hpp>
7080
#include <bitcoin/node/sessions/sessions.hpp>
7181

include/bitcoin/node/channels/channel.hpp

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -34,14 +34,13 @@ class BCN_API channel
3434
public:
3535
typedef std::shared_ptr<node::channel> ptr;
3636

37+
DELETE_COPY_MOVE_DESTRUCT(channel);
38+
3739
protected:
3840
channel(const network::logger&, const network::socket::ptr&,
3941
const node::configuration&, uint64_t=zero) NOEXCEPT
4042
{
4143
}
42-
43-
virtual ~channel() NOEXCEPT {}
44-
4544
};
4645

4746
} // namespace node
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
/**
2+
* Copyright (c) 2011-2025 libbitcoin developers (see AUTHORS)
3+
*
4+
* This file is part of libbitcoin.
5+
*
6+
* This program is free software: you can redistribute it and/or modify
7+
* it under the terms of the GNU Affero General Public License as published by
8+
* the Free Software Foundation, either version 3 of the License, or
9+
* (at your option) any later version.
10+
*
11+
* This program is distributed in the hope that it will be useful,
12+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
13+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14+
* GNU Affero General Public License for more details.
15+
*
16+
* You should have received a copy of the GNU Affero General Public License
17+
* along with this program. If not, see <http://www.gnu.org/licenses/>.
18+
*/
19+
#ifndef LIBBITCOIN_NODE_CHANNELS_CHANNEL_HTTP_HPP
20+
#define LIBBITCOIN_NODE_CHANNELS_CHANNEL_HTTP_HPP
21+
22+
#include <memory>
23+
#include <bitcoin/network.hpp>
24+
#include <bitcoin/node/channels/channel.hpp>
25+
#include <bitcoin/node/configuration.hpp>
26+
#include <bitcoin/node/define.hpp>
27+
28+
namespace libbitcoin {
29+
namespace node {
30+
31+
/// Abstract base HTTP channel state for the node.
32+
class BCN_API channel_http
33+
: public network::channel_http,
34+
public node::channel
35+
{
36+
public:
37+
typedef std::shared_ptr<node::channel_http> ptr;
38+
using options_t = network::settings::http_server;
39+
40+
channel_http(const network::logger& log, const network::socket::ptr& socket,
41+
const node::configuration& config, uint64_t identifier=zero,
42+
const options_t& options={}) NOEXCEPT
43+
: network::channel_http(log, socket, config.network, identifier, options),
44+
node::channel(log, socket, config, identifier)
45+
{
46+
}
47+
};
48+
49+
} // namespace node
50+
} // namespace libbitcoin
51+
52+
#endif

include/bitcoin/node/channels/channel_peer.hpp

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,16 +28,22 @@
2828
namespace libbitcoin {
2929
namespace node {
3030

31-
/// Peer channel state for the node.
31+
/// Abstract base peer channel state for the node.
3232
class BCN_API channel_peer
33-
: public network::channel_peer, node::channel
33+
: public network::channel_peer,
34+
public node::channel
3435
{
3536
public:
3637
typedef std::shared_ptr<node::channel_peer> ptr;
3738

3839
channel_peer(network::memory& memory, const network::logger& log,
3940
const network::socket::ptr& socket, const node::configuration& config,
40-
uint64_t identifier=zero) NOEXCEPT;
41+
uint64_t identifier=zero) NOEXCEPT
42+
: network::channel_peer(memory, log, socket, config.network, identifier),
43+
node::channel(log, socket, config, identifier),
44+
announced_(config.node.announcement_cache)
45+
{
46+
}
4147

4248
void set_announced(const system::hash_digest& hash) NOEXCEPT;
4349
bool was_announced(const system::hash_digest& hash) const NOEXCEPT;

include/bitcoin/node/channels/channel_tcp.hpp

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -28,9 +28,10 @@
2828
namespace libbitcoin {
2929
namespace node {
3030

31-
/// TCP channel state for the node.
31+
/// Abstract base TCP channel state for the node.
3232
class BCN_API channel_tcp
33-
: public network::channel_tcp, node::channel
33+
: public network::channel_tcp,
34+
public node::channel
3435
{
3536
public:
3637
typedef std::shared_ptr<node::channel_tcp> ptr;
@@ -43,8 +44,6 @@ class BCN_API channel_tcp
4344
node::channel(log, socket, config, identifier)
4445
{
4546
}
46-
47-
virtual ~channel_tcp() NOEXCEPT {}
4847
};
4948

5049
} // namespace node

include/bitcoin/node/channels/channels.hpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
#include <bitcoin/node/channels/channel.hpp>
2323
#include <bitcoin/node/channels/channel_peer.hpp>
2424
#include <bitcoin/node/channels/channel_tcp.hpp>
25+
#include <bitcoin/node/channels/channel_http.hpp>
2526

2627
#endif
2728

include/bitcoin/node/protocols/protocol.hpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,8 @@ class BCN_API protocol
4747
protected:
4848
typedef std::shared_ptr<node::protocol> ptr;
4949

50+
DELETE_COPY_MOVE_DESTRUCT(protocol);
51+
5052
/// Constructors.
5153
/// -----------------------------------------------------------------------
5254

@@ -58,8 +60,6 @@ class BCN_API protocol
5860
{
5961
}
6062

61-
virtual ~protocol() NOEXCEPT {}
62-
6363
/// Properties.
6464
/// -----------------------------------------------------------------------
6565

0 commit comments

Comments
 (0)