//------------------------------------------------------------------------------ /* Copyright (c) 2011-2013, OpenCoin, Inc. */ //============================================================================== #ifndef RIPPLE_IPEERS_H #define RIPPLE_IPEERS_H /** Manages the set of connected peers. */ class IPeers { public: static IPeers* New (boost::asio::io_service& io_service); virtual ~IPeers () { } // Begin enforcing connection policy. virtual void start () = 0; // Send message to network. virtual int relayMessage (Peer* fromPeer, const PackedMessage::pointer& msg) = 0; virtual void relayMessageTo (const std::set& fromPeers, const PackedMessage::pointer& msg) = 0; virtual void relayMessageBut (const std::set& fromPeers, const PackedMessage::pointer& msg) = 0; // Manual connection request. // Queue for immediate scanning. virtual void connectTo (const std::string& strIp, int iPort) = 0; // // Peer connectivity notification. // virtual bool getTopNAddrs (int n, std::vector& addrs) = 0; virtual bool savePeer (const std::string& strIp, int iPort, char code) = 0; // We know peers node public key. // <-- bool: false=reject virtual bool peerConnected (Peer::ref peer, const RippleAddress& naPeer, const std::string& strIP, int iPort) = 0; // No longer connected. virtual void peerDisconnected (Peer::ref peer, const RippleAddress& naPeer) = 0; // As client accepted. virtual void peerVerified (Peer::ref peer) = 0; // As client failed connect and be accepted. virtual void peerClosed (Peer::ref peer, const std::string& strIp, int iPort) = 0; virtual int getPeerCount () = 0; virtual Json::Value getPeersJson () = 0; virtual std::vector getPeerVector () = 0; // Peer 64-bit ID function virtual uint64 assignPeerId () = 0; virtual Peer::pointer getPeerById (const uint64& id) = 0; virtual bool hasPeer (const uint64& id) = 0; // // Scanning // virtual void scanRefresh () = 0; // // Connection policy // virtual void policyLowWater () = 0; virtual void policyEnforce () = 0; // VFALCO This and others can be made private // configured connections virtual void makeConfigured () = 0; }; // VFALCO TODO Put this in some group of utilities extern void splitIpPort (const std::string& strIpPort, std::string& strIp, int& iPort); #endif // vim:ts=4