diff --git a/SConstruct b/SConstruct index a656f1f01..ef0806738 100644 --- a/SConstruct +++ b/SConstruct @@ -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 = [] diff --git a/nodes.xml b/nodes.xml deleted file mode 100644 index b8b1e8fb5..000000000 --- a/nodes.xml +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/src/Application.cpp b/src/Application.cpp index f4ebf63fd..6e6ab57fa 100644 --- a/src/Application.cpp +++ b/src/Application.cpp @@ -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; diff --git a/src/Application.h b/src/Application.h index 76bb5718c..b1023b1ea 100644 --- a/src/Application.h +++ b/src/Application.h @@ -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; diff --git a/src/ConnectionPool.cpp b/src/ConnectionPool.cpp index 5208a20b7..4196db6c9 100644 --- a/src/ConnectionPool.cpp +++ b/src/ConnectionPool.cpp @@ -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; nconnectTo(*node); // FIXME mPeers.push_back(peer); - } +#endif } -/* -bool ConnectionPool::isMessageKnown(PackedMessage::pointer msg) -{ - for(unsigned int n=0; n::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::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 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::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 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::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 mPeers; // FIXME std::map peerMap; - //std::vector > 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 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 > 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 getAllConnected(); + Peer::pointer findInMap(const uint160& hanko); +#endif }; #endif diff --git a/src/KnownNodeList.cpp b/src/KnownNodeList.cpp deleted file mode 100644 index e170935bc..000000000 --- a/src/KnownNodeList.cpp +++ /dev/null @@ -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])); - } -} diff --git a/src/KnownNodeList.h b/src/KnownNodeList.h deleted file mode 100644 index 6609314cc..000000000 --- a/src/KnownNodeList.h +++ /dev/null @@ -1,31 +0,0 @@ -#ifndef __KNOWNNODELIST__ -#define __KNOWNNODELIST__ - -#include "vector" -#include - -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 mNodes; -public: - KnownNodeList(); - - void load(); - void addNode(); - KnownNode* getNextNode(); - -}; - -#endif \ No newline at end of file diff --git a/src/Peer.cpp b/src/Peer.cpp index a5ae451eb..8fa8e351e 100644 --- a/src/Peer.cpp +++ b/src/Peer.cpp @@ -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; } diff --git a/src/Peer.h b/src/Peer.h index 5ca7464e4..f90412fec 100644 --- a/src/Peer.h +++ b/src/Peer.h @@ -31,7 +31,7 @@ protected: std::list mSendQ; PackedMessage::pointer mSendingPacket; std::bitset<32> mPeerBits; - uint160 mHanko; + NewcoinAddress mPublicKey; // Public key of peer. Peer(boost::asio::io_service& io_service);