X-Git-Url: https://git.novaco.in/?p=novacoin.git;a=blobdiff_plain;f=src%2Fprotocol.h;h=30f9714ad8229a351cc4c5ae968e617f5c49d0c7;hp=b5baeb2a6838357a2b98773c259b5d712768f993;hb=0561bbd1c69263dceb24ffacf850788e6e961a13;hpb=507fd9d15baac950df494742d67bcbafdaa4752c diff --git a/src/protocol.h b/src/protocol.h index b5baeb2..30f9714 100644 --- a/src/protocol.h +++ b/src/protocol.h @@ -1,7 +1,7 @@ // 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 license.txt or http://www.opensource.org/licenses/mit-license.php. +// file COPYING or http://www.opensource.org/licenses/mit-license.php. #ifndef __cplusplus # error This header can only be compiled as C++. @@ -11,17 +11,30 @@ #define __INCLUDED_PROTOCOL_H__ #include "serialize.h" +#include "netbase.h" #include +#include "uint256.h" + +#define PPCOIN_PORT 9901 +#define RPC_PORT 9902 +#define TESTNET_PORT 9903 + +extern bool fTestNet; + +static inline unsigned short GetDefaultPort(const bool testnet = fTestNet) +{ + return testnet ? TESTNET_PORT : PPCOIN_PORT; +} -// -// 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: @@ -36,7 +49,6 @@ class CMessageHeader READWRITE(FLATDATA(pchMessageStart)); READWRITE(FLATDATA(pchCommand)); READWRITE(nMessageSize); - if (nVersion >= 209) READWRITE(nChecksum); ) @@ -49,4 +61,74 @@ class CMessageHeader unsigned int nChecksum; }; +/** nServices flags */ +enum +{ + NODE_NETWORK = (1 << 0), +}; + +/** A CService with information about it as peer */ +class CAddress : public CService +{ + public: + CAddress(); + explicit CAddress(CService ipIn, uint64 nServicesIn=NODE_NETWORK); + + void Init(); + + IMPLEMENT_SERIALIZE + ( + CAddress* pthis = const_cast(this); + CService* pip = (CService*)pthis; + if (fRead) + pthis->Init(); + if (nType & SER_DISK) + READWRITE(nVersion); + if ((nType & SER_DISK) || + (nVersion >= CADDR_TIME_VERSION && !(nType & SER_GETHASH))) + READWRITE(nTime); + READWRITE(nServices); + READWRITE(*pip); + ) + + void print() const; + + // TODO: make private (improves encapsulation) + public: + uint64 nServices; + + // disk and network only + unsigned int nTime; + + // memory only + int64 nLastTry; +}; + +/** inv message data */ +class CInv +{ + public: + CInv(); + CInv(int typeIn, const uint256& hashIn); + CInv(const std::string& strType, const uint256& hashIn); + + IMPLEMENT_SERIALIZE + ( + READWRITE(type); + READWRITE(hash); + ) + + friend bool operator<(const CInv& a, const CInv& b); + + bool IsKnownType() const; + const char* GetCommand() const; + std::string ToString() const; + void print() const; + + // TODO: make private (improves encapsulation) + public: + int type; + uint256 hash; +}; + #endif // __INCLUDED_PROTOCOL_H__