Remove dynamic exceptions
[anna.git] / source / diameter / codec / basetypes / OctetString.cpp
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 // Local
10 #include <anna/diameter/codec/basetypes/OctetString.hpp>
11
12 // Standard
13 #include <string>
14
15
16 //------------------------------------------------------------------------------
17 //----------------------------------------------------- OctetString::codeBasic()
18 //------------------------------------------------------------------------------
19 void anna::diameter::codec::basetypes::OctetString::codeBasic(char* buffer, int &size) noexcept(false) {
20   memcpy(buffer, a_value.c_str(), size = getSize());
21 }
22
23 //------------------------------------------------------------------------------
24 //-------------------------------------------- OctetString::setPrintableString()
25 //------------------------------------------------------------------------------
26 void anna::diameter::codec::basetypes::OctetString::setPrintableString(const char * printableString) noexcept(false) {
27   setValue(printableString);
28 }
29
30
31 //------------------------------------------------------------------------------
32 //----------------------------------------------- OctetString::assertPrintable()
33 //------------------------------------------------------------------------------
34 void anna::diameter::codec::basetypes::OctetString::assertPrintable() const noexcept(false) {
35   /*std::string dummy =*/
36   AvpData::assertPrintable(a_value.c_str(), a_value.size());
37 }
38
39
40 //------------------------------------------------------------------------------
41 //-------------------------------------------------------- OctetString::decode()
42 //------------------------------------------------------------------------------
43 void anna::diameter::codec::basetypes::OctetString::decode(const char* buffer, const int size) noexcept(false) {
44   if(!buffer) {
45     std::string msg = getFormatName(); // Unknown format inherit from OctetString
46     msg += "::decode | Null Buffer provided";
47     throw anna::RuntimeException(msg, ANNA_FILE_LOCATION);
48   }
49
50   a_value.assign(buffer, size); // direct decode due to private member nature
51 }
52