ANNA Suite  2020b
Multipurpose development suite for Telco applications
Public Types | Public Member Functions | Static Public Member Functions | Protected Member Functions | Static Protected Member Functions | Protected Attributes | List of all members
anna::http::wims20::Abstract Class Reference

#include <Abstract.hpp>

Inheritance diagram for anna::http::wims20::Abstract:
Inheritance graph
[legend]

Public Types

typedef std::vector< std::string * > other_level_container
 
typedef other_level_container::iterator other_level_iterator
 
typedef other_level_container::const_iterator const_other_level_iterator
 
typedef std::pair< std::string *, std::string * > parameter_pkv
 
typedef std::vector< parameter_pkvparameter_container
 
typedef parameter_container::iterator parameter_iterator
 
typedef parameter_container::const_iterator const_parameter_iterator
 

Public Member Functions

virtual ~Abstract ()
 
const std::string & getDomain () const
 
const std::string * getPath () const
 
const std::string & getServiceID () const
 
const std::string & getGUID () const
 
void setServiceID (const std::string &serviceID)
 
void setGUID (const std::string &guid)
 
bool hasParameters () const
 
bool hasOtherLevels () const
 
virtual void clearOtherLevels ()
 
virtual void clearParameters ()
 
void clear ()
 
std::string asString () const
 
other_level_iterator other_level_begin ()
 
other_level_iterator other_level_end ()
 
const_other_level_iterator other_level_begin () const
 
const_other_level_iterator other_level_end () const
 
const_parameter_iterator parameter_begin () const
 
const_parameter_iterator parameter_end () const
 

Static Public Member Functions

static std::string * otherLevel (other_level_iterator ii)
 
static const std::string & otherLevel (const_other_level_iterator ii)
 
static const std::string & parameter_name (const_parameter_iterator ii)
 
static const std::string & parameter_value (const_parameter_iterator ii)
 

Protected Member Functions

 Abstract (const char *whatis, const std::string &domain, const std::string &path)
 
 Abstract (const char *whatis, const std::string &domain)
 
const std::string & calculeFixedPart () noexcept(false)
 
const std::string & calculeShortFixedPart () noexcept(false)
 
std::string * createString () noexcept(false)
 
std::string * createString (const char *value) noexcept(false)
 
std::string * createString (const std::string &value) noexcept(false)
 
void destroyString (std::string *str)
 
void other_level_add (const std::string &otherLevel) noexcept(false)
 
void parameter_set (const std::string &name, const std::string &value) noexcept(false)
 
parameter_iterator parameter_begin ()
 
parameter_iterator parameter_end ()
 

Static Protected Member Functions

static std::string * parameter_name (parameter_iterator ii)
 
static std::string * parameter_value (parameter_iterator ii)
 
static void appendWithSlash (std::string &target, const std::string &other)
 

Protected Attributes

other_level_containera_otherLevels
 
parameter_containera_parameters
 

Detailed Description

Permite interpretar una URI según las recomendaciones de WIMS 2.0, lo que facilita el desarrollo de aplicaciones integradas en Web 2.0; estas recomendaciones indican cómo debe formarse la petición Abstract (REpresentational State Transfer) para permitir el desarrollo de cualquier servicio.

El formato general de una URI según la recomendación de WIMS 2.0 es:

http://domain-openapis/path-openapis/serviceID/guid/other_possible_levels?query_parameters

Dónde los campos tienen siguen la siguiente especificación:

Member Typedef Documentation

◆ const_other_level_iterator

typedef other_level_container::const_iterator anna::http::wims20::Abstract::const_other_level_iterator

◆ const_parameter_iterator

typedef parameter_container::const_iterator anna::http::wims20::Abstract::const_parameter_iterator

◆ other_level_container

typedef std::vector<std::string*> anna::http::wims20::Abstract::other_level_container

◆ other_level_iterator

typedef other_level_container::iterator anna::http::wims20::Abstract::other_level_iterator

◆ parameter_container

◆ parameter_iterator

typedef parameter_container::iterator anna::http::wims20::Abstract::parameter_iterator

◆ parameter_pkv

typedef std::pair<std::string*, std::string*> anna::http::wims20::Abstract::parameter_pkv

Los parámetros se ordenan en el mismo orden en que fueron indicados por eso no se guardan sobre un std::map, ya que al volcarlos sobre la cadena que actuará como URI aparecerían ordenados alfabéticamente y quizás el servidor no lo espera así.

Constructor & Destructor Documentation

◆ ~Abstract()

virtual anna::http::wims20::Abstract::~Abstract ( )
virtual

