wire-format.hpp
1 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil -*- */
22 #ifndef NDN_WIREFORMAT_HPP
23 #define NDN_WIREFORMAT_HPP
24 
25 #include "../common.hpp"
26 #include "../util/blob.hpp"
27 
28 namespace ndn {
29 
30 class Name;
31 class Interest;
32 class Data;
33 class ControlParameters;
34 class Signature;
35 
36 class WireFormat {
37 public:
44  virtual Blob
45  encodeName(const Name& name);
46 
54  virtual void
55  decodeName(Name& name, const uint8_t *input, size_t inputLength);
56 
75  virtual Blob
77  (const Interest& interest, size_t *signedPortionBeginOffset,
78  size_t *signedPortionEndOffset);
79 
86  Blob
87  encodeInterest(const Interest& interest)
88  {
89  size_t dummyBeginOffset, dummyEndOffset;
90  return encodeInterest(interest, &dummyBeginOffset, &dummyEndOffset);
91  }
92 
114  virtual void
116  (Interest& interest, const uint8_t *input, size_t inputLength,
117  size_t *signedPortionBeginOffset, size_t *signedPortionEndOffset);
118 
119  void
120  decodeInterest(Interest& interest, const uint8_t *input, size_t inputLength)
121  {
122  size_t dummyBeginOffset, dummyEndOffset;
124  (interest, input, inputLength, &dummyBeginOffset, &dummyEndOffset);
125  }
126 
137  virtual Blob
138  encodeData
139  (const Data& data, size_t *signedPortionBeginOffset, size_t *signedPortionEndOffset);
140 
147  Blob
148  encodeData(const Data& data)
149  {
150  size_t dummyBeginOffset, dummyEndOffset;
151  return encodeData(data, &dummyBeginOffset, &dummyEndOffset);
152  }
153 
167  virtual void
168  decodeData
169  (Data& data, const uint8_t *input, size_t inputLength, size_t *signedPortionBeginOffset, size_t *signedPortionEndOffset);
170 
171  void
172  decodeData(Data& data, const uint8_t *input, size_t inputLength)
173  {
174  size_t dummyBeginOffset, dummyEndOffset;
175  decodeData(data, input, inputLength, &dummyBeginOffset, &dummyEndOffset);
176  }
177 
185  virtual Blob
187  (const ControlParameters& controlParameters);
188 
198  virtual void
200  (ControlParameters& controlParameters, const uint8_t *input,
201  size_t inputLength);
202 
210  virtual Blob
211  encodeSignatureInfo(const Signature& signature);
212 
222  virtual Blob
223  encodeSignatureValue(const Signature& signature);
224 
236  virtual ptr_lib::shared_ptr<Signature>
238  (const uint8_t *signatureInfo, size_t signatureInfoLength,
239  const uint8_t *signatureValue, size_t signatureValueLength);
240 
248  virtual ptr_lib::shared_ptr<Signature>
250  (const Blob& signatureInfo, const Blob& signatureValue)
251  {
253  (signatureInfo.buf(), signatureInfo.size(), signatureValue.buf(),
254  signatureValue.size());
255  }
256 
262  static void
264  {
265  defaultWireFormat_ = wireFormat;
266  }
267 
273  static WireFormat*
275 
276 private:
283  static WireFormat*
284  newInitialDefaultWireFormat();
285 
286  static WireFormat *defaultWireFormat_;
287 };
288 
289 }
290 
291 #endif
292 
virtual Blob encodeName(const Name &name)
Encode name and return the encoding.
Definition: wire-format.cpp:47
Copyright (C) 2013-2016 Regents of the University of California.
Definition: common.hpp:35
virtual Blob encodeSignatureInfo(const Signature &signature)
Encode signature as a SignatureInfo and return the encoding.
Definition: wire-format.cpp:103
Definition: data.hpp:35
Blob encodeData(const Data &data)
Encode data and return the encoding.
Definition: wire-format.hpp:148
virtual Blob encodeInterest(const Interest &interest, size_t *signedPortionBeginOffset, size_t *signedPortionEndOffset)
Encode interest and return the encoding.
Definition: wire-format.cpp:61
virtual ptr_lib::shared_ptr< Signature > decodeSignatureInfoAndValue(const uint8_t *signatureInfo, size_t signatureInfoLength, const uint8_t *signatureValue, size_t signatureValueLength)
Decode signatureInfo as a signature info and signatureValue as the related SignatureValue, and return a new object which is a subclass of Signature.
Definition: wire-format.cpp:110
A Name holds an array of Name::Component and represents an NDN name.
Definition: name.hpp:40
A Blob holds a pointer to an immutable byte array implemented as const std::vector.
Definition: blob.hpp:42
An Interest holds a Name and other fields for an interest.
Definition: interest.hpp:38
const uint8_t * buf() const
Return a const pointer to the first byte of the immutable byte array, or 0 if the pointer is null...
Definition: blob.hpp:152
virtual Blob encodeControlParameters(const ControlParameters &controlParameters)
Encode controlParameters and return the encoding.
Definition: wire-format.cpp:89
size_t size() const
Return the length of the immutable byte array.
Definition: blob.hpp:140
virtual void decodeName(Name &name, const uint8_t *input, size_t inputLength)
Decode input as a name and set the fields of the Name object.
Definition: wire-format.cpp:54
virtual void decodeControlParameters(ControlParameters &controlParameters, const uint8_t *input, size_t inputLength)
Decode input as a command parameters and set the fields of the controlParameters object.
Definition: wire-format.cpp:96
virtual Blob encodeData(const Data &data, size_t *signedPortionBeginOffset, size_t *signedPortionEndOffset)
Encode data and return the encoding.
Definition: wire-format.cpp:76
virtual void decodeData(Data &data, const uint8_t *input, size_t inputLength, size_t *signedPortionBeginOffset, size_t *signedPortionEndOffset)
Decode input as a data packet and set the fields in the data object.
Definition: wire-format.cpp:83
static WireFormat * getDefaultWireFormat()
Return the default WireFormat used by default encoding and decoding methods which was set with setDef...
Definition: wire-format.cpp:34
virtual Blob encodeSignatureValue(const Signature &signature)
Encode the signatureValue in the Signature object as a SignatureValue (the signature bits) and return...
Definition: wire-format.cpp:117
static void setDefaultWireFormat(WireFormat *wireFormat)
Set the static default WireFormat used by default encoding and decoding methods.
Definition: wire-format.hpp:263
Definition: wire-format.hpp:36
Blob encodeInterest(const Interest &interest)
Encode interest and return the encoding.
Definition: wire-format.hpp:87
virtual void decodeInterest(Interest &interest, const uint8_t *input, size_t inputLength, size_t *signedPortionBeginOffset, size_t *signedPortionEndOffset)
Decode input as an interest and set the fields of the interest object.
Definition: wire-format.cpp:69