ANNA Suite  2020b
Multipurpose development suite for Telco applications
Public Member Functions | List of all members
anna::comm::Codec Class Reference

#include <Codec.hpp>

Inheritance diagram for anna::comm::Codec:
Inheritance graph
[legend]
Collaboration diagram for anna::comm::Codec:
Collaboration graph
[legend]

Public Member Functions

 Codec (const Type type, const bool scramble=true)
 
const Variableattach (const char *name, std::string &value) noexcept(false)
 
const Variableattach (const char *name, const char *&value) noexcept(false)
 
const Variableattach (const char *name, int &value) noexcept(false)
 
const Variableattach (const char *name, S64 &value) noexcept(false)
 
const Variableattach (const char *name, bool &value) noexcept(false)
 
const Variableattach (const char *name, DataBlock &value) noexcept(false)
 
const Variableattach (const char *name, float &value) noexcept(false)
 
const Variableattach (const char *name, double &value) noexcept(false)
 
const Variableattach (const char *name, Second &value) noexcept(false)
 
const Variableattach (const char *name, Millisecond &value) noexcept(false)
 
const Variableattach (const char *name, Microsecond &value) noexcept(false)
 
- Public Member Functions inherited from anna::comm::CompatCodec
 CompatCodec (const Type type, const bool scramble=true)
 
virtual ~CompatCodec ()
 
Type getType () const
 
const Variableattach (const char *name, const short int id, std::string &value) noexcept(false)
 
const Variableattach (const char *name, const short int id, const char *&value) noexcept(false)
 
const Variableattach (const char *name, const short int id, int &value) noexcept(false)
 
const Variableattach (const char *name, const short int id, S64 &value) noexcept(false)
 
const Variableattach (const char *name, const short int id, bool &value) noexcept(false)
 
const Variableattach (const char *name, const short int id, DataBlock &value) noexcept(false)
 
const Variableattach (const char *name, const short int id, float &value) noexcept(false)
 
const Variableattach (const char *name, const short int id, double &value) noexcept(false)
 
const Variableattach (const char *name, const short int id, Second &value) noexcept(false)
 
const Variableattach (const char *name, const short int id, Millisecond &value) noexcept(false)
 
const Variableattach (const char *name, const short int id, Microsecond &value) noexcept(false)
 
const Variableattach (const char *name, const short int id, comm::CompatCodec &value) noexcept(false)
 
const Variablefind (const short int id) const noexcept(false)
 
void setNull (const short int id, const bool isNull=true) noexcept(false)
 
void setNull (const Variable *variable, const bool isNull=true)
 
bool isNull (const short int id) const noexcept(false)
 
iterator begin ()
 
const_iterator begin () const
 
iterator end ()
 
const_iterator end () const
 
int size () const
 
virtual const DataBlockcode () noexcept(false)
 
virtual void decode (const DataBlock &dataBlock) noexcept(false)
 
- Public Member Functions inherited from anna::comm::Message
 Message ()
 
virtual ~Message ()
 
const DataBlockgetBody () const
 
MessagesetBody (const DataBlock &body) noexcept(false)
 
MessagesetBody (const char *buffer, const int size) noexcept(false)
 
virtual MessagesetBody (const xml::Node *node) noexcept(false)
 
void clearBody ()
 
- Public Member Functions inherited from anna::DataBlock
 DataBlock (const bool deepCopy=false)
 
 DataBlock (const char *buffer, const int size, const bool deepCopy=false) noexcept(false)
 
 DataBlock (const DataBlock &other) noexcept(false)
 
virtual ~DataBlock ()
 
int getMaxSize () const
 
int getSize () const
 
const char * getData () const
 
bool isEmpty () const
 
bool deepCopy () const
 
void setSize (const int size) noexcept(false)
 
DataBlockoperator+= (const char c) noexcept(false)
 
DataBlockoperator+= (const DataBlock &right) noexcept(false)
 
DataBlockoperator+= (const std::string &str) noexcept(false)
 
const char operator[] (const int pos) const noexcept(false)
 
char & operator[] (const int pos) noexcept(false)
 
void append (const char *data, const int len) noexcept(false)
 
void append (const DataBlock &other) noexcept(false)
 
void assign (const DataBlock &right) noexcept(false)
 
void assign (const char *buffer, const int size) noexcept(false)
 
DataBlockoperator= (const DataBlock &right) noexcept(false)
 
DataBlockoperator= (const char c) noexcept(false)
 
DataBlockoperator= (const std::string &str) noexcept(false)
 
void allocate (const int nbytes) noexcept(false)
 
void clear () noexcept(false)
 
void remove (const int pos, const int nbytes) noexcept(false)
 
void remove (const int nbytes) noexcept(false)
 
std::string asString (const int characterByLine=24) const
 

Additional Inherited Members

- Public Types inherited from anna::comm::CompatCodec
typedef VariableContainer container
 
typedef container::iterator iterator
 
typedef container::const_iterator const_iterator
 
typedef unsigned char Type
 
- Static Public Member Functions inherited from anna::comm::CompatCodec
static Variablevariable (iterator ii)
 
static const Variablevariable (const_iterator ii)
 
static Type getType (const DataBlock &dataBlock) noexcept(false)
 
- Protected Member Functions inherited from anna::comm::Message
 Message (const StatusCodeBuffer::_v statusCodeBuffer)
 
 Message (DataBlock &codeBuffer)
 
- Protected Member Functions inherited from anna::DataBlock
void initialize (const char *buffer, const int size) noexcept(false)
 
void setBuffer (const char *buffer)
 
void setMaxSize (const int maxSize)
 
- Protected Attributes inherited from anna::comm::CompatCodec
bool a_scramble
 
- Protected Attributes inherited from anna::comm::Message
DataBlocka_codeBuffer
 

Detailed Description

Codificador/Decodificador compatible para transporte de datos

Esta clase ofrece una forma muy eficaz para codificar estructuras de datos complejas y pretende sustituir los tipicos aplanadores y desaplanadores ya que permite que cualquier proceso defina facilmente la forma de transferir cierta informacion sobre un bloque de memoria y viceversa.

Vamos a ver un ejemplo de uso. Primero vamos a definir la clase MensajeDemo:

#include <anna.comm.Codec.h>
class MensajeDemo : public Codec {
public:
static const Codec::Type type = 10;
MensajeDemo () : Codec (type),
a_dataBlock (true)
{
attach ("Entero", a_entero);
attach ("Cadena", a_cadena);
attach ("Bloque datos", a_dataBlock);
}
// Accesores
const int obtenerEntero () const { return a_entero; }
const std::string& obtenerCadena () const { return a_cadena; }
const DataBlock& obtenerDataBlock () const { return a_dataBlock; }
// Modificadores
void establecerEntero (const int entero) { a_entero = entero; }
void establecerCadena (const std::string& cadena) { a_cadena = cadena; }
void establecerCadena (const char* cadena) { a_cadena = cadena; }
void establecerDataBlock (const DataBlock& dataBlock) { a_dataBlock = dataBlock; }
private:
int a_entero;
std::string a_cadena;
DataBlock a_dataBlock;
};

La clase que use esta clase para enviar un mensaje debe establecer los valores de cada uno de los datos mediante los modificadores definidos y luego invocar al metodo code que transferiria el contenido de las variables asociadas a este mensaje a un bloque de memoria, que normalmente seriausado como mensaje.

Por otra parte la clase que recibe el mensaje invocar�al metodo decode que transfiere el contenido del bloque de memoria a cada una de las variables asociadas al mensaje. Posteriormente, podremos acceder al contenido de cada una de las variables asociadas al mensaje atraves de los accesores definidos para el caso.

Estos codificadores nos dan la posibilidad de definir variables opcionales, de forma que una determinada variable puede no ser transferida al bloque de memoria, y por tanto puede no ser recibida en el otro extremo. Ver el metodo isNull y setNull para mas informacion.

Warning
Esta clase no establece proteccion ante accesos concurrentes

Constructor & Destructor Documentation

◆ Codec()

anna::comm::Codec::Codec ( const Type  type,
const bool  scramble = true 
)
inlineexplicit

Constructor.

Parameters
typeTipo por el que sera conocido este tipo de mensaje.
scrambleIndica si el mensaje debe ser codificado de forma que no se pueda ver el contenido del mismo con una simple herramienta de monitorizacion de mensajes de red. Por defecto esta activo ya que la codificacion realizada es muy simple y rapida y el tiempo empleado es casi inapreciable.
93 : CompatCodec(type, scramble) {;}
CompatCodec(const Type type, const bool scramble=true)

Member Function Documentation

◆ attach() [1/11]

const Variable* anna::comm::Codec::attach ( const char *  name,
std::string &  value 
)
inlinenoexcept