Destructor

◆ Abstract() [1/2]

anna::http::wims20::Abstract::Abstract ( const char *  whatis,
const std::string &  domain,
const std::string &  path 
)
protected

Contructor indicando el parámetro opcional path-openapis. Estos dos parámetros se obtendrá como parte de la configuración de nuestro sistema.

Parameters
domainIdentifica el recurso del OpenAPI.
pathParámetro opcional que ajusta la ruta hacia los recusos de éste API.

◆ Abstract() [2/2]

anna::http::wims20::Abstract::Abstract ( const char *  whatis,
const std::string &  domain 
)
explicitprotected

Constructor que no usará el parámetro opcional path-openapis. Este parámetro se obtendrá como parte de la configuración de nuestro sistema.

Parameters
domainIdentifica el recurso del OpenAPI.

Member Function Documentation

◆ appendWithSlash()

static void anna::http::wims20::Abstract::appendWithSlash ( std::string &  target,
const std::string &  other 
)
staticprotected

Concatena las cadenas recibidas teniendo en entre ambas debe de haber un carácter '/'.

◆ asString()

std::string anna::http::wims20::Abstract::asString ( ) const

Devuelce una cadena con la información relevante sobre esta clase.

Returns
una cadena con la información relevante sobre esta clase.

◆ calculeFixedPart()

const std::string& anna::http::wims20::Abstract::calculeFixedPart ( )
protectednoexcept

Calcula la parte fija de la petición en base a calculeShortFixedPart, el serviceID y el GUID. Mientras estos dos últimos campos se mantengan constrantes, el resultado de este método no cambia.

Returns
Una cadena con la parte fija de la petición.

◆ calculeShortFixedPart()

const std::string& anna::http::wims20::Abstract::calculeShortFixedPart ( )
protectednoexcept

Calcula la parte fija corta de la petición. Tiene en cuenta el domain-openapis y si existe el path-openapis. Si fuera necesario incluye el identificador de protocolo "http://".

Returns
Una cadena con la parte fija corta de la petición.

◆ clear()

void anna::http::wims20::Abstract::clear ( void  )
inline

Inicializa los toda la información asociada a esta instancia.

134  {
136  clearParameters();
137  }
virtual void clearOtherLevels()
virtual void clearParameters()
Here is the call graph for this function:

◆ clearOtherLevels()

virtual void anna::http::wims20::Abstract::clearOtherLevels ( )
virtual

Limpia el contenido asociado al parámetro other_possible_level. Sólo debería invocarse a este método en caso de que el servicio destino de la petición haya cambiado.

Reimplemented in anna::http::wims20::ClientSide.

◆ clearParameters()

virtual void anna::http::wims20::Abstract::clearParameters ( )
virtual

Limpia el contenido asociado a los parámetros. Sólo debería invocarse a éste método en caso de que el número de parámetros a enviar sea distinto al de la petición anterior. Si son los mismos parámetros con el mismo nombre, deberíamos reutilizar el máximo número de veces.

◆ createString() [1/3]

std::string* anna::http::wims20::Abstract::createString ( )
inlineprotectednoexcept

Optimiza la creación y liberación de cadenas que usa el proceso de interpretación continuamente.

Warning
Exclusivamente uso interno.
252 { return a_string_pool.create(); }
T * create() noexcept(false)
Definition: Recycler.hpp:88
Here is the call graph for this function:

◆ createString() [2/3]

std::string* anna::http::wims20::Abstract::createString ( const char *  value)
inlineprotectednoexcept

Optimiza la creación y liberación de cadenas que usa el proceso de interpretación continuamente.

Warning
Exclusivamente uso interno.
258  {
259  std::string* result = a_string_pool.create();
260  *result = value;
261  return result;
262  }
T * create() noexcept(false)
Definition: Recycler.hpp:88
Here is the call graph for this function:

◆ createString() [3/3]

std::string* anna::http::wims20::Abstract::createString ( const std::string &  value)
inlineprotectednoexcept

Optimiza la creación y liberación de cadenas que usa el proceso de interpretación continuamente.

Warning
Exclusivamente uso interno.
268 { return createString(value.c_str()); }
std::string * createString() noexcept(false)
Definition: Abstract.hpp:252
Here is the call graph for this function:

◆ destroyString()

void anna::http::wims20::Abstract::destroyString ( std::string *  str)
inlineprotected

Optimiza la creación y liberación de cadenas que usa el proceso de interpretación continuamente.

Warning
Exclusivamente uso interno.
274 { a_string_pool.release(str); }
void release(T *t)
Definition: Recycler.hpp:144
Here is the call graph for this function:

◆ getDomain()

const std::string& anna::http::wims20::Abstract::getDomain ( ) const
inline

Devuelve el campo domain-openapis establecido en el contructor.

Returns
el campo domain-openapis establecido en el contructor.
72 { return a_domain; }

◆ getGUID()

const std::string& anna::http::wims20::Abstract::getGUID ( ) const
inline

Devuelve identificador de usuario que interacciona con el servicio.

Returns
El identificador de usuario que interacciona con el servicio.
90 { return a_guid; }

◆ getPath()

const std::string* anna::http::wims20::Abstract::getPath ( ) const
inline

Devuelve el campo path-openapis

Returns
El campo path-openapis, puede ser NULL.
78 { return a_path; }

◆ getServiceID()

const std::string& anna::http::wims20::Abstract::getServiceID ( ) const
inline

Devuelve el servicio de la OpenAPI.

Parameters
Identificadorde servicio usado en la OpenAPI.
84 { return a_serviceID; }

◆ hasOtherLevels()

bool anna::http::wims20::Abstract::hasOtherLevels ( ) const
inline

Devuelve true si la estructura contiene niveles opcionales o false en otro caso.

Returns
true si la estructura contiene niveles opcionales o false en otro caso.
115 { return a_otherLevels != NULL && a_otherLevels->empty() == false; }
other_level_container * a_otherLevels
Definition: Abstract.hpp:216
Here is the call graph for this function:

◆ hasParameters()

bool anna::http::wims20::Abstract::hasParameters ( ) const
inline

Devuelve true si la estructura contiene parámetros o false en otro caso.

Returns
true si la estructura contiene parámetros o false en otro caso.
109 { return a_parameters != NULL && a_parameters->empty() == false; }
parameter_container * a_parameters
Definition: Abstract.hpp:217

◆ other_level_add()

void anna::http::wims20::Abstract::other_level_add ( const std::string &  otherLevel)
protectednoexcept

Amplía la lista de niveles.

Parameters
otherLevelNombre del nivel con el que ampliar las lista.

◆ other_level_begin() [1/2]

other_level_iterator anna::http::wims20::Abstract::other_level_begin ( )
inline

Devuelve un iterator al comienzo de la lista de niveles adicionales.

Returns
un iterator al comienzo de la lista de niveles adicionales.
Warning
Sólo se puede invocar a este método si hasOtherLevels devuelve true.
150 { return a_otherLevels->begin(); }
other_level_container * a_otherLevels
Definition: Abstract.hpp:216

◆ other_level_begin() [2/2]

const_other_level_iterator anna::http::wims20::Abstract::other_level_begin ( ) const
inline

Devuelve un iterator al comienzo de la lista de niveles adicionales.

Returns
un iterator al comienzo de la lista de niveles adicionales.
Warning
Sólo se puede invocar a este método si hasOtherLevels devuelve true.
171 { return a_otherLevels->begin(); }
other_level_container * a_otherLevels
Definition: Abstract.hpp:216

◆ other_level_end() [1/2]

other_level_iterator anna::http::wims20::Abstract::other_level_end ( )
inline

Devuelve un iterator al final de la lista de niveles adicionales.

Returns
un iterator al final de la lista de niveles adicionales.
Warning
Sólo se puede invocar a este método si hasOtherLevels devuelve true.
157 { return a_otherLevels->end(); }
other_level_container * a_otherLevels
Definition: Abstract.hpp:216

◆ other_level_end() [2/2]

const_other_level_iterator anna::http::wims20::Abstract::other_level_end ( ) const
inline

Devuelve un iterator al final de la lista de niveles adicionales.

Returns
un iterator al final de la lista de niveles adicionales.
Warning
Sólo se puede invocar a este método si hasOtherLevels devuelve true.
178 { return a_otherLevels->end(); }
other_level_container * a_otherLevels
Definition: Abstract.hpp:216

◆ otherLevel() [1/2]

static std::string* anna::http::wims20::Abstract::otherLevel ( other_level_iterator  ii)
inlinestatic

Devuelve el valor asociado al iterador.

Parameters
iiIterador sobre los niveles opcionales.
Returns
el valor asociado al iterador.
164 { return *ii; }

◆ otherLevel() [2/2]

static const std::string& anna::http::wims20::Abstract::otherLevel ( const_other_level_iterator  ii)
inlinestatic

Devuelve el valor asociado al iterador.

