diff options
author | Giel van Schijndel <me@mortis.eu> | 2011-08-11 18:40:12 +0200 |
---|---|---|
committer | Giel van Schijndel <me@mortis.eu> | 2011-08-19 07:24:38 +0200 |
commit | 33e28c9948336784324cf5c7248ce608b93dbfde (patch) | |
tree | 180fc08aaa1594097d835c7874f478a1d6c4e02d /src/protocol.h | |
parent | 507fd9d15baac950df494742d67bcbafdaa4752c (diff) |
Move CAddress to protocol.[ch]pp
This commit does *not* and should not modify *any* code, it only moves
it from net.h and splits it across protocol.cpp and protocol.hpp.
Signed-off-by: Giel van Schijndel <me@mortis.eu>
Diffstat (limited to 'src/protocol.h')
-rw-r--r-- | src/protocol.h | 71 |
1 files changed, 71 insertions, 0 deletions
diff --git a/src/protocol.h b/src/protocol.h index b5baeb2a68..009f67dfa1 100644 --- a/src/protocol.h +++ b/src/protocol.h @@ -13,6 +13,12 @@ #include "serialize.h" #include <string> +extern bool fTestNet; +static inline unsigned short GetDefaultPort(const bool testnet = fTestNet) +{ + return testnet ? 18333 : 8333; +} + // // Message header // (4) message start @@ -49,4 +55,69 @@ class CMessageHeader unsigned int nChecksum; }; +enum +{ + NODE_NETWORK = (1 << 0), +}; + +class CAddress +{ + public: + CAddress(); + CAddress(unsigned int ipIn, unsigned short portIn=0, uint64 nServicesIn=NODE_NETWORK); + explicit CAddress(const struct sockaddr_in& sockaddr, uint64 nServicesIn=NODE_NETWORK); + explicit CAddress(const char* pszIn, int portIn, bool fNameLookup = false, uint64 nServicesIn=NODE_NETWORK); + explicit CAddress(const char* pszIn, bool fNameLookup = false, uint64 nServicesIn=NODE_NETWORK); + explicit CAddress(std::string strIn, int portIn, bool fNameLookup = false, uint64 nServicesIn=NODE_NETWORK); + explicit CAddress(std::string strIn, bool fNameLookup = false, uint64 nServicesIn=NODE_NETWORK); + + void Init(); + + IMPLEMENT_SERIALIZE + ( + if (fRead) + const_cast<CAddress*>(this)->Init(); + if (nType & SER_DISK) + READWRITE(nVersion); + if ((nType & SER_DISK) || (nVersion >= 31402 && !(nType & SER_GETHASH))) + READWRITE(nTime); + READWRITE(nServices); + READWRITE(FLATDATA(pchReserved)); // for IPv6 + READWRITE(ip); + READWRITE(port); + ) + + friend bool operator==(const CAddress& a, const CAddress& b); + friend bool operator!=(const CAddress& a, const CAddress& b); + friend bool operator<(const CAddress& a, const CAddress& b); + + std::vector<unsigned char> GetKey() const; + struct sockaddr_in GetSockAddr() const; + bool IsIPv4() const; + bool IsRFC1918() const; + bool IsRFC3927() const; + bool IsLocal() const; + bool IsRoutable() const; + bool IsValid() const; + unsigned char GetByte(int n) const; + std::string ToStringIPPort() const; + std::string ToStringIP() const; + std::string ToStringPort() const; + std::string ToString() const; + void print() const; + + // TODO: make private (improves encapsulation) + public: + uint64 nServices; + unsigned char pchReserved[12]; + unsigned int ip; + unsigned short port; + + // disk and network only + unsigned int nTime; + + // memory only + unsigned int nLastTry; +}; + #endif // __INCLUDED_PROTOCOL_H__ |