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 | Classes Amigues | Llista de tots els membres
Referència de la Classe Recurs

Representació d'un recurs (fitxer o directori) Abans d'instanciar cal inicialitzar estàticament amb. Més...

#include <Recurs.h>

Diagrama d'Herència per a Recurs:
CosResposta

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

 Recurs (const PeticioHTTP &peticio, const boost::filesystem::path &arrel_servidor) throw (ErrorRutaInexistent)
 Recurs (const Recurs &r) throw ()
 Constructor de còpia.
virtual tipus_capsaleres capsaleres () const
 Llista de capçaleres específiques del cos a afegir a la resposta.
virtual void envia (boost::asio::ip::tcp::socket &socket) const throw (std::runtime_error)
 
virtual void envia_eom (socket_tcp &socket) const throw (ErrorEscrivintEnSocket)
 Envia el final del missatge.
const boost::filesystem::path & fisica () const
 Ruta física del recurs en el servidor.
Recursoperator= (const Recurs &r) throw ()
 Operador d'assignació
const PeticioHTTPpeticio () const
virtual bool pot_generar_capsaleres () const
 Indica si el contingut pot generar capçaleres HTTP.
const Uri publica () const
 Ruta de la petició normalitzada respecte l'arrel del servidor.

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

std::string entity_tag () const
 Genera la etiqueta d'entitat (ETag)

Atributs Privats

boost::filesystem::path arrel_servidor_
boost::filesystem::path fisica_

Classes Amigues

std::ostream & operator<< (std::ostream &os, const Recurs &r)
 Impressió.

Descripció Detallada

Representació d'un recurs (fitxer o directori) Abans d'instanciar cal inicialitzar estàticament amb.

Mireu també
Recurs::init()

Definició a la línia 59 del fitxer Recurs.h.

Documentació de les Definicions de Tipus Membre

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

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

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

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

typedef std::vector<tipus_capsalera> tipus_capsaleres
inherited

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

typedef std::shared_ptr<Transformacio> transformacio_ptr
inherited

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

Documentació del Constructor i el Destructor

Recurs ( const PeticioHTTP peticio,
const boost::filesystem::path &  arrel_servidor 
) throw (ErrorRutaInexistent)
explicit
Paràmetres
arrel_servidorDirectori arrel del servidor
peticioPetició enviada pel client
Excepcions
ErrorRutaInexistentsi ruta_peticio no es correspon a una ruta existent en el servidor
Precondició
arrel_servidor existeix, és un directori, és absoluta i canònica
Postcondició
Recurs.fisica() existeix en el disc, és absoluta i canònica
Mireu també
Recurs::init()

Definició a la línia 64 del fitxer Recurs.cc.

Referències RFC2068_Sintaxi_URIs::path.

Recurs ( const Recurs r) throw ()
inline

Constructor de còpia.

Definició a la línia 73 del fitxer Recurs.h.

Referències Recurs::arrel_servidor_ i RFC2068_Sintaxi_URIs::path.

Documentació de les Funcions Membre

Recurs::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 de CosResposta.

Definició a la línia 121 del fitxer Recurs.cc.

Referències tfc::data_http(), anonymous_namespace{AutoIndex.cc}::mida(), anonymous_namespace{AutoIndex.cc}::mtime() i tfc::NomTipusPeticioHTTP::tipus().

bool chunked_ok ( ) const
inlineprotectedinherited

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
inlineprotectedinherited

Content-Encoding acceptat per el client

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

Referències CosResposta::ce_.

bool deflate_ok ( ) const
inlineprotectedinherited

Comprova si el client accepta deflate.

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

Referències CosResposta::deflate_ok_.

string entity_tag ( ) const
private
void envia ( boost::asio::ip::tcp::socket &  socket) const throw (std::runtime_error)
virtual

Excepcions
ErrorLlegintFitxerSi es produeix un error en la lectura del recurs

Implementa CosResposta.

Definició a la línia 92 del fitxer Recurs.cc.

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

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)
virtualinherited

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)
protectedinherited

Envia una cadena sense aplicar la codificació

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

const boost::filesystem::path& fisica ( ) const
inline

Ruta física del recurs en el servidor.

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

Referències Recurs::fisica_.

Referenciat a AutoIndex::AutoIndex() i AutoIndex::directori().

Recurs& operator= ( const Recurs r) throw ()
inline

Operador d'assignació

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

Referències Recurs::arrel_servidor_, Recurs::fisica_ i RFC2068_Sintaxi_URIs::path.

const PeticioHTTP& peticio ( ) const
inlineinherited

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

Referències CosResposta::peticio_.

virtual bool pot_generar_capsaleres ( ) const
inlinevirtualinherited

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 Uri publica ( ) const
inline

Ruta de la petició normalitzada respecte l'arrel del servidor.

Definició a la línia 101 del fitxer Recurs.h.

const std::string& transfer_encoding ( ) const
inlineprotectedinherited

Transfer-Endocing acceptat per el client

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

Referències CosResposta::te_.

transformacio_ptr transformacio ( ) const
inlineprotectedinherited

Genera una transformació acceptable per el client.

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

Referències CosResposta::trans_.

Documentació de funcions amigues i relacionades

std::ostream& operator<< ( std::ostream &  os,
const Recurs r 
)
friend

Impressió.

Antiquat:
? Només útil durant desenvolupament

Definició a la línia 124 del fitxer Recurs.h.

Documentació de les Dades Membre

boost::filesystem::path arrel_servidor_
private

Definició a la línia 131 del fitxer Recurs.h.

Referenciat a Recurs::operator=() i Recurs::Recurs().

boost::filesystem::path fisica_
private

Definició a la línia 132 del fitxer Recurs.h.

Referenciat a Recurs::fisica() i Recurs::operator=().


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