1 // Copyright (c) 2009-2010 Satoshi Nakamoto
2 // Copyright (c) 2011 The Bitcoin developers
3 // Distributed under the MIT/X11 software license, see the accompanying
4 // file license.txt or http://www.opensource.org/licenses/mit-license.php.
7 # error This header can only be compiled as C++.
10 #ifndef __INCLUDED_PROTOCOL_H__
11 #define __INCLUDED_PROTOCOL_H__
14 #include "serialize.h"
18 extern unsigned short nP2Port;
21 static inline unsigned short GetDefaultPort(const bool testnet = fTestNet)
23 return testnet ? 17777 : 7777;
33 extern unsigned char pchMessageStart[4];
39 CMessageHeader(const char* pszCommand, unsigned int nMessageSizeIn);
41 std::string GetCommand() const;
46 READWRITE(FLATDATA(pchMessageStart));
47 READWRITE(FLATDATA(pchCommand));
48 READWRITE(nMessageSize);
52 // TODO: make private (improves encapsulation)
54 enum { COMMAND_SIZE=12 };
55 char pchMessageStart[sizeof(::pchMessageStart)];
56 char pchCommand[COMMAND_SIZE];
57 unsigned int nMessageSize;
58 unsigned int nChecksum;
63 NODE_NETWORK = (1 << 0),
66 class CAddress : public CService
70 CAddress(CService ipIn, uint64 nServicesIn=NODE_NETWORK);
76 CAddress* pthis = const_cast<CAddress*>(this);
77 CService* pip = (CService*)pthis;
82 if ((nType & SER_DISK) || (nVersion >= 31402 && !(nType & SER_GETHASH)))
90 // TODO: make private (improves encapsulation)
94 // disk and network only
102 CInv(int typeIn, const uint256& hashIn);
103 CInv(const std::string& strType, const uint256& hashIn);
111 friend bool operator<(const CInv& a, const CInv& b);
113 bool IsKnownType() const;
114 const char* GetCommand() const;
115 std::string ToString() const;
118 // TODO: make private (improves encapsulation)
124 #endif // __INCLUDED_PROTOCOL_H__