Asocia el valor recibido como parametro al dato interno identificado por `id'. Esta clase estapensada principalmente para comunicar entre si procesos remotos La unica restriccion que se les imponen a ambos que es compartan el significado que cada uno de ellos le da a un determinado `id'.

Parameters
nameNombre logico de la variable
valueRerencia a una variable de nuestro entorno usada para transferir los datos de la memoria al mensaje y viceversa.
Returns
Un puntero que hace referencia al nuevo dato interno que ha sido creado.
106 { return CompatCodec::attach(name, size(), value); }
int size() const
Definition: CompatCodec.hpp:349
const Variable * attach(const char *name, const short int id, std::string &value) noexcept(false)
Here is the call graph for this function:

◆ attach() [2/11]

const Variable* anna::comm::Codec::attach ( const char *  name,
const char *&  value 
)
inlinenoexcept

Asocia el valor recibido como parametro al dato interno identificado por `id'. Esta clase estapensada principalmente para comunicar entre si procesos remotos La unica restriccion que se les imponen a ambos que es compartan el significado que cada uno de ellos le da a un determinado `id'.

Parameters
nameNombre logico de la variable
valueRerencia a una variable de nuestro entorno usada para transferir los datos de la memoria al mensaje y viceversa.
Returns
Un puntero que hace referencia al nuevo dato interno que ha sido creado.
119 { return CompatCodec::attach(name, size(), value); }
int size() const
Definition: CompatCodec.hpp:349
const Variable * attach(const char *name, const short int id, std::string &value) noexcept(false)
Here is the call graph for this function:

◆ attach() [3/11]

const Variable* anna::comm::Codec::attach ( const char *  name,
int &  value 
)
inlinenoexcept

Asocia el valor recibido como parametro al dato interno identificado por `id'. Esta clase estapensada principalmente para comunicar entre si procesos remotos. La unica restriccion que se les imponen a ambos que es compartan el significado que cada uno de ellos le da a un determinado `id'.

Parameters
nameNombre logico de la variable
valueRerencia a una variable de nuestro entorno usada para transferir los datos de la memoria al mensaje y viceversa.
Returns
Un puntero que hace referencia al nuevo dato interno que ha sido creado.
132 { return CompatCodec::attach(name, size(), value); }
int size() const
Definition: CompatCodec.hpp:349
const Variable * attach(const char *name, const short int id, std::string &value) noexcept(false)
Here is the call graph for this function:

◆ attach() [4/11]

const Variable* anna::comm::Codec::attach ( const char *  name,
S64 value 
)
inlinenoexcept

Asocia el valor recibido como parametro al dato interno identificado por `id'. Esta clase estapensada principalmente para comunicar entre si procesos remotos. La unica restriccion que se les imponen a ambos que es compartan el significado que cada uno de ellos le da a un determinado `id'.

Parameters
nameNombre logico de la variable
valueRerencia a una variable de nuestro entorno usada para transferir los datos de la memoria al mensaje y viceversa.
Returns
Un puntero que hace referencia al nuevo dato interno que ha sido creado.
145 { return CompatCodec::attach(name, size(), value); }
int size() const
Definition: CompatCodec.hpp:349
const Variable * attach(const char *name, const short int id, std::string &value) noexcept(false)
Here is the call graph for this function:

◆ attach() [5/11]

const Variable* anna::comm::Codec::attach ( const char *  name,
bool &  value 
)
inlinenoexcept

Asocia el valor recibido como parametro al dato interno identificado por `id'. Esta clase estapensada principalmente para comunicar entre si procesos remotos. La unica restriccion que se les imponen a ambos que es compartan el significado que cada uno de ellos le da a un determinado `id'.

Parameters
nameNombre logico de la variable
valueRerencia a una variable de nuestro entorno usada para transferir los datos de la memoria al mensaje y viceversa.
Returns
Un puntero que hace referencia al nuevo dato interno que ha sido creado.
158 { return CompatCodec::attach(name, size(), value); }
int size() const
Definition: CompatCodec.hpp:349
const Variable * attach(const char *name, const short int id, std::string &value) noexcept(false)
Here is the call graph for this function:

◆ attach() [6/11]

const Variable* anna::comm::Codec::attach ( const char *  name,
DataBlock value 
)
inlinenoexcept

Asocia el valor recibido como parametro al dato interno identificado por `id'. Esta clase estapensada principalmente para comunicar entre si procesos remotos. La unica restriccion que se les imponen a ambos que es compartan el significado que cada uno de ellos le da a un determinado `id'.

