ANNA Suite  2020b
Multipurpose development suite for Telco applications
LargeBinaryCodec.hpp
Go to the documentation of this file.
1 // ANNA - Anna is Not Nothingness Anymore //
2 // //
3 // (c) Copyright 2005-2015 Eduardo Ramos Testillano & Francisco Ruiz Rayo //
4 // //
5 // See project site at http://redmine.teslayout.com/projects/anna-suite //
6 // See accompanying file LICENSE or copy at http://www.teslayout.com/projects/public/anna.LICENSE //
7 
8 
9 #ifndef anna_comm_LargeBinaryCodec_hpp
10 #define anna_comm_LargeBinaryCodec_hpp
11 
12 #include <vector>
13 
14 #include <anna/core/DataBlock.hpp>
15 
16 #include <anna/comm/Codec.hpp>
17 
18 namespace anna {
19 
20 namespace comm {
21 
34 class LargeBinaryCodec : public Codec {
35 public:
36  typedef std::vector <DataBlock*>::iterator iterator;
37  typedef std::vector <DataBlock*>::const_iterator const_iterator;
38 
48  LargeBinaryCodec(const Type type, const bool scramble = true) :
49  Codec(type, scramble),
50  a_dataBlock(true) {
51  attach("LargeBinaryBlock", a_dataBlock);
52  }
53 
57  virtual ~LargeBinaryCodec() { reset(); clear(); }
58 
62  void clear() noexcept(false) { a_dataBlock.clear(); }
63 
69  LargeBinaryCodec& operator += (const DataBlock& dataBlock) noexcept(false);
70 
76  virtual void decode(const DataBlock& dataBlock) noexcept(false);
77 
83  const_iterator begin() const { return a_blocks.begin(); }
84 
90  const_iterator end() const { return a_blocks.end(); }
91 
96  int size() const { return a_blocks.size(); }
97 
103  static const DataBlock* data(const_iterator ii) { return *ii; }
104 
110  static DataBlock* data(iterator ii) { return *ii; }
111 
112 private:
113  DataBlock a_dataBlock;
114  std::vector <DataBlock*> a_blocks;
115 
116  void reset() ;
117 };
118 
119 }
120 }
121 
122 #endif
123 
std::vector< DataBlock * >::const_iterator const_iterator
Definition: LargeBinaryCodec.hpp:37
static DataBlock * data(iterator ii)
Definition: LargeBinaryCodec.hpp:110
virtual void decode(const DataBlock &dataBlock) noexcept(false)
LargeBinaryCodec(const Type type, const bool scramble=true)
Definition: LargeBinaryCodec.hpp:48
int size() const
Definition: LargeBinaryCodec.hpp:96
LargeBinaryCodec & operator+=(const DataBlock &dataBlock) noexcept(false)
void clear() noexcept(false)
Definition: LargeBinaryCodec.hpp:62
static const DataBlock * data(const_iterator ii)
Definition: LargeBinaryCodec.hpp:103
Definition: LargeBinaryCodec.hpp:34
std::vector< DataBlock * >::iterator iterator
Definition: LargeBinaryCodec.hpp:36
const Variable * attach(const char *name, std::string &value) noexcept(false)
Definition: Codec.hpp:106
const_iterator begin() const
Definition: LargeBinaryCodec.hpp:83
void clear() noexcept(false)
Definition: DataBlock.hpp:240
const_iterator end() const
Definition: LargeBinaryCodec.hpp:90
Definition: app.hpp:12
unsigned char Type
Definition: CompatCodec.hpp:134
Definition: DataBlock.hpp:24
virtual ~LargeBinaryCodec()
Definition: LargeBinaryCodec.hpp:57
Definition: Codec.hpp:82