diff options
| author | Giel van Schijndel <[email protected]> | 2011-08-11 18:14:53 +0200 |
|---|---|---|
| committer | Giel van Schijndel <[email protected]> | 2011-08-19 07:24:38 +0200 |
| commit | 507fd9d15baac950df494742d67bcbafdaa4752c (patch) | |
| tree | a705b7990df0a9f61f09dce2e4461017f7cbc0d8 /src/protocol.h | |
| parent | Move func 'REF' from util.h to serialize.h (diff) | |
| download | discoin-507fd9d15baac950df494742d67bcbafdaa4752c.tar.xz discoin-507fd9d15baac950df494742d67bcbafdaa4752c.zip | |
Start moving protocol-specific code to protocol.[ch]pp
Move CMessageHeader from net.h to protocol.[ch]pp, with the
implementation in the .cpp compilation unit (compiling once is enough).
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.
Indentation changes aside the closest thing to a modification of code is
the addition of the 'TODO' comment (the execution of which requires code
modifications and thus doesn't belong in this commit).
Signed-off-by: Giel van Schijndel <[email protected]>
Diffstat (limited to 'src/protocol.h')
| -rw-r--r-- | src/protocol.h | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/src/protocol.h b/src/protocol.h new file mode 100644 index 000000000..b5baeb2a6 --- /dev/null +++ b/src/protocol.h @@ -0,0 +1,52 @@ +// Copyright (c) 2009-2010 Satoshi Nakamoto +// Copyright (c) 2011 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. + +#ifndef __cplusplus +# error This header can only be compiled as C++. +#endif + +#ifndef __INCLUDED_PROTOCOL_H__ +#define __INCLUDED_PROTOCOL_H__ + +#include "serialize.h" +#include <string> + +// +// Message header +// (4) message start +// (12) command +// (4) size +// (4) checksum + +extern unsigned char pchMessageStart[4]; + +class CMessageHeader +{ + public: + CMessageHeader(); + CMessageHeader(const char* pszCommand, unsigned int nMessageSizeIn); + + std::string GetCommand() const; + bool IsValid() const; + + IMPLEMENT_SERIALIZE + ( + READWRITE(FLATDATA(pchMessageStart)); + READWRITE(FLATDATA(pchCommand)); + READWRITE(nMessageSize); + if (nVersion >= 209) + READWRITE(nChecksum); + ) + + // TODO: make private (improves encapsulation) + public: + enum { COMMAND_SIZE=12 }; + char pchMessageStart[sizeof(::pchMessageStart)]; + char pchCommand[COMMAND_SIZE]; + unsigned int nMessageSize; + unsigned int nChecksum; +}; + +#endif // __INCLUDED_PROTOCOL_H__ |