mirror of
https://github.com/XRPLF/rippled.git
synced 2025-11-20 19:15:54 +00:00
Structures needed for network broadcasts.
This commit is contained in:
2
Peer.h
2
Peer.h
@@ -23,10 +23,10 @@ protected:
|
|||||||
std::list<PackedMessage::pointer> mSendQ;
|
std::list<PackedMessage::pointer> mSendQ;
|
||||||
PackedMessage::pointer mSendingPacket;
|
PackedMessage::pointer mSendingPacket;
|
||||||
std::bitset<32> mPeerBits;
|
std::bitset<32> mPeerBits;
|
||||||
|
uint160 hanko;
|
||||||
|
|
||||||
Peer(boost::asio::io_service& io_service);
|
Peer(boost::asio::io_service& io_service);
|
||||||
|
|
||||||
|
|
||||||
void handle_write(const boost::system::error_code& error, size_t bytes_transferred);
|
void handle_write(const boost::system::error_code& error, size_t bytes_transferred);
|
||||||
//void handle_read(const boost::system::error_code& error, size_t bytes_transferred);
|
//void handle_read(const boost::system::error_code& error, size_t bytes_transferred);
|
||||||
void handle_read_header(const boost::system::error_code& error);
|
void handle_read_header(const boost::system::error_code& error);
|
||||||
|
|||||||
40
PeerDoor.cpp
40
PeerDoor.cpp
@@ -28,7 +28,43 @@ void PeerDoor::handleConnect(Peer::pointer new_connection,
|
|||||||
if(!error)
|
if(!error)
|
||||||
{
|
{
|
||||||
new_connection->connected(error);
|
new_connection->connected(error);
|
||||||
}else cout << "Error: " << error; // BOOST_LOG_TRIVIAL(info) << "Error: " << error;
|
}
|
||||||
|
else cout << "Error: " << error; // BOOST_LOG_TRIVIAL(info) << "Error: " << error;
|
||||||
|
|
||||||
startListening();
|
startListening();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool PeerDoor::addToMap(const uint160& hanko, Peer::pointer peer)
|
||||||
|
{
|
||||||
|
boost::mutex::scoped_lock sl(peerLock);
|
||||||
|
return peerMap.insert(std::make_pair(hanko, peer)).second;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool PeerDoor::delFromMap(const uint160& hanko, Peer::pointer peer)
|
||||||
|
{
|
||||||
|
boost::mutex::scoped_lock sl(peerLock);
|
||||||
|
std::map<uint160, Peer::pointer>::iterator it=peerMap.find(hanko);
|
||||||
|
if((it==peerMap.end()) || (it->first!=hanko)) return false;
|
||||||
|
peerMap.erase(it);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
Peer::pointer PeerDoor::findInMap(const uint160& hanko)
|
||||||
|
{
|
||||||
|
boost::mutex::scoped_lock sl(peerLock);
|
||||||
|
std::map<uint160, Peer::pointer>::iterator it=peerMap.find(hanko);
|
||||||
|
if(it==peerMap.end()) return Peer::pointer();
|
||||||
|
return it->second;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool PeerDoor::inMap(const uint160& hanko)
|
||||||
|
{
|
||||||
|
boost::mutex::scoped_lock sl(peerLock);
|
||||||
|
return peerMap.find(hanko) != peerMap.end();
|
||||||
|
}
|
||||||
|
|
||||||
|
std::map<uint160, Peer::pointer> PeerDoor::getAllConnected()
|
||||||
|
{
|
||||||
|
boost::mutex::scoped_lock sl(peerLock);
|
||||||
|
return peerMap;
|
||||||
|
}
|
||||||
|
|||||||
21
PeerDoor.h
21
PeerDoor.h
@@ -1,5 +1,10 @@
|
|||||||
#include "Peer.h"
|
#include <map>
|
||||||
|
#include <set>
|
||||||
|
|
||||||
#include <boost/asio.hpp>
|
#include <boost/asio.hpp>
|
||||||
|
#include <boost/thread/mutex.hpp>
|
||||||
|
|
||||||
|
#include "Peer.h"
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Handles incoming connections from other Peers
|
Handles incoming connections from other Peers
|
||||||
@@ -11,6 +16,18 @@ class PeerDoor
|
|||||||
void startListening();
|
void startListening();
|
||||||
void handleConnect(Peer::pointer new_connection,
|
void handleConnect(Peer::pointer new_connection,
|
||||||
const boost::system::error_code& error);
|
const boost::system::error_code& error);
|
||||||
|
|
||||||
|
boost::mutex peerLock;
|
||||||
|
std::map<uint160, Peer::pointer> peerMap;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
PeerDoor(boost::asio::io_service& io_service);
|
PeerDoor(boost::asio::io_service& io_service);
|
||||||
};
|
|
||||||
|
|
||||||
|
// hanko->peer mapping functions
|
||||||
|
bool inMap(const uint160& hanko);
|
||||||
|
bool addToMap(const uint160& hanko, Peer::pointer peer);
|
||||||
|
bool delFromMap(const uint160& hanko, Peer::pointer peer);
|
||||||
|
Peer::pointer findInMap(const uint160& hanko);
|
||||||
|
std::map<uint160, Peer::pointer> getAllConnected();
|
||||||
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user