TFCweb  1.0.4 $Rev: 483 $
TFC Primavera 2012: Nucli d'un servidor web
Tipus Públics | Mètodes públics | Mètodes Protegits | Mètodes Privats | Atributs Privats | Llista de tots els membres
Referència de la Classe CosResposta

Classe base del cos dels missatges de resposta. Més...

#include <CosResposta.h>

Diagrama d'Herència per a CosResposta:
Recurs RecursDinamic AutoIndex CosPaginaError CosTextual ProgramaCGI

Tipus Públics

typedef
boost::asio::ip::tcp::socket 
socket_tcp
typedef std::pair< std::string,
std::string > 
tipus_capsalera
typedef std::vector
< tipus_capsalera
tipus_capsaleres
typedef std::shared_ptr
< Transformacio
transformacio_ptr

Mètodes públics

 CosResposta (const PeticioHTTP &peticio)
 CosResposta (const CosResposta &cr)
virtual ~CosResposta ()
virtual tipus_capsaleres capsaleres () const
 Llista de capçaleres específiques del cos a afegir a la resposta.
virtual void envia (socket_tcp &socket) const =0 throw (std::runtime_error)
 Envia el cos del missatge.
virtual void envia_eom (socket_tcp &socket) const throw (ErrorEscrivintEnSocket)
 Envia el final del missatge.
CosRespostaoperator= (const CosResposta &cr)
const PeticioHTTPpeticio () const
virtual bool pot_generar_capsaleres () const
 Indica si el contingut pot generar capçaleres HTTP.

Mètodes Protegits

bool chunked_ok () const
 Comprova si el client accepta chunked.
const std::string & content_encoding () const
 Content-Encoding acceptat per el client
bool deflate_ok () const
 Comprova si el client accepta deflate.
virtual size_t envia (socket_tcp &socket, const std::string &buffer) const throw (ErrorEscrivintEnSocket)
 Envia una cadena sencera.
size_t envia_literal (socket_tcp &socket, const std::string &buffer) const throw (ErrorEscrivintEnSocket)
 Envia una cadena sense aplicar la codificació
const std::string & transfer_encoding () const
 Transfer-Endocing acceptat per el client
transformacio_ptr transformacio () const
 Genera una transformació acceptable per el client.

Mètodes Privats

void determina_codificacions ()
 Defineix una codificació de contingut/transferència apropiada al client.

Atributs Privats

std::string ce_
 Content-Encoding
bool chunked_ok_
 El client accepta chunked.
bool deflate_ok_
 El client accepta deflate.
PeticioHTTP peticio_
 Petició associada.
std::string te_
 Transfer-Encoding
transformacio_ptr trans_
 Transformació

Descripció Detallada

Classe base del cos dels missatges de resposta.

Definició a la línia 81 del fitxer CosResposta.h.

Documentació de les Definicions de Tipus Membre

typedef boost::asio::ip::tcp::socket socket_tcp

Definició a la línia 86 del fitxer CosResposta.h.

typedef std::pair<std::string, std::string> tipus_capsalera

Definició a la línia 83 del fitxer CosResposta.h.

typedef std::vector<tipus_capsalera> tipus_capsaleres

Definició a la línia 84 del fitxer CosResposta.h.

typedef std::shared_ptr<Transformacio> transformacio_ptr

Definició a la línia 85 del fitxer CosResposta.h.

Documentació del Constructor i el Destructor

CosResposta ( const PeticioHTTP peticio)
inlineexplicit
Paràmetres
peticioLa petició HTTP enviada pel client

Definició a la línia 91 del fitxer CosResposta.h.

Referències CosResposta::determina_codificacions().

CosResposta ( const CosResposta cr)
inline

Definició a la línia 99 del fitxer CosResposta.h.

virtual ~CosResposta ( )
inlinevirtual

Definició a la línia 119 del fitxer CosResposta.h.

Documentació de les Funcions Membre

CosResposta::tipus_capsaleres capsaleres ( ) const
virtual

Llista de capçaleres específiques del cos a afegir a la resposta.

Per defecte, retorna les capçaleres relatives a les transformacions aplicables.

Reimplementat a CosPaginaError, Recurs i AutoIndex.

Definició a la línia 78 del fitxer CosResposta.cc.

bool chunked_ok ( ) const
inlineprotected

Comprova si el client accepta chunked.

Definició a la línia 185 del fitxer CosResposta.h.

Referències CosResposta::chunked_ok_.

const std::string& content_encoding ( ) const
inlineprotected