Parameters
nameNombre logico de la variable
valueRerencia a una variable de nuestro entorno usada para transferir los datos de la memoria al mensaje y viceversa. Debe tener activado el sistema de copia profunda.
Returns
Un puntero que hace referencia al nuevo dato interno que ha sido creado.
171 { return CompatCodec::attach(name, size(), value); }
int size() const
Definition: CompatCodec.hpp:349
const Variable * attach(const char *name, const short int id, std::string &value) noexcept(false)
Here is the call graph for this function:

◆ attach() [7/11]

const Variable* anna::comm::Codec::attach ( const char *  name,
float &  value 
)
inlinenoexcept

Asocia el valor recibido como parametro al dato interno identificado por `id'. Esta clase estapensada principalmente para comunicar entre si procesos remotos. La unica restriccion que se les imponen a ambos que es compartan el significado que cada uno de ellos le da a un determinado `id'.

Parameters
nameNombre logico de la variable
valueRerencia a una variable de nuestro entorno usada para transferir los datos de la memoria al mensaje y viceversa. Debe tener activado el sistema de copia profunda.
Returns
Un puntero que hace referencia al nuevo dato interno que ha sido creado.
184 { return CompatCodec::attach(name, size(), value); }
int size() const
Definition: CompatCodec.hpp:349
const Variable * attach(const char *name, const short int id, std::string &value) noexcept(false)
Here is the call graph for this function:

◆ attach() [8/11]

const Variable* anna::comm::Codec::attach ( const char *  name,
double &  value 
)
inlinenoexcept

Asocia el valor recibido como parametro al dato interno identificado por `id'. Esta clase estapensada principalmente para comunicar entre si procesos remotos. La unica restriccion que se les imponen a ambos que es compartan el significado que cada uno de ellos le da a un determinado `id'.

Parameters
nameNombre logico de la variable
valueRerencia a una variable de nuestro entorno usada para transferir los datos de la memoria al mensaje y viceversa. Debe tener activado el sistema de copia profunda.
Returns
Un puntero que hace referencia al nuevo dato interno que ha sido creado.
197 { return CompatCodec::attach(name, size(), value); }
int size() const
Definition: CompatCodec.hpp:349
const Variable * attach(const char *name, const short int id, std::string &value) noexcept(false)
Here is the call graph for this function:

◆ attach() [9/11]

const Variable* anna::comm::Codec::attach ( const char *  name,
Second value 
)
noexcept

Asocia el valor recibido como parametro al dato interno identificado por `id'. Esta clase estapensada principalmente para comunicar entre si procesos remotos. La unica restriccion que se les imponen a ambos que es compartan el significado que cada uno de ellos le da a un determinado `id'.

Parameters
nameNombre logico de la variable
valueRerencia a una variable de nuestro entorno usada para transferir los datos de la memoria al mensaje y viceversa. Debe tener activado el sistema de copia profunda.
Returns
Un puntero que hace referencia al nuevo dato interno que ha sido creado.

◆ attach() [10/11]

const Variable* anna::comm::Codec::attach ( const char *  name,
Millisecond value 
)
noexcept

Asocia el valor recibido como parametro al dato interno identificado por `id'. Esta clase estapensada principalmente para comunicar entre si procesos remotos. La unica restriccion que se les imponen a ambos que es compartan el significado que cada uno de ellos le da a un determinado `id'.

Parameters
nameNombre logico de la variable
valueRerencia a una variable de nuestro entorno usada para transferir los datos de la memoria al mensaje y viceversa. Debe tener activado el sistema de copia profunda.
Returns
Un puntero que hace referencia al nuevo dato interno que ha sido creado.

◆ attach() [11/11]

const Variable* anna::comm::Codec::attach ( const char *  name,
Microsecond value 
)
noexcept

Asocia el valor recibido como parametro al dato interno identificado por `id'. Esta clase estapensada principalmente para comunicar entre si procesos remotos La unica restriccion que se les imponen a ambos que es compartan el significado que cada uno de ellos le da a un determinado `id'.

Parameters
nameNombre logico de la variable
valueRerencia a una variable de nuestro entorno usada para transferir los datos de la memoria al mensaje y viceversa. Debe tener activado el sistema de copia profunda.
Returns
Un puntero que hace referencia al nuevo dato interno que ha sido creado.

The documentation for this class was generated from the following file: