Checkpoint. Reorganizing ccnb parsing into many small files.
diff --git a/helper/ccnx-decoding-helper.h b/helper/ccnx-decoding-helper.h
index e89766c..375a57a 100644
--- a/helper/ccnx-decoding-helper.h
+++ b/helper/ccnx-decoding-helper.h
@@ -15,37 +15,19 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
- * Author:
+ * Author: Alexander Afanasyev <alexander.afanasyev@ucla.edu>
*/
#ifndef _CCNX_DECODING_HELPER_H_
#define _CCNX_DECODING_HELPER_H_
-#include <sys/types.h>
-#include <boost/any.hpp>
-#include <list>
-
-#include "ns3/ptr.h"
-#include "ns3/nstime.h"
-#include "ns3/buffer.h"
-#include "ns3/simple-ref-count.h"
-
-
namespace ns3 {
-namespace Name{ class Components; }
-
class CcnxInterestHeader;
class CcnxContentObjectHeader;
-namespace CcnxParser {
-class InterestVisitor;
-class ContentObjectVisitor;
-}
-
/**
- * Helper to encode/decode ccnb formatted CCNx message
- *
+ * \brief Helper class to decode ccnb formatted CCNx message
*/
class CcnxDecodingHelper
{
@@ -57,276 +39,8 @@
Deserialize (Buffer::Iterator start, const CcnxContentObjectHeader &contentObject);
private:
- static CcnxParser::InterestVisitor m_interestVisitor;
- static CcnxParser::ContentObjectVisitor m_contentObjectVisitor;
};
-namespace CcnxParser {
-
-class Block;
-class Blob;
-class Udata;
-class Tag;
-class Attr;
-class Dtag;
-class Dattr;
-class Ext;
-
-class Visitor
-{
-public:
- virtual void visit (Blob& )=0;
- virtual void visit (Udata&)=0;
- virtual void visit (Tag& )=0;
- virtual void visit (Attr& )=0;
- virtual void visit (Dtag& )=0;
- virtual void visit (Dattr&)=0;
- virtual void visit (Ext& )=0;
-};
-
-class GJVisitor
-{
-public:
- virtual boost::any visit (Blob&, boost::any)=0;
- virtual boost::any visit (Udata&, boost::any)=0;
- virtual boost::any visit (Tag&, boost::any)=0;
- virtual boost::any visit (Attr&, boost::any)=0;
- virtual boost::any visit (Dtag&, boost::any)=0;
- virtual boost::any visit (Dattr&, boost::any)=0;
- virtual boost::any visit (Ext&, boost::any)=0;
-};
-
-class GJNoArguVisitor
-{
-public:
- virtual boost::any visit (Blob& )=0;
- virtual boost::any visit (Udata&)=0;
- virtual boost::any visit (Tag& )=0;
- virtual boost::any visit (Attr& )=0;
- virtual boost::any visit (Dtag& )=0;
- virtual boost::any visit (Dattr&)=0;
- virtual boost::any visit (Ext& )=0;
-};
-
-class GJVoidVisitor
-{
-public:
- virtual void visit (Blob&, boost::any)=0;
- virtual void visit (Udata&, boost::any)=0;
- virtual void visit (Tag&, boost::any)=0;
- virtual void visit (Attr&, boost::any)=0;
- virtual void visit (Dtag&, boost::any)=0;
- virtual void visit (Dattr&, boost::any)=0;
- virtual void visit (Ext&, boost::any)=0;
-};
-
-class Block : public SimpleRefCount<Block>
-{
-public:
- /**
- * Parsing block header and creating an appropriate object
- */
- static Ptr<Block>
- ParseBlock (Buffer::Iterator &start);
-
- virtual void accept( Visitor &v ) =0;
- virtual void accept (GJVoidVisitor &v, boost::any param) =0;
- virtual boost::any accept( GJNoArguVisitor &v ) =0;
- virtual boost::any accept( GJVisitor &v, boost::any param ) =0;
-};
-
-class Blob : public Block
-{
-public:
- Blob (Buffer::Iterator &start, uint32_t length);
-
- virtual void accept( Visitor &v ) { v.visit( *this ); }
- virtual void accept( GJVoidVisitor &v, boost::any param ) { v.visit( *this, param ); }
- virtual boost::any accept( GJNoArguVisitor &v ) { return v.visit( *this ); }
- virtual boost::any accept( GJVisitor &v, boost::any param ) { return v.visit( *this, param ); }
-
- Buffer m_blob;
-};
-
-class Udata : public Block
-{
-public:
- Udata (Buffer::Iterator &start, uint32_t length);
-
- virtual void accept( Visitor &v ) { v.visit( *this ); }
- virtual void accept( GJVoidVisitor &v, boost::any param ) { v.visit( *this, param ); }
- virtual boost::any accept( GJNoArguVisitor &v ) { return v.visit( *this ); }
- virtual boost::any accept( GJVisitor &v, boost::any param ) { return v.visit( *this, param ); }
-
- std::string m_udata;
-};
-
-class Tag : public Block
-{
-public:
- Tag (Buffer::Iterator &start, uint32_t length);
-
- virtual void accept( Visitor &v ) { v.visit( *this ); }
- virtual void accept( GJVoidVisitor &v, boost::any param ) { v.visit( *this, param ); }
- virtual boost::any accept( GJNoArguVisitor &v ) { return v.visit( *this ); }
- virtual boost::any accept( GJVisitor &v, boost::any param ) { return v.visit( *this, param ); }
-
- std::string m_tag;
- std::list<Ptr<Block> > m_nestedBlocks;
-};
-
-class Attr : public Block
-{
-public:
- Attr (Buffer::Iterator &start, uint32_t length);
-
- virtual void accept( Visitor &v ) { v.visit( *this ); }
- virtual void accept( GJVoidVisitor &v, boost::any param ) { v.visit( *this, param ); }
- virtual boost::any accept( GJNoArguVisitor &v ) { return v.visit( *this ); }
- virtual boost::any accept( GJVisitor &v, boost::any param ) { return v.visit( *this, param ); }
-
- std::string m_attr;
- Ptr<Udata> m_value;
-};
-
-class Dtag : public Block
-{
-public:
- Dtag (Buffer::Iterator &start, uint32_t dtag);
-
- virtual void accept( Visitor &v ) { v.visit( *this ); }
- virtual void accept( GJVoidVisitor &v, boost::any param ) { v.visit( *this, param ); }
- virtual boost::any accept( GJNoArguVisitor &v ) { return v.visit( *this ); }
- virtual boost::any accept( GJVisitor &v, boost::any param ) { return v.visit( *this, param ); }
-
- uint32_t m_dtag;
- std::list<Ptr<Block> > m_nestedBlocks;
-};
-
-class Dattr : public Block
-{
-public:
- Dattr (Buffer::Iterator &start, uint32_t dattr);
-
- virtual void accept( Visitor &v ) { v.visit( *this ); }
- virtual void accept( GJVoidVisitor &v, boost::any param ) { v.visit( *this, param ); }
- virtual boost::any accept( GJNoArguVisitor &v ) { return v.visit( *this ); }
- virtual boost::any accept( GJVisitor &v, boost::any param ) { return v.visit( *this, param ); }
-
- uint32_t m_dattr;
- Ptr<Udata> m_value;
-};
-
-class Ext : public Block
-{
-public:
- Ext (Buffer::Iterator &start, uint32_t extSubtype);
-
- virtual void accept( Visitor &v ) { v.visit( *this ); }
- virtual void accept( GJVoidVisitor &v, boost::any param ) { v.visit( *this, param ); }
- virtual boost::any accept( GJNoArguVisitor &v ) { return v.visit( *this ); }
- virtual boost::any accept( GJVisitor &v, boost::any param ) { return v.visit( *this, param ); }
-
- uint64_t m_extSubtype;
-};
-
-class DepthFirstVisitor : public Visitor
-{
-public:
- virtual void visit (Blob& );
- virtual void visit (Udata&);
- virtual void visit (Tag& );
- virtual void visit (Attr& );
- virtual void visit (Dtag& );
- virtual void visit (Dattr&);
- virtual void visit (Ext& );
-};
-
-class GJDepthFirstVisitor : public GJVisitor
-{
-public:
- virtual boost::any visit (Blob&, boost::any);
- virtual boost::any visit (Udata&, boost::any);
- virtual boost::any visit (Tag&, boost::any);
- virtual boost::any visit (Attr&, boost::any);
- virtual boost::any visit (Dtag&, boost::any);
- virtual boost::any visit (Dattr&, boost::any);
- virtual boost::any visit (Ext&, boost::any);
-};
-
-class GJNoArguDepthFirstVisitor : public GJNoArguVisitor
-{
-public:
- virtual boost::any visit (Blob& );
- virtual boost::any visit (Udata&);
- virtual boost::any visit (Tag& );
- virtual boost::any visit (Attr& );
- virtual boost::any visit (Dtag& );
- virtual boost::any visit (Dattr&);
- virtual boost::any visit (Ext& );
-};
-
-class GJVoidDepthFirstVisitor : public GJVoidVisitor
-{
-public:
- virtual void visit (Blob&, boost::any);
- virtual void visit (Udata&, boost::any);
- virtual void visit (Tag&, boost::any);
- virtual void visit (Attr&, boost::any);
- virtual void visit (Dtag&, boost::any);
- virtual void visit (Dattr&, boost::any);
- virtual void visit (Ext&, boost::any);
-};
-
-// class NameComponentsVisitor : public
-
-class NonNegativeIntegerVisitor : public GJNoArguDepthFirstVisitor
-{
-public:
- virtual boost::any visit (Blob &n); //to throw parsing error
- virtual boost::any visit (Udata &n);
-};
-
-class StringVisitor : public GJNoArguDepthFirstVisitor
-{
-public:
- virtual boost::any visit (Blob &n); //to throw parsing error
- virtual boost::any visit (Udata &n);
-};
-
-class NameComponentsVisitor : public GJVoidDepthFirstVisitor
-{
-public:
- virtual void visit (Dtag &n, boost::any param/*should be Name::Components*/);
-private:
- static StringVisitor m_stringVisitor;
-};
-
-class InterestVisitor : public GJVoidDepthFirstVisitor
-{
-public:
- virtual void visit (Dtag &n, boost::any param/*should be CcnxInterestHeader&*/);
-
-private:
- static NonNegativeIntegerVisitor m_nonNegativeIntegerVisitor;
- static NameComponentsVisitor m_nameComponentsVisitor;
-};
-
-class ContentObjectVisitor : public GJVoidDepthFirstVisitor
-{
-public:
- virtual void visit (Dtag &n, boost::any param/*should be CcnxContentObjectHeader&*/);
-
-private:
- static NameComponentsVisitor m_nameComponentsVisitor;
-};
-
-
-class CcnxDecodingException {};
-
-} // namespace CcnxParser
-
} // namespace ns3
#endif // _CCNX_DECODING_HELPER_H_
-