1b3632114431991b2dde5e0b371dc49158babd72
[anna.git] / include / anna / diameter / codec / basetypes / OctetString.hpp
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_diameter_codec_basetypes_OctetString_hpp
10 #define anna_diameter_codec_basetypes_OctetString_hpp
11
12
13 // Local
14 #include <anna/diameter/codec/basetypes/AvpData.hpp>
15
16
17 namespace anna {
18
19 namespace diameter {
20
21 namespace codec {
22
23 class Avp;
24
25 namespace basetypes {
26
27 /**
28 * Diameter OctetString container
29 */
30 class OctetString : public AvpData {
31
32   std::string a_value;
33
34
35   // Mandatory for basic diameter type:
36   void codeBasic(char* buffer, int &size) throw(anna::RuntimeException);
37   void setPrintableString(const char * printableString) throw(anna::RuntimeException);
38
39 protected:
40
41   void assertPrintable() const throw(anna::RuntimeException);
42
43 public:
44
45
46   // Class-specific ////////////////////////////////////////////////////////////////////////////////////
47   //
48   /**
49   * Gets the OctetString value
50   *
51   * @return OctetString value
52   */
53   const std::string& getValue() const throw() { return a_value; }
54
55   /**
56   * Sets the OctetString value
57   *
58   * @param value OctetString value
59   */
60   void setValue(const std::string& value) throw() { a_value = value; }
61   //
62   //////////////////////////////////////////////////////////////////////////////////////////////////////
63
64
65   // gets
66   // virtual for Unknown format container
67   virtual std::string getFormatName() const throw() { return "OctetString"; }
68   virtual int getSize() const throw() { return a_value.size(); }
69
70
71   // helpers
72
73   // sets
74
75   void decode(const char* buffer, const int size) throw(anna::RuntimeException);
76 };
77
78 }
79 }
80 }
81 }
82
83 #endif