Electroneum
Loading...
Searching...
No Matches
protocol.h
Go to the documentation of this file.
1
// Copyrights(c) 2017-2021, The Electroneum Project
2
// Copyrights(c) 2014-2019, The Monero Project
3
//
4
// All rights reserved.
5
//
6
// Redistribution and use in source and binary forms, with or without modification, are
7
// permitted provided that the following conditions are met:
8
//
9
// 1. Redistributions of source code must retain the above copyright notice, this list of
10
// conditions and the following disclaimer.
11
//
12
// 2. Redistributions in binary form must reproduce the above copyright notice, this list
13
// of conditions and the following disclaimer in the documentation and/or other
14
// materials provided with the distribution.
15
//
16
// 3. Neither the name of the copyright holder nor the names of its contributors may be
17
// used to endorse or promote products derived from this software without specific
18
// prior written permission.
19
//
20
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
21
// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
22
// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
23
// THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
24
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
25
// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
26
// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
27
// STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
28
// THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29
//
30
// Parts of this file are originally copyright (c) 2012-2013 The Cryptonote developers
31
32
#pragma once
33
34
#undef ELECTRONEUM_DEFAULT_LOG_CATEGORY
35
#define ELECTRONEUM_DEFAULT_LOG_CATEGORY "daemon"
36
37
namespace
daemonize
38
{
39
40
class
t_protocol
final
41
{
42
private
:
43
typedef
cryptonote::t_cryptonote_protocol_handler<cryptonote::core>
t_protocol_raw;
44
typedef
nodetool::node_server<t_protocol_raw>
t_node_server;
45
46
t_protocol_raw m_protocol;
47
public
:
48
t_protocol
(
49
boost::program_options::variables_map
const
& vm
50
,
t_core
& core,
bool
offline =
false
51
)
52
: m_protocol{core.
get
(), nullptr, offline}
53
{
54
MGINFO
(
"Initializing cryptonote protocol..."
);
55
if
(!m_protocol.init(vm))
56
{
57
throw
std::runtime_error(
"Failed to initialize cryptonote protocol."
);
58
}
59
MGINFO
(
"Cryptonote protocol initialized OK"
);
60
}
61
62
t_protocol_raw &
get
()
63
{
64
return
m_protocol;
65
}
66
67
void
set_p2p_endpoint
(
68
t_node_server & server
69
)
70
{
71
m_protocol.set_p2p_endpoint(&server);
72
}
73
74
~t_protocol
()
75
{
76
MGINFO
(
"Stopping cryptonote protocol..."
);
77
try
{
78
m_protocol.deinit();
79
m_protocol.set_p2p_endpoint(
nullptr
);
80
MGINFO
(
"Cryptonote protocol stopped successfully"
);
81
}
catch
(...) {
82
LOG_ERROR
(
"Failed to stop cryptonote protocol!"
);
83
}
84
}
85
};
86
87
}
cryptonote::t_cryptonote_protocol_handler
Definition
cryptonote_protocol_handler.h:78
daemonize::t_core
Definition
core.h:44
daemonize::t_protocol::get
t_protocol_raw & get()
Definition
protocol.h:62
daemonize::t_protocol::~t_protocol
~t_protocol()
Definition
protocol.h:74
daemonize::t_protocol::t_protocol
t_protocol(boost::program_options::variables_map const &vm, t_core &core, bool offline=false)
Definition
protocol.h:48
daemonize::t_protocol::set_p2p_endpoint
void set_p2p_endpoint(t_node_server &server)
Definition
protocol.h:67
nodetool::node_server
Definition
net_node.h:120
LOG_ERROR
#define LOG_ERROR(x)
Definition
misc_log_ex.h:98
MGINFO
#define MGINFO(x)
Definition
misc_log_ex.h:80
daemonize
Definition
command_parser_executor.cpp:38
src
daemon
protocol.h
Generated on
for Electroneum by
1.16.1