Skip to content

Commit 3b0439b

Browse files
committed
Add intermediate session base class.
1 parent 2e6d6a0 commit 3b0439b

7 files changed

Lines changed: 79 additions & 17 deletions

File tree

Makefile.am

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -185,6 +185,7 @@ include_bitcoin_server_protocols_HEADERS = \
185185

186186
include_bitcoin_server_sessionsdir = ${includedir}/bitcoin/server/sessions
187187
include_bitcoin_server_sessions_HEADERS = \
188+
include/bitcoin/server/sessions/session.hpp \
188189
include/bitcoin/server/sessions/session_handshake.hpp \
189190
include/bitcoin/server/sessions/session_server.hpp \
190191
include/bitcoin/server/sessions/sessions.hpp

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -180,6 +180,7 @@
180180
<ClInclude Include="..\..\..\..\include\bitcoin\server\protocols\protocol_stratum_v2.hpp" />
181181
<ClInclude Include="..\..\..\..\include\bitcoin\server\protocols\protocols.hpp" />
182182
<ClInclude Include="..\..\..\..\include\bitcoin\server\server_node.hpp" />
183+
<ClInclude Include="..\..\..\..\include\bitcoin\server\sessions\session.hpp" />
183184
<ClInclude Include="..\..\..\..\include\bitcoin\server\sessions\session_handshake.hpp" />
184185
<ClInclude Include="..\..\..\..\include\bitcoin\server\sessions\session_server.hpp" />
185186
<ClInclude Include="..\..\..\..\include\bitcoin\server\sessions\sessions.hpp" />

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -224,6 +224,9 @@
224224
<ClInclude Include="..\..\..\..\include\bitcoin\server\server_node.hpp">
225225
<Filter>include\bitcoin\server</Filter>
226226
</ClInclude>
227+
<ClInclude Include="..\..\..\..\include\bitcoin\server\sessions\session.hpp">
228+
<Filter>include\bitcoin\server\sessions</Filter>
229+
</ClInclude>
227230
<ClInclude Include="..\..\..\..\include\bitcoin\server\sessions\session_handshake.hpp">
228231
<Filter>include\bitcoin\server\sessions</Filter>
229232
</ClInclude>

include/bitcoin/server.hpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@
5656
#include <bitcoin/server/protocols/protocol_stratum_v1.hpp>
5757
#include <bitcoin/server/protocols/protocol_stratum_v2.hpp>
5858
#include <bitcoin/server/protocols/protocols.hpp>
59+
#include <bitcoin/server/sessions/session.hpp>
5960
#include <bitcoin/server/sessions/session_handshake.hpp>
6061
#include <bitcoin/server/sessions/session_server.hpp>
6162
#include <bitcoin/server/sessions/sessions.hpp>
Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
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_SERVER_SESSIONS_SESSION_HPP
20+
#define LIBBITCOIN_SERVER_SESSIONS_SESSION_HPP
21+
22+
#include <memory>
23+
#include <bitcoin/server/configuration.hpp>
24+
#include <bitcoin/server/define.hpp>
25+
#include <bitcoin/server/settings.hpp>
26+
27+
namespace libbitcoin {
28+
namespace server {
29+
30+
class server_node;
31+
32+
/// Intermediate base class for future server injection.
33+
class session
34+
: public node::session,
35+
protected network::tracker<session>
36+
{
37+
public:
38+
typedef std::shared_ptr<session> ptr;
39+
40+
/// Construct an instance (network should be started).
41+
inline session(server_node& node, const configuration& config) NOEXCEPT
42+
: node::session((node::full_node&)node), config_(config),
43+
network::tracker<session>((network::net&)node)
44+
{
45+
}
46+
47+
/// Configuration settings for all server libraries.
48+
inline const configuration& server_config() const NOEXCEPT
49+
{
50+
return config_;
51+
}
52+
53+
/// Server config settings.
54+
inline const settings& server_settings() const NOEXCEPT
55+
{
56+
return server_config().server;
57+
}
58+
59+
private:
60+
// This is thread safe.
61+
const configuration& config_;
62+
};
63+
64+
} // namespace server
65+
} // namespace libbitcoin
66+
67+
#endif

include/bitcoin/server/sessions/session_server.hpp

Lines changed: 5 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
#include <utility>
2424
#include <bitcoin/server/configuration.hpp>
2525
#include <bitcoin/server/define.hpp>
26+
#include <bitcoin/server/sessions/session.hpp>
2627

2728
namespace libbitcoin {
2829
namespace server {
@@ -40,7 +41,7 @@ class server_node;
4041
/// other protocols.
4142
template <typename ...Protocols>
4243
class session_server
43-
: public node::session,
44+
: public server::session,
4445
public network::session_server,
4546
protected network::tracker<session_server<Protocols...>>
4647
{
@@ -59,25 +60,13 @@ class session_server
5960
/// Construct an instance (network should be started).
6061
inline session_server(server_node& node, uint64_t identifier,
6162
const configuration& config, const options_t& options) NOEXCEPT
62-
: node::session((node::full_node&)node),
63+
: server::session(node, config),
6364
network::session_server((network::net&)node, identifier, options),
64-
config_(config), options_(options),
65+
options_(options),
6566
network::tracker<session_server<Protocols...>>(node)
6667
{
6768
}
6869

69-
/// Configuration settings for all server libraries.
70-
inline const configuration& server_config() const NOEXCEPT
71-
{
72-
return config_;
73-
}
74-
75-
/// Server config settings.
76-
inline const settings& server_settings() const NOEXCEPT
77-
{
78-
return server_config().server;
79-
}
80-
8170
protected:
8271
using socket_ptr = network::socket::ptr;
8372
using channel_ptr = network::channel::ptr;
@@ -124,8 +113,7 @@ class session_server
124113
}
125114

126115
protected:
127-
// These are thread safe.
128-
const configuration& config_;
116+
// This is thread safe.
129117
const options_t& options_;
130118
};
131119

include/bitcoin/server/sessions/sessions.hpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
#ifndef LIBBITCOIN_SERVER_SESSIONS_SESSIONS_HPP
2020
#define LIBBITCOIN_SERVER_SESSIONS_SESSIONS_HPP
2121

22+
#include <bitcoin/server/sessions/session.hpp>
2223
#include <bitcoin/server/sessions/session_handshake.hpp>
2324
#include <bitcoin/server/sessions/session_server.hpp>
2425

0 commit comments

Comments
 (0)