aboutsummaryrefslogtreecommitdiff
path: root/src/protocol.h
diff options
context:
space:
mode:
authorPieter Wuille <pieter.wuille@gmail.com>2015-11-06 01:32:04 +0100
committerPieter Wuille <pieter.wuille@gmail.com>2016-06-22 15:42:59 +0200
commit7030d9eb47254499bba14f1c00abc6bf493efd91 (patch)
tree95055978907c7418c1b96728ff09413781b9c0b7 /src/protocol.h
parentecacfd98e657c5819a1bcb1da93b25d3ad4e5045 (diff)
downloadbitcoin-7030d9eb47254499bba14f1c00abc6bf493efd91.tar.xz
BIP144: Serialization, hashes, relay (sender side)
Contains refactorings by Eric Lombrozo. Contains fixup by Nicolas Dorier. Contains cleanup of CInv::GetCommand by Alex Morcos
Diffstat (limited to 'src/protocol.h')
-rw-r--r--src/protocol.h30
1 files changed, 18 insertions, 12 deletions
diff --git a/src/protocol.h b/src/protocol.h
index a72813e959..dd07092f5f 100644
--- a/src/protocol.h
+++ b/src/protocol.h
@@ -309,13 +309,29 @@ public:
unsigned int nTime;
};
+/** getdata message types */
+const uint32_t MSG_WITNESS_FLAG = 1 << 30;
+const uint32_t MSG_TYPE_MASK = 0xffffffff >> 2;
+enum GetDataMsg
+{
+ UNDEFINED = 0,
+ MSG_TX,
+ MSG_BLOCK,
+ MSG_TYPE_MAX = MSG_BLOCK,
+ // The following can only occur in getdata. Invs always use TX or BLOCK.
+ MSG_FILTERED_BLOCK,
+ MSG_CMPCT_BLOCK,
+ MSG_WITNESS_BLOCK = MSG_BLOCK | MSG_WITNESS_FLAG,
+ MSG_WITNESS_TX = MSG_TX | MSG_WITNESS_FLAG,
+ MSG_FILTERED_WITNESS_BLOCK = MSG_FILTERED_BLOCK | MSG_WITNESS_FLAG,
+};
+
/** inv message data */
class CInv
{
public:
CInv();
CInv(int typeIn, const uint256& hashIn);
- CInv(const std::string& strType, const uint256& hashIn);
ADD_SERIALIZE_METHODS;
@@ -328,8 +344,7 @@ public:
friend bool operator<(const CInv& a, const CInv& b);
- bool IsKnownType() const;
- const char* GetCommand() const;
+ std::string GetCommand() const;
std::string ToString() const;
// TODO: make private (improves encapsulation)
@@ -338,13 +353,4 @@ public:
uint256 hash;
};
-enum {
- MSG_TX = 1,
- MSG_BLOCK,
- // Nodes may always request a MSG_FILTERED_BLOCK/MSG_CMPCT_BLOCK in a getdata, however,
- // MSG_FILTERED_BLOCK/MSG_CMPCT_BLOCK should not appear in any invs except as a part of getdata.
- MSG_FILTERED_BLOCK,
- MSG_CMPCT_BLOCK,
-};
-
#endif // BITCOIN_PROTOCOL_H