Skip to content

Commit

Permalink
[feature] Update Pool<Node/Socket/Protocol>
Browse files Browse the repository at this point in the history
  • Loading branch information
Neels99 committed Feb 17, 2024
1 parent 62eecde commit 9c9076b
Show file tree
Hide file tree
Showing 4 changed files with 13 additions and 22 deletions.
4 changes: 2 additions & 2 deletions libnet/coind_node_data.h
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ class CoindNodeData
ConnectionStatus* status;

std::function<void(coind::data::types::BlockType)> send_block; //send block in p2p
HandlerManagerPtr<CoindProtocol> handler_manager;
HandlerManagerPtr handler_manager;
public:
uint64_t cur_share_version = 0;
coind::TXIDCache txidcache;
Expand All @@ -43,7 +43,7 @@ class CoindNodeData
Variable<coind::data::BlockHeaderType> best_block_header;
coind::HeightTracker get_height_rel_highest; // wanna for init get_block_height func!
public:
CoindNodeData(io::io_context* _context, ConnectionStatus* _status) : context(_context), status(_status)
CoindNodeData(io::io_context* context_, ConnectionStatus* status_) : context(context_), status(status_)
{
handler_manager = std::make_shared<HandlerManager<CoindProtocol>>();

Expand Down
2 changes: 1 addition & 1 deletion libnet/pool_node.h
Original file line number Diff line number Diff line change
Expand Up @@ -263,7 +263,7 @@ class PoolNodeClient : virtual PoolNodeData
};

#define SET_POOL_DEFAULT_HANDLER(msg) \
handler_manager->new_handler<pool::messages::message_##msg>(#msg, [&](auto _msg, auto _proto){ handle_message_##msg(_msg, _proto); });
handler_manager->new_handler<pool::messages::message_##msg, PoolProtocol>(#msg, [&](auto msg_, auto proto_){ handle_message_##msg(msg_, proto_); });

class PoolNode : public virtual PoolNodeData, public NodeExceptionHandler, public SupervisorElement, PoolNodeServer, PoolNodeClient, protected WebPoolNode
{
Expand Down
2 changes: 1 addition & 1 deletion libnet/pool_node_data.h
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@ class PoolNodeData
c2pool::dev::AddrStore* addr_store;
ShareTracker* tracker;
CoindNodeData* coind_node;
HandlerManagerPtr<PoolProtocol> handler_manager;
HandlerManagerPtr handler_manager;

//From CoindNode
VariableDict<uint256, coind::data::tx_type> known_txs;
Expand Down
27 changes: 9 additions & 18 deletions libnet/pool_protocol.h
Original file line number Diff line number Diff line change
Expand Up @@ -8,14 +8,16 @@

#include "pool_protocol_data.h"
#include "pool_messages.h"
#include "pool_socket.h"
#include <libdevcore/exceptions.h>
#include <libp2p/protocol.h>
#include <libp2p/protocol_events.h>
#include <libp2p/handler.h>
#include <libcoind/transaction.h>

#include <boost/asio/io_context.hpp>

class PoolProtocol : public Protocol<PoolProtocol>, public PoolProtocolData, ProtocolPinger
class PoolProtocol : public BaseProtocol<PoolSocket, Pinger>, public PoolProtocolData
{
public:
// std::set<uint256> remote_tx_hashes;
Expand All @@ -27,31 +29,20 @@ class PoolProtocol : public Protocol<PoolProtocol>, public PoolProtocolData, Pro
// std::vector<std::map<uint256, coind::data::tx_type>> known_txs_cache;

public:
PoolProtocol(boost::asio::io_context* _context, Socket* _socket, HandlerManagerPtr<PoolProtocol> _handler_manager, PoolProtocolData* _data) :
Protocol<PoolProtocol>("Pool", _socket, _handler_manager), PoolProtocolData(*_data),
ProtocolPinger(_context, 100, [&](){out_time_ping();},
[](){return 20; /*TODO: return c2pool::random::Expovariate(1/100);*/}, [&](){ send_ping(); })
{}

void send_ping()
PoolProtocol(boost::asio::io_context* context_, Socket* socket_, HandlerManagerPtr handler_manager_, PoolProtocolData* data_)
: BaseProtocol<PoolSocket, Pinger>(socket_, handler_manager_, 20, 100), PoolProtocolData(*data_)
{
auto ping_msg = std::make_shared<pool::messages::message_ping>();
socket->write(ping_msg);
}

void out_time_ping()
void timeout() override
{
//TODO: out of ping timer;
throw make_except<pool_exception, NetExcept>("out time ping", get_addr());
}

void bad_peer_happened()
void send_ping() override
{
// TODO:
auto ping_msg = std::make_shared<pool::messages::message_ping>();
socket->write(ping_msg);
}

void disconnect() override
{
socket->disconnect();
}
};

0 comments on commit 9c9076b

Please sign in to comment.