aboutsummaryrefslogtreecommitdiff
path: root/src/protocol.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/protocol.h')
-rw-r--r--src/protocol.h63
1 files changed, 19 insertions, 44 deletions
diff --git a/src/protocol.h b/src/protocol.h
index 2d90bafe61..69e3996956 100644
--- a/src/protocol.h
+++ b/src/protocol.h
@@ -1,5 +1,5 @@
// Copyright (c) 2009-2010 Satoshi Nakamoto
-// Copyright (c) 2011 The Bitcoin developers
+// Copyright (c) 2009-2012 The Bitcoin developers
// Distributed under the MIT/X11 software license, see the accompanying
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
@@ -10,11 +10,9 @@
#ifndef __INCLUDED_PROTOCOL_H__
#define __INCLUDED_PROTOCOL_H__
-#ifndef WIN32
-#include <netinet/in.h>
-#endif
-
#include "serialize.h"
+#include "netbase.h"
+#include "util.h"
#include <string>
#include "uint256.h"
@@ -24,15 +22,15 @@ static inline unsigned short GetDefaultPort(const bool testnet = fTestNet)
return testnet ? 18333 : 8333;
}
-//
-// Message header
-// (4) message start
-// (12) command
-// (4) size
-// (4) checksum
extern unsigned char pchMessageStart[4];
+/** Message header.
+ * (4) message start.
+ * (12) command.
+ * (4) size.
+ * (4) checksum.
+ */
class CMessageHeader
{
public:
@@ -47,7 +45,6 @@ class CMessageHeader
READWRITE(FLATDATA(pchMessageStart));
READWRITE(FLATDATA(pchCommand));
READWRITE(nMessageSize);
- if (nVersion >= 209)
READWRITE(nChecksum);
)
@@ -60,71 +57,49 @@ class CMessageHeader
unsigned int nChecksum;
};
+/** nServices flags */
enum
{
NODE_NETWORK = (1 << 0),
};
-class CAddress
+/** A CService with information about it as peer */
+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);
+ explicit 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;
// memory only
- unsigned int nLastTry;
+ int64 nLastTry;
};
+/** inv message data */
class CInv
{
public: