diff options
author | Pieter Wuille <pieter.wuille@gmail.com> | 2012-01-07 06:19:46 -0800 |
---|---|---|
committer | Pieter Wuille <pieter.wuille@gmail.com> | 2012-01-07 06:19:46 -0800 |
commit | 1684f98b27de9323d24ee4489af54dd84083956a (patch) | |
tree | 9c4313e815bd77e817f2dc5b796347d343458d0e /src/protocol.h | |
parent | 7486c64dd8436febbe59e82dbb875e83ad6b5194 (diff) | |
parent | 67a42f929b1434f647c63922fd02dc2b93b28060 (diff) |
Merge pull request #735 from sipa/netbase
Network stack refactor
Diffstat (limited to 'src/protocol.h')
-rw-r--r-- | src/protocol.h | 39 |
1 files changed, 8 insertions, 31 deletions
diff --git a/src/protocol.h b/src/protocol.h index 53d3eef4d5..67e20d94e1 100644 --- a/src/protocol.h +++ b/src/protocol.h @@ -11,6 +11,8 @@ #define __INCLUDED_PROTOCOL_H__ #include "serialize.h" +#include "netbase.h" +#include "util.h" #include <string> #include "uint256.h" @@ -61,58 +63,33 @@ enum NODE_NETWORK = (1 << 0), }; -class CAddress +class CAddress : public CService { 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); + CAddress(CService ipIn, uint64 nServicesIn=NODE_NETWORK); void Init(); IMPLEMENT_SERIALIZE ( + CAddress* pthis = const_cast<CAddress*>(this); + CService* pip = (CService*)pthis; if (fRead) - const_cast<CAddress*>(this)->Init(); + pthis->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); + READWRITE(*pip); ) - 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; |