Content-Encoding acceptat per el client

Definició a la línia 193 del fitxer CosResposta.h.

Referències CosResposta::ce_.

bool deflate_ok ( ) const
inlineprotected

Comprova si el client accepta deflate.

Definició a la línia 182 del fitxer CosResposta.h.

Referències CosResposta::deflate_ok_.

void determina_codificacions ( )
private

Defineix una codificació de contingut/transferència apropiada al client.

Definició a la línia 89 del fitxer CosResposta.cc.

Referències CadenaTransformacions::afegeix() i tfc::HTTP_1_1.

Referenciat a CosResposta::CosResposta().

virtual void envia ( socket_tcp socket) const throw (std::runtime_error)
pure virtual

Envia el cos del missatge.

Per fer:
XXX: Utilitzar algun tipus de "sink" potser seria preferible
Remarca
Cal cridar envia_eom() després

Implementat a RecursDinamic, Recurs, AutoIndex i ProgramaCGI.

size_t envia ( socket_tcp socket,
const std::string &  buffer 
) const throw (ErrorEscrivintEnSocket)
protectedvirtual

Envia una cadena sencera.

Paràmetres
socketSocket on escriure
bufferCadena a escriure
Precondició
Socket connectat FIXME: <- Cal? Comprovar?
Excepcions
ErrorEscrivintEnSocketsi falla l'enviament de dades
Remarca
S'utilitza la codificació definida

Definició a la línia 39 del fitxer CosResposta.cc.

void envia_eom ( socket_tcp socket) const throw (ErrorEscrivintEnSocket)
virtual

Envia el final del missatge.

Remarca
Quan s'emprea una codificació cal finalitzar els missatges.

Definició a la línia 70 del fitxer CosResposta.cc.

size_t envia_literal ( socket_tcp socket,
const std::string &  buffer 
) const throw (ErrorEscrivintEnSocket)
protected

Envia una cadena sense aplicar la codificació

Definició a la línia 54 del fitxer CosResposta.cc.

CosResposta& operator= ( const CosResposta cr)
inline
const PeticioHTTP& peticio ( ) const
inline

Definició a la línia 160 del fitxer CosResposta.h.

Referències CosResposta::peticio_.

virtual bool pot_generar_capsaleres ( ) const
inlinevirtual

Indica si el contingut pot generar capçaleres HTTP.

Per a alguns tipus de recursos dinàmics, com ara scripts, és dessitjable poder modificar les capçaleres.

Remarca
Un CosResposta que generi capçaleres haurà d'enviar opcionalment les capçaleres generades, seguides d'un "CRLF" abans del contingut pròpiament dit per a marcar el final de les capçaleres.
Les capçaleres retornades amb capsaleres() les afegirà el Servidor. L'ús de pot_generar_capsaleres() no hi està relacionat.

Reimplementat a ProgramaCGI.

Definició a la línia 156 del fitxer CosResposta.h.

const std::string& transfer_encoding ( ) const
inlineprotected

Transfer-Endocing acceptat per el client

Definició a la línia 196 del fitxer CosResposta.h.

Referències CosResposta::te_.

transformacio_ptr transformacio ( ) const
inlineprotected

Genera una transformació acceptable per el client.

Definició a la línia 190 del fitxer CosResposta.h.

Referències CosResposta::trans_.

Documentació de les Dades Membre

std::string ce_
private

Content-Encoding

Definició a la línia 204 del fitxer CosResposta.h.

Referenciat a CosResposta::content_encoding() i CosResposta::operator=().

bool chunked_ok_
private

El client accepta chunked.

Definició a la línia 203 del fitxer CosResposta.h.

Referenciat a CosResposta::chunked_ok() i CosResposta::operator=().

bool deflate_ok_
private

El client accepta deflate.

Definició a la línia 202 del fitxer CosResposta.h.

Referenciat a CosResposta::deflate_ok() i CosResposta::operator=().

PeticioHTTP peticio_
private

Petició associada.

Definició a la línia 201 del fitxer CosResposta.h.

Referenciat a CosResposta::operator=() i CosResposta::peticio().

std::string te_
private

Transfer-Encoding

Definició a la línia 204 del fitxer CosResposta.h.

Referenciat a CosResposta::operator=() i CosResposta::transfer_encoding().

transformacio_ptr trans_
private

Transformació

Definició a la línia 206 del fitxer CosResposta.h.

Referenciat a CosResposta::operator=() i CosResposta::transformacio().


La documentació d'aquesta classe es va generar a partir dels següents fitxers: