From 6a9b5ccd7d738ebd294c65400ceafa1f484f8611 Mon Sep 17 00:00:00 2001 From: JoelKatz Date: Fri, 29 Jun 2012 23:19:29 -0700 Subject: [PATCH] Support STN_ARF_UNKNOWN for contexts where the format of a node is not known. Format is auto-detected. --- src/SHAMap.h | 7 ++++--- src/SHAMapNodes.cpp | 8 ++++++++ 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/src/SHAMap.h b/src/SHAMap.h index 2e1af1dcaf..64eec583a8 100644 --- a/src/SHAMap.h +++ b/src/SHAMap.h @@ -157,11 +157,12 @@ public: SHAMapTreeNode(const SHAMapTreeNode& node, uint32 seq); // copy node from older tree SHAMapTreeNode(const SHAMapNode& nodeID, SHAMapItem::pointer item, TNType type, uint32 seq); - // raw node functions - SHAMapTreeNode(const SHAMapNode& id, const std::vector& contents, uint32 seq, int format); - +#define STN_ARF_UNKNOWN 0 #define STN_ARF_PREFIXED 1 #define STN_ARF_WIRE 2 + + // raw node functions + SHAMapTreeNode(const SHAMapNode& id, const std::vector& contents, uint32 seq, int format); void addRaw(Serializer &, int format); virtual bool isPopulated() const { return true; } diff --git a/src/SHAMapNodes.cpp b/src/SHAMapNodes.cpp index dbdc8ee109..3a9c682414 100644 --- a/src/SHAMapNodes.cpp +++ b/src/SHAMapNodes.cpp @@ -192,6 +192,14 @@ SHAMapTreeNode::SHAMapTreeNode(const SHAMapNode& node, SHAMapItem::pointer item, SHAMapTreeNode::SHAMapTreeNode(const SHAMapNode& id, const std::vector& rawNode, uint32 seq, int format) : SHAMapNode(id), mSeq(seq), mType(tnERROR), mFullBelow(false) { + if (format == STN_ARF_UNKNOWN) + { + if ((rawNode.size() < 4) || (rawNode[0] < 10)) + format = STN_ARF_WIRE; + else + format = STN_ARF_PREFIXED; + } + if (format == STN_ARF_WIRE) { Serializer s(rawNode);