Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 12 additions & 8 deletions Makefile.am
Original file line number Diff line number Diff line change
Expand Up @@ -51,12 +51,14 @@ src_libbitcoin_network_la_SOURCES = \
src/settings.cpp \
src/socket.cpp \
src/protocols/protocol.cpp \
src/protocols/protocol_address.cpp \
src/protocols/protocol_address_31402.cpp \
src/protocols/protocol_events.cpp \
src/protocols/protocol_ping.cpp \
src/protocols/protocol_seed.cpp \
src/protocols/protocol_ping_31402.cpp \
src/protocols/protocol_ping_60001.cpp \
src/protocols/protocol_seed_31402.cpp \
src/protocols/protocol_timer.cpp \
src/protocols/protocol_version.cpp \
src/protocols/protocol_version_31402.cpp \
src/protocols/protocol_version_70002.cpp \
src/sessions/session.cpp \
src/sessions/session_batch.cpp \
src/sessions/session_inbound.cpp \
Expand Down Expand Up @@ -108,12 +110,14 @@ include_bitcoin_network_HEADERS = \
include_bitcoin_network_protocolsdir = ${includedir}/bitcoin/network/protocols
include_bitcoin_network_protocols_HEADERS = \
include/bitcoin/network/protocols/protocol.hpp \
include/bitcoin/network/protocols/protocol_address.hpp \
include/bitcoin/network/protocols/protocol_address_31402.hpp \
include/bitcoin/network/protocols/protocol_events.hpp \
include/bitcoin/network/protocols/protocol_ping.hpp \
include/bitcoin/network/protocols/protocol_seed.hpp \
include/bitcoin/network/protocols/protocol_ping_31402.hpp \
include/bitcoin/network/protocols/protocol_ping_60001.hpp \
include/bitcoin/network/protocols/protocol_seed_31402.hpp \
include/bitcoin/network/protocols/protocol_timer.hpp \
include/bitcoin/network/protocols/protocol_version.hpp
include/bitcoin/network/protocols/protocol_version_31402.hpp \
include/bitcoin/network/protocols/protocol_version_70002.hpp

