ANNA Suite
2020b
Multipurpose development suite for Telco applications
|
#include <CompatCodec.hpp>
Public Types | |
typedef VariableContainer | container |
typedef container::iterator | iterator |
typedef container::const_iterator | const_iterator |
typedef unsigned char | Type |
Public Member Functions | |
CompatCodec (const Type type, const bool scramble=true) | |
virtual | ~CompatCodec () |
Type | getType () const |
const Variable * | attach (const char *name, const short int id, std::string &value) noexcept(false) |
const Variable * | attach (const char *name, const short int id, const char *&value) noexcept(false) |
const Variable * | attach (const char *name, const short int id, int &value) noexcept(false) |
const Variable * | attach (const char *name, const short int id, S64 &value) noexcept(false) |
const Variable * | attach (const char *name, const short int id, bool &value) noexcept(false) |
const Variable * | attach (const char *name, const short int id, DataBlock &value) noexcept(false) |
const Variable * | attach (const char *name, const short int id, float &value) noexcept(false) |
const Variable * | attach (const char *name, const short int id, double &value) noexcept(false) |
const Variable * | attach (const char *name, const short int id, Second &value) noexcept(false) |
const Variable * | attach (const char *name, const short int id, Millisecond &value) noexcept(false) |
const Variable * | attach (const char *name, const short int id, Microsecond &value) noexcept(false) |
const Variable * | attach (const char *name, const short int id, comm::CompatCodec &value) noexcept(false) |
const Variable & | find (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 DataBlock & | code () noexcept(false) |
virtual void | decode (const DataBlock &dataBlock) noexcept(false) |
![]() | |
Message () | |
virtual | ~Message () |
const DataBlock & | getBody () const |
Message * | setBody (const DataBlock &body) noexcept(false) |
Message * | setBody (const char *buffer, const int size) noexcept(false) |
virtual Message * | setBody (const xml::Node *node) noexcept(false) |
void | clearBody () |
![]() | |
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) |
DataBlock & | operator+= (const char c) noexcept(false) |
DataBlock & | operator+= (const DataBlock &right) noexcept(false) |
DataBlock & | operator+= (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) |
DataBlock & | operator= (const DataBlock &right) noexcept(false) |
DataBlock & | operator= (const char c) noexcept(false) |
DataBlock & | operator= (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 |
Static Public Member Functions | |
static Variable * | variable (iterator ii) |
static const Variable * | variable (const_iterator ii) |
static Type | getType (const DataBlock &dataBlock) noexcept(false) |
Protected Attributes | |
bool | a_scramble |
![]() | |
DataBlock * | a_codeBuffer |
Additional Inherited Members | |
![]() | |
Message (const StatusCodeBuffer::_v statusCodeBuffer) | |
Message (DataBlock &codeBuffer) | |
![]() | |
void | initialize (const char *buffer, const int size) noexcept(false) |
void | setBuffer (const char *buffer) |
void | setMaxSize (const int maxSize) |
Codificador/Decodificador compatible con los mensajes
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:
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.
typedef VariableContainer anna::comm::CompatCodec::container |
typedef unsigned char anna::comm::CompatCodec::Type |
|
explicit |
Constructor.
type | Tipo por el que sera conocido este tipo de mensaje. |
scramble | Indica 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. |
|
virtual |
Destructor.
|
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'.
name | Nombre logico de la variable |
id | Identificador asignado al dato. |
value | Rerencia a una variable de nuestro entorno usada para transferir los datos de la memoria al mensaje y viceversa. |
|
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'.
name | Nombre logico de la variable |
id | Identificador asignado al dato. |
value | Rerencia a una variable de nuestro entorno usada para transferir los datos de la memoria al mensaje y viceversa. |
|
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'.
name | Nombre logico de la variable |
id | Identificador asignado al dato. |
value | Rerencia a una variable de nuestro entorno usada para transferir los datos de la memoria al mensaje y viceversa. |
|
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'.
name | Nombre logico de la variable |
id | Identificador asignado al dato. |
value | Rerencia a una variable de nuestro entorno usada para transferir los datos de la memoria al mensaje y viceversa. |
|
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'.
name | Nombre logico de la variable |
id | Identificador asignado al dato. |
value | Rerencia a una variable de nuestro entorno usada para transferir los datos de la memoria al mensaje y viceversa. |
|
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'.
name | Nombre logico de la variable |
id | Identificador asignado al dato. |
value | Rerencia 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. |
|
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'.
name | Nombre logico de la variable |
id | Identificador asignado al dato. |
value | Rerencia 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. |
|
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'.
name | Nombre logico de la variable |
id | Identificador asignado al dato. |
value | Rerencia 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. |
|
noexcept |
|
noexcept |
|
noexcept |
|
noexcept |
Asocia el mensaje recibido como un parámetro interno especificado por id.
name | Nombre lógico de la variable. |
id | Identificador del dato asignado. |
value | Instancia del mensaje que se codificará/decodificará de forma recursiva. |
|
inline |
|
inline |
|
virtualnoexcept |
Transfiene los datos establecidos en este mensaje interno a un bloque de memoria cuya instancia es devuelta por este metodo.
Reimplemented from anna::comm::Message.
|
virtualnoexcept |
Transfiene la informacion contenida en el bloque de memoria recibido hacia las variables asociadas a este mensaje interno. Las variables cuyo value no esta incluidas en el bloque de memoria seria marcadas como nulas.
dataBlock | Bloque de memoria que contiene las variables codificadas. |
Reimplemented in anna::comm::LargeBinaryCodec.
|
inline |
|
inline |
|
noexcept |
Devuelve la referencia al dato interno identificado por el `id' recibido como parametro.
id | Identificador asignado al dato que queremos obtener. |
|
inline |
Permite conocer el identificador del mensaje que viene contenido en el bloque de memoria antes de realizar la decodificacion.
dataBlock | Bloque de memoria que contiene la informacion del mensaje. |
|
noexcept |
id | Identificador asignado al dato. |
|
noexcept |
Marca el dato asociado al identificador recibido como nulo, lo cual conlleva que el dato no seria transferido al bloque de memoria del mensaje en caso de invocar al metodo de codificacion.
id | Identificador asignado al dato. |
isNull | Indica la nueva marca de la variable. |
void anna::comm::CompatCodec::setNull | ( | const Variable * | variable, |
const bool | isNull = true |
||
) |
Marca el dato recibido como nulo, lo cual conlleva que el dato no seria transferido al bloque de memoria del mensaje en caso de invocar al metodo de codificacion.
variable | Instancia de Varaible obtenida al invocar al método attach |
isNull | Indica la nueva marca de la variable. |
|
inline |
|
inlinestatic |
Devuelve la instancia de la variable sobre el que esta posicionado el iterador recibido como parametro.
ii | Iterador que debera estar comprendido entre begin y end. |
|
protected |