Remove KnownNodeList completely and remove pugi from build.

This commit is contained in:
Arthur Britto
2012-04-24 17:06:25 -07:00
parent 5f31b13e8d
commit 41ba874199
10 changed files with 85 additions and 145 deletions

View File

@@ -52,7 +52,6 @@ DB_SRCS = glob.glob('database/*.c') + glob.glob('database/*.cpp')
JSON_SRCS = glob.glob('json/*.cpp')
NEWCOIN_SRCS = glob.glob('src/*.cpp')
PROTO_SRCS = env.Protoc([], 'src/newcoin.proto', PROTOCOUTDIR='obj', PROTOCPYTHONOUTDIR=None)
UTIL_SRCS = glob.glob('util/*.cpp')
env.Clean(PROTO_SRCS, 'site_scons/site_tools/protoc.pyc')
@@ -62,7 +61,7 @@ UNUSED_SRCS = ['src/HttpReply.cpp', 'src/ValidationCollection.cpp']
for file in UNUSED_SRCS:
NEWCOIN_SRCS.remove(file)
NEWCOIN_SRCS += DB_SRCS + JSON_SRCS + UTIL_SRCS
NEWCOIN_SRCS += DB_SRCS + JSON_SRCS
# Derive the object files from the source files.
NEWCOIN_OBJS = []

View File

@@ -1,3 +0,0 @@
<nodes>
<node ip="127.0.0.1" port="4000" last="0" />
</nodes>

View File

@@ -93,7 +93,7 @@ void Application::run()
mRPCDoor=new RPCDoor(mIOService);
}//else BOOST_LOG_TRIVIAL(info) << "No RPC Port set. Not listening for commands.";
mConnectionPool.connectToNetwork(mKnownNodes, mIOService);
mConnectionPool.connectToNetwork(mIOService);
mTimingService.start(mIOService);
std::cout << "Before Run." << std::endl;

View File

@@ -3,7 +3,6 @@
#include "UniqueNodeList.h"
#include "ConnectionPool.h"
#include "KnownNodeList.h"
#include "TimingService.h"
#include "PubKeyCache.h"
#include "ScopedLock.h"
@@ -42,7 +41,6 @@ class Application
TimingService mTimingService;
UniqueNodeList mUNL;
KnownNodeList mKnownNodes;
PubKeyCache mPKCache;
LedgerMaster mMasterLedger;
LedgerAcquireMaster mMasterLedgerAcquire;

View File

@@ -4,7 +4,6 @@
#include "ConnectionPool.h"
#include "Config.h"
#include "KnownNodeList.h"
#include "Peer.h"
#include "Application.h"
@@ -13,30 +12,20 @@ ConnectionPool::ConnectionPool()
{ ; }
void ConnectionPool::connectToNetwork(KnownNodeList& nodeList,boost::asio::io_service& io_service)
void ConnectionPool::connectToNetwork(boost::asio::io_service& io_service)
{
#if 0
for(int n=0; n<theConfig.NUMBER_CONNECTIONS; n++)
{
KnownNode* node=nodeList.getNextNode();
if(!node) return;
Peer::pointer peer=Peer::create(io_service);
// peer->connectTo(*node); // FIXME
mPeers.push_back(peer);
}
#endif
}
/*
bool ConnectionPool::isMessageKnown(PackedMessage::pointer msg)
{
for(unsigned int n=0; n<mBroadcastMessages.size(); n++)
{
if(msg==mBroadcastMessages[n].first) return(false);
}
return(false);
}
*/
void ConnectionPool::relayMessage(Peer* fromPeer, PackedMessage::pointer msg)
{
@@ -47,41 +36,6 @@ void ConnectionPool::relayMessage(Peer* fromPeer, PackedMessage::pointer msg)
}
}
bool ConnectionPool::addToMap(const uint160& hanko, Peer::pointer peer)
{
boost::mutex::scoped_lock sl(peerLock);
return peerMap.insert(std::make_pair(hanko, peer)).second;
}
bool ConnectionPool::delFromMap(const uint160& hanko)
{
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 ConnectionPool::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 ConnectionPool::inMap(const uint160& hanko)
{
boost::mutex::scoped_lock sl(peerLock);
return peerMap.find(hanko) != peerMap.end();
}
std::map<uint160, Peer::pointer> ConnectionPool::getAllConnected()
{
boost::mutex::scoped_lock sl(peerLock);
return peerMap;
}
bool ConnectionPool::connectTo(const std::string& host, const std::string& port)
{
try
@@ -120,4 +74,56 @@ Json::Value ConnectionPool::getPeersJson()
return ret;
}
void ConnectionPool::peerDisconnected(NewcoinAddress naPeer)
{
std::cerr << "ConnectionPool::peerDisconnected" << std::cerr;
}
#if 0
bool ConnectionPool::addToMap(const uint160& hanko, Peer::pointer peer)
{
boost::mutex::scoped_lock sl(peerLock);
return peerMap.insert(std::make_pair(hanko, peer)).second;
}
bool ConnectionPool::delFromMap(const uint160& hanko)
{
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;
}
bool ConnectionPool::inMap(const uint160& hanko)
{
boost::mutex::scoped_lock sl(peerLock);
return peerMap.find(hanko) != peerMap.end();
}
std::map<uint160, Peer::pointer> ConnectionPool::getAllConnected()
{
boost::mutex::scoped_lock sl(peerLock);
return peerMap;
}
Peer::pointer ConnectionPool::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 ConnectionPool::isMessageKnown(PackedMessage::pointer msg)
{
for(unsigned int n=0; n<mBroadcastMessages.size(); n++)
{
if(msg==mBroadcastMessages[n].first) return(false);
}
return(false);
}
#endif
// vim:ts=4

View File

@@ -8,8 +8,6 @@
#include "PackedMessage.h"
#include "types.h"
class KnownNodeList;
/*
This is the list of all the Peers we are currently connected to
*/
@@ -18,24 +16,34 @@ class ConnectionPool
boost::mutex peerLock;
std::vector<Peer::pointer> mPeers; // FIXME
std::map<uint160, Peer::pointer> peerMap;
//std::vector<std::pair<PackedMessage::pointer,int> > mBroadcastMessages;
public:
ConnectionPool();
void connectToNetwork(KnownNodeList& nodeList, boost::asio::io_service& io_service);
void connectToNetwork(boost::asio::io_service& io_service);
void relayMessage(Peer* fromPeer, PackedMessage::pointer msg);
//bool isMessageKnown(PackedMessage::pointer msg);
// hanko->peer mapping functions
bool inMap(const uint160& hanko);
bool addToMap(const uint160& hanko, Peer::pointer peer);
bool delFromMap(const uint160& hanko);
Peer::pointer findInMap(const uint160& hanko);
std::map<uint160, Peer::pointer> getAllConnected();
// Manual connection request.
// Queue for immediate scanning.
bool connectTo(const std::string& host, const std::string& port);
// Peer notification routines.
void peerDisconnected(NewcoinAddress naPeer);
Json::Value getPeersJson();
#if 0
//std::vector<std::pair<PackedMessage::pointer,int> > mBroadcastMessages;
bool isMessageKnown(PackedMessage::pointer msg);
// hanko->peer mapping functions
bool addToMap(const uint160& hanko, Peer::pointer peer);
bool delFromMap(const uint160& hanko);
bool inMap(const uint160& hanko);
std::map<uint160, Peer::pointer> getAllConnected();
Peer::pointer findInMap(const uint160& hanko);
#endif
};
#endif

View File

@@ -1,38 +0,0 @@
#include "KnownNodeList.h"
#include "../util/pugixml.hpp"
using namespace pugi;
KnownNode::KnownNode(const char* ip,int port,int lastSeen,int lastTried)
: mIP(ip), mPort(port), mLastSeen(lastSeen), mLastTried(lastTried)
{
}
KnownNodeList::KnownNodeList()
{
mTriedIndex=0;
}
void KnownNodeList::load()
{
xml_document doc;
xml_parse_result result = doc.load_file("nodes.xml");
xml_node nodes=doc.child("nodes");
for(xml_node child = nodes.first_child(); child; child = child.next_sibling())
{
mNodes.push_back(KnownNode(child.attribute("ip").value(),child.attribute("port").as_int(),child.attribute("last").as_int(),0));
}
}
KnownNode* KnownNodeList::getNextNode()
{
if(mTriedIndex>=mNodes.size())
{
return(NULL);
}else
{
mTriedIndex++;
return(&(mNodes[mTriedIndex-1]));
}
}

View File

@@ -1,31 +0,0 @@
#ifndef __KNOWNNODELIST__
#define __KNOWNNODELIST__
#include "vector"
#include <string>
class KnownNode
{
public:
std::string mIP;
int mPort;
int mLastSeen;
int mLastTried;
KnownNode(const char* ip,int port,int lastSeen,int lastTried);
};
class KnownNodeList
{
unsigned int mTriedIndex;
std::vector <KnownNode> mNodes;
public:
KnownNodeList();
void load();
void addNode();
KnownNode* getNextNode();
};
#endif

View File

@@ -10,7 +10,6 @@
#include "../json/writer.h"
#include "Peer.h"
#include "KnownNodeList.h"
#include "Config.h"
#include "Application.h"
#include "Conversion.h"
@@ -53,7 +52,9 @@ void Peer::detach()
{
mSendQ.clear();
mSocket.close();
if(!!mHanko) theApp->getConnectionPool().delFromMap(mHanko);
// XXX Insufficient need to ip and port.
if(mPublicKey.IsValid()) theApp->getConnectionPool().peerDisconnected(mPublicKey);
}
void Peer::connected(const boost::system::error_code& error)
@@ -551,9 +552,9 @@ void Peer::punishPeer(PeerPunish)
Json::Value Peer::getJson() {
Json::Value ret(Json::objectValue);
ret["ip"] = mSocket.remote_endpoint().address().to_string();
ret["port"] = mSocket.remote_endpoint().port();
ret["hanko"] = mHanko.ToString();
ret["ip"] = mSocket.remote_endpoint().address().to_string();
ret["port"] = mSocket.remote_endpoint().port();
ret["public_key"] = mPublicKey.ToString();
return ret;
}

View File

@@ -31,7 +31,7 @@ protected:
std::list<PackedMessage::pointer> mSendQ;
PackedMessage::pointer mSendingPacket;
std::bitset<32> mPeerBits;
uint160 mHanko;
NewcoinAddress mPublicKey; // Public key of peer.
Peer(boost::asio::io_service& io_service);