include_bitcoin_network_sessionsdir = ${includedir}/bitcoin/network/sessions
include_bitcoin_network_sessions_HEADERS = \
Expand Down
20 changes: 12 additions & 8 deletions builds/msvc/vs2013/libbitcoin-network/libbitcoin-network.vcxproj
Original file line number Diff line number Diff line change
Expand Up @@ -80,15 +80,17 @@
<ClCompile Include="..\..\..\..\src\p2p.cpp" />
<ClCompile Include="..\..\..\..\src\pending_channels.cpp" />
<ClCompile Include="..\..\..\..\src\pending_sockets.cpp" />
<ClCompile Include="..\..\..\..\src\protocols\protocol_ping_60001.cpp" />
<ClCompile Include="..\..\..\..\src\protocols\protocol_version_70002.cpp" />
<ClCompile Include="..\..\..\..\src\proxy.cpp" />
<ClCompile Include="..\..\..\..\src\settings.cpp" />
<ClCompile Include="..\..\..\..\src\protocols\protocol.cpp" />
<ClCompile Include="..\..\..\..\src\protocols\protocol_address.cpp" />
<ClCompile Include="..\..\..\..\src\protocols\protocol_address_31402.cpp" />
<ClCompile Include="..\..\..\..\src\protocols\protocol_events.cpp" />
<ClCompile Include="..\..\..\..\src\protocols\protocol_ping.cpp" />
<ClCompile Include="..\..\..\..\src\protocols\protocol_seed.cpp" />
<ClCompile Include="..\..\..\..\src\protocols\protocol_ping_31402.cpp" />
<ClCompile Include="..\..\..\..\src\protocols\protocol_seed_31402.cpp" />
<ClCompile Include="..\..\..\..\src\protocols\protocol_timer.cpp" />
<ClCompile Include="..\..\..\..\src\protocols\protocol_version.cpp" />
<ClCompile Include="..\..\..\..\src\protocols\protocol_version_31402.cpp" />
<ClCompile Include="..\..\..\..\src\sessions\session.cpp" />
<ClCompile Include="..\..\..\..\src\sessions\session_batch.cpp" />
<ClCompile Include="..\..\..\..\src\sessions\session_inbound.cpp" />
Expand All @@ -111,16 +113,18 @@
<ClInclude Include="..\..\..\..\include\bitcoin\network\p2p.hpp" />
<ClInclude Include="..\..\..\..\include\bitcoin\network\pending_channels.hpp" />
<ClInclude Include="..\..\..\..\include\bitcoin\network\pending_sockets.hpp" />
<ClInclude Include="..\..\..\..\include\bitcoin\network\protocols\protocol_ping_60001.hpp" />
<ClInclude Include="..\..\..\..\include\bitcoin\network\protocols\protocol_version_70002.hpp" />
<ClInclude Include="..\..\..\..\include\bitcoin\network\proxy.hpp" />
<ClInclude Include="..\..\..\..\include\bitcoin\network\settings.hpp" />
<ClInclude Include="..\..\..\..\include\bitcoin\network\const_buffer.hpp" />
<ClInclude Include="..\..\..\..\include\bitcoin\network\protocols\protocol.hpp" />
<ClInclude Include="..\..\..\..\include\bitcoin\network\protocols\protocol_address.hpp" />
<ClInclude Include="..\..\..\..\include\bitcoin\network\protocols\protocol_address_31402.hpp" />
<ClInclude Include="..\..\..\..\include\bitcoin\network\protocols\protocol_events.hpp" />
<ClInclude Include="..\..\..\..\include\bitcoin\network\protocols\protocol_ping.hpp" />
<ClInclude Include="..\..\..\..\include\bitcoin\network\protocols\protocol_seed.hpp" />
<ClInclude Include="..\..\..\..\include\bitcoin\network\protocols\protocol_ping_31402.hpp" />
<ClInclude Include="..\..\..\..\include\bitcoin\network\protocols\protocol_seed_31402.hpp" />
<ClInclude Include="..\..\..\..\include\bitcoin\network\protocols\protocol_timer.hpp" />
<ClInclude Include="..\..\..\..\include\bitcoin\network\protocols\protocol_version.hpp" />
<ClInclude Include="..\..\..\..\include\bitcoin\network\protocols\protocol_version_31402.hpp" />
<ClInclude Include="..\..\..\..\include\bitcoin\network\sessions\session.hpp" />
<ClInclude Include="..\..\..\..\include\bitcoin\network\sessions\session_batch.hpp" />
<ClInclude Include="..\..\..\..\include\bitcoin\network\sessions\session_inbound.hpp" />
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,24 +4,12 @@
<ClCompile Include="..\..\..\..\src\protocols\protocol.cpp">
<Filter>src\protocols</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\src\protocols\protocol_address.cpp">
<Filter>src\protocols</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\src\protocols\protocol_events.cpp">
<Filter>src\protocols</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\src\protocols\protocol_ping.cpp">
<Filter>src\protocols</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\src\protocols\protocol_seed.cpp">
<Filter>src\protocols</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\src\protocols\protocol_timer.cpp">
<Filter>src\protocols</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\src\protocols\protocol_version.cpp">
<Filter>src\protocols</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\src\sessions\session.cpp">
<Filter>src\sessions</Filter>
</ClCompile>
Expand Down Expand Up @@ -85,6 +73,24 @@
<ClCompile Include="..\..\..\..\src\const_buffer.cpp">
<Filter>src</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\src\protocols\protocol_ping_31402.cpp">
<Filter>src\protocols</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\src\protocols\protocol_seed_31402.cpp">
<Filter>src\protocols</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\src\protocols\protocol_address_31402.cpp">
<Filter>src\protocols</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\src\protocols\protocol_version_31402.cpp">
<Filter>src\protocols</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\src\protocols\protocol_ping_60001.cpp">
<Filter>src\protocols</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\src\protocols\protocol_version_70002.cpp">
<Filter>src\protocols</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\..\..\include\bitcoin\network.hpp">
Expand All @@ -93,24 +99,12 @@
<ClInclude Include="..\..\..\..\include\bitcoin\network\protocols\protocol.hpp">
<Filter>include\bitcoin\network\protocols</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\include\bitcoin\network\protocols\protocol_address.hpp">
<Filter>include\bitcoin\network\protocols</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\include\bitcoin\network\protocols\protocol_events.hpp">
<Filter>include\bitcoin\network\protocols</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\include\bitcoin\network\protocols\protocol_ping.hpp">
<Filter>include\bitcoin\network\protocols</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\include\bitcoin\network\protocols\protocol_seed.hpp">
<Filter>include\bitcoin\network\protocols</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\include\bitcoin\network\protocols\protocol_timer.hpp">
<Filter>include\bitcoin\network\protocols</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\include\bitcoin\network\protocols\protocol_version.hpp">
<Filter>include\bitcoin\network\protocols</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\include\bitcoin\network\sessions\session.hpp">
<Filter>include\bitcoin\network\sessions</Filter>
</ClInclude>
Expand Down Expand Up @@ -177,6 +171,24 @@
<ClInclude Include="..\..\..\..\include\bitcoin\network\locked_socket.hpp">
<Filter>include</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\include\bitcoin\network\protocols\protocol_address_31402.hpp">
<Filter>include\bitcoin\network\protocols</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\include\bitcoin\network\protocols\protocol_ping_31402.hpp">
<Filter>include\bitcoin\network\protocols</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\include\bitcoin\network\protocols\protocol_seed_31402.hpp">
<Filter>include\bitcoin\network\protocols</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\include\bitcoin\network\protocols\protocol_version_31402.hpp">
<Filter>include\bitcoin\network\protocols</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\include\bitcoin\network\protocols\protocol_ping_60001.hpp">
<Filter>include\bitcoin\network\protocols</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\include\bitcoin\network\protocols\protocol_version_70002.hpp">
<Filter>include\bitcoin\network\protocols</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<None Include="packages.config" />
Expand Down
10 changes: 6 additions & 4 deletions include/bitcoin/network.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -33,12 +33,14 @@
#include <bitcoin/network/socket.hpp>
#include <bitcoin/network/version.hpp>
#include <bitcoin/network/protocols/protocol.hpp>
#include <bitcoin/network/protocols/protocol_address.hpp>
#include <bitcoin/network/protocols/protocol_address_31402.hpp>
#include <bitcoin/network/protocols/protocol_events.hpp>
#include <bitcoin/network/protocols/protocol_ping.hpp>
#include <bitcoin/network/protocols/protocol_seed.hpp>
#include <bitcoin/network/protocols/protocol_ping_31402.hpp>
#include <bitcoin/network/protocols/protocol_ping_60001.hpp>
#include <bitcoin/network/protocols/protocol_seed_31402.hpp>
#include <bitcoin/network/protocols/protocol_timer.hpp>
#include <bitcoin/network/protocols/protocol_version.hpp>
#include <bitcoin/network/protocols/protocol_version_31402.hpp>
#include <bitcoin/network/protocols/protocol_version_70002.hpp>
#include <bitcoin/network/sessions/session.hpp>
#include <bitcoin/network/sessions/session_batch.hpp>
#include <bitcoin/network/sessions/session_inbound.hpp>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,8 @@
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef LIBBITCOIN_NETWORK_PROTOCOL_ADDRESS_HPP
#define LIBBITCOIN_NETWORK_PROTOCOL_ADDRESS_HPP
#ifndef LIBBITCOIN_NETWORK_PROTOCOL_ADDRESS_31402_HPP
#define LIBBITCOIN_NETWORK_PROTOCOL_ADDRESS_31402_HPP