Parameters
iiIterador sobre los niveles opcionales.
Returns
el valor asociado al iterador.
185 { return **ii; }

◆ parameter_begin() [1/2]

const_parameter_iterator anna::http::wims20::Abstract::parameter_begin ( ) const
inline

Devuelve un iterator al comienzo de la lista de niveles adicionales.

Returns
un iterator al comienzo de la lista de niveles adicionales.
Warning
Sólo se puede invocar a este método si hasParameters devuelve true.
192 { return a_parameters->begin(); }
parameter_container * a_parameters
Definition: Abstract.hpp:217

◆ parameter_begin() [2/2]

parameter_iterator anna::http::wims20::Abstract::parameter_begin ( )
inlineprotected

Devuelve un iterator al comienzo de la lista de niveles adicionales.

Returns
un iterator al comienzo de la lista de niveles adicionales.
Warning
Sólo se puede invocar a este método si hasParameters devuelve true.
294 { return a_parameters->begin(); }
parameter_container * a_parameters
Definition: Abstract.hpp:217

◆ parameter_end() [1/2]

const_parameter_iterator anna::http::wims20::Abstract::parameter_end ( ) const
inline

Devuelve un iterator al final de la lista de niveles adicionales.

Returns
un iterator al final de la lista de niveles adicionales.
Warning
Sólo se puede invocar a este método si hasParameters devuelve true.
199 { return a_parameters->end(); }
parameter_container * a_parameters
Definition: Abstract.hpp:217

◆ parameter_end() [2/2]

parameter_iterator anna::http::wims20::Abstract::parameter_end ( )
inlineprotected

Devuelve un iterator al final de la lista de niveles adicionales.

Returns
un iterator al final de la lista de niveles adicionales.
Warning
Sólo se puede invocar a este método si hasParameters devuelve true.
301 { return a_parameters->end(); }
parameter_container * a_parameters
Definition: Abstract.hpp:217

◆ parameter_name() [1/2]

static const std::string& anna::http::wims20::Abstract::parameter_name ( const_parameter_iterator  ii)
inlinestatic

Devuelve el nombre del parámetro asociado al iterador.

Parameters
iiIterador sobre los niveles opcionales.
Returns
el nombre del parámetro asociado al iterador.
206 { return *(ii->first); }

◆ parameter_name() [2/2]

static std::string* anna::http::wims20::Abstract::parameter_name ( parameter_iterator  ii)
inlinestaticprotected

Devuelve el nombre del parámetro asociado al iterador.

Parameters
iiIterador sobre los niveles opcionales.
Returns
el nombre del parámetro asociado al iterador.
308 { return ii->first; }

◆ parameter_set()

void anna::http::wims20::Abstract::parameter_set ( const std::string &  name,
const std::string &  value 
)
protectednoexcept

Amplía la lista de parámetros con una nueva pareja (Nombre, Valor).

Parameters
nameNombre del parámetro a crear.
valueValor asociado al parámetro.

◆ parameter_value() [1/2]

static const std::string& anna::http::wims20::Abstract::parameter_value ( const_parameter_iterator  ii)
inlinestatic

Devuelve el valor del parámetro asociado al iterador.

Parameters
iiIterador sobre los niveles opcionales.
Returns
el valor del parámetro asociado al iterador.
213 { return *(ii->second); }

◆ parameter_value() [2/2]

static std::string* anna::http::wims20::Abstract::parameter_value ( parameter_iterator  ii)
inlinestaticprotected

Devuelve el valor del parámetro asociado al iterador.

Parameters
iiIterador sobre los niveles opcionales.
Returns
el valor del parámetro asociado al iterador.
315 { return ii->second; }
Here is the call graph for this function:

◆ setGUID()

void anna::http::wims20::Abstract::setGUID ( const std::string &  guid)
inline

Establece el identificador de usuario que interacciona con el servicio.

Parameters
guidIdentificador de usuario. Dónde por usuario se entiende cualquier elemento que pueda intereccionar con nuestro servicio
103 { a_guid = guid; a_fixedPart.clear(); }

◆ setServiceID()

void anna::http::wims20::Abstract::setServiceID ( const std::string &  serviceID)
inline

Establece el servicio de la OpenAPI.

Parameters
serviceIDIdentificador de servicio usado en la OpenAPI.
96 { a_serviceID = serviceID; a_fixedPart.clear(); }

Member Data Documentation

◆ a_otherLevels

other_level_container* anna::http::wims20::Abstract::a_otherLevels
protected

◆ a_parameters

parameter_container* anna::http::wims20::Abstract::a_parameters
protected

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