#include <memory>
#include <bitcoin/bitcoin.hpp>
Expand All @@ -35,30 +35,31 @@ class p2p;
* Address protocol.
* Attach this to a channel immediately following handshake completion.
*/
class BCT_API protocol_address
: public protocol_events, track<protocol_address>
class BCT_API protocol_address_31402
: public protocol_events, track<protocol_address_31402>
{
public:
typedef std::shared_ptr<protocol_address> ptr;
typedef std::shared_ptr<protocol_address_31402> ptr;

/**
* Construct an address protocol instance.
* @param[in] network The network interface.
* @param[in] channel The channel on which to start the protocol.
*/
protocol_address(p2p& network, channel::ptr channel);
protocol_address_31402(p2p& network, channel::ptr channel);

/**
* Start the protocol.
*/
virtual void start();

private:
void handle_stop(const code& ec);
void handle_store_addresses(const code& ec);
protected:
virtual void handle_stop(const code& ec);
virtual void handle_store_addresses(const code& ec);

bool handle_receive_address(const code& ec, message::address::ptr address);
bool handle_receive_get_address(const code& ec,
virtual bool handle_receive_address(const code& ec,
message::address::ptr address);
virtual bool handle_receive_get_address(const code& ec,
message::get_address::ptr message);

p2p& network_;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,10 +17,9 @@
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef LIBBITCOIN_NETWORK_PROTOCOL_PING_HPP
#define LIBBITCOIN_NETWORK_PROTOCOL_PING_HPP
#ifndef LIBBITCOIN_NETWORK_PROTOCOL_PING_31402_HPP
#define LIBBITCOIN_NETWORK_PROTOCOL_PING_31402_HPP

#include <cstdint>
#include <memory>
#include <bitcoin/bitcoin.hpp>
#include <bitcoin/network/channel.hpp>
Expand All @@ -37,30 +36,29 @@ class p2p;
* Ping-pong protocol.
* Attach this to a channel immediately following handshake completion.
*/
class BCT_API protocol_ping
: public protocol_timer, track<protocol_ping>
class BCT_API protocol_ping_31402
: public protocol_timer, track<protocol_ping_31402>
{
public:
typedef std::shared_ptr<protocol_ping> ptr;
typedef std::shared_ptr<protocol_ping_31402> ptr;

/**
* Construct a ping protocol instance.
* @param[in] network The network interface.
* @param[in] channel The channel on which to start the protocol.
*/
protocol_ping(p2p& network, channel::ptr channel);
protocol_ping_31402(p2p& network, channel::ptr channel);

/**
* Start the protocol.
*/
virtual void start();

private:
void send_ping(const code& ec);
protected:
virtual void send_ping(const code& ec);

bool handle_receive_ping(const code& ec, message::ping::ptr message);
bool handle_receive_pong(const code& ec, message::pong::ptr message,
uint64_t nonce);
virtual bool handle_receive_ping(const code& ec,
message::ping::ptr message);

const settings& settings_;
};
Expand Down
66 changes: 66 additions & 0 deletions include/bitcoin/network/protocols/protocol_ping_60001.hpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
/**
* Copyright (c) 2011-2015 libbitcoin developers (see AUTHORS)
*
* This file is part of libbitcoin.
*
* libbitcoin is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License with
* additional permissions to the one published by the Free Software
* Foundation, either version 3 of the License, or (at your option)
* any later version. For more information see LICENSE.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef LIBBITCOIN_NETWORK_PROTOCOL_PING_60001_HPP
#define LIBBITCOIN_NETWORK_PROTOCOL_PING_60001_HPP

#include <cstdint>
#include <memory>
#include <bitcoin/bitcoin.hpp>
#include <bitcoin/network/channel.hpp>
#include <bitcoin/network/define.hpp>
#include <bitcoin/network/protocols/protocol_ping_31402.hpp>
#include <bitcoin/network/protocols/protocol_timer.hpp>
#include <bitcoin/network/settings.hpp>

namespace libbitcoin {
namespace network {

class p2p;

/**
* Ping-pong protocol.
* Attach this to a channel immediately following handshake completion.
*/
class BCT_API protocol_ping_60001
: public protocol_ping_31402, track<protocol_ping_60001>
{
public:
typedef std::shared_ptr<protocol_ping_60001> ptr;

/**
* Construct a ping protocol instance.
* @param[in] network The network interface.
* @param[in] channel The channel on which to start the protocol.
*/
protocol_ping_60001(p2p& network, channel::ptr channel);

protected:
void send_ping(const code& ec) override;

bool handle_receive_ping(const code& ec,
message::ping::ptr message) override;
virtual bool handle_receive_pong(const code& ec,
message::pong::ptr message, uint64_t nonce);
};

} // namespace network
} // namespace libbitcoin

#endif
Loading