TFCweb
1.0.4 $Rev: 483 $
TFC Primavera 2012: Nucli d'un servidor web
Pàgina principal
Pàgines Relacionades
Espais de Noms
Classes
Fitxers
Llista dels Fitxers
Membres de Fitxers
src
CodisEstatHTTP.cc
Veure la documentació d'aquest fitxer.
1
8
/*
9
* Copyright (c) 2012 Toni Corvera
10
*
11
* This file is part of TFCWeb.
12
*
13
* TFCWeb is free software: you can redistribute it and/or modify
14
* it under the terms of the GNU General Public License as published by
15
* the Free Software Foundation, either version 3 of the License, or
16
* (at your option) any later version.
17
*
18
* TFCWeb is distributed in the hope that it will be useful,
19
* but WITHOUT ANY WARRANTY; without even the implied warranty of
20
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
21
* GNU General Public License for more details.
22
*
23
* You should have received a copy of the GNU General Public License
24
* along with TFCWeb. If not, see <http://www.gnu.org/licenses/>.
25
*/
26
27
#include "
CodisEstatHTTP.h
"
28
29
#include <cassert>
30
#include <boost/assign.hpp>
// boost::assign::map_list_of
31
#include <boost/unordered_map.hpp>
32
33
using namespace
boost;
34
using namespace
std;
35
36
namespace
{
37
38
using namespace
tfc;
39
40
using
boost::unordered_map;
41
using
boost::hash;
42
43
// Hashing: unordered_map requereix una funció hash, i (almenys g++/clang)
44
// no crea una per enum's
45
// Solucions:
46
// - Aprofitar que els enums són int's i:
47
// - Definir el map com a unordered_map<int, string>
48
// o
49
// - Reutilitzar el hasher d'int
50
// o
51
// - Derivar tr1::hash per al tipus CodiEstatHTTP
52
// Cal fer-ho en std::tr1 (en aquest cas és permés)
53
54
// FIXME: És legal enviar capçaleres UTF-8?
55
const
unordered_map<CodiEstatHTTP, string, hash<int> >
FRASES
= assign::map_list_of
56
(
CODI_100
,
"Continua"
)
57
(
CODI_101
,
"Canviant protocols"
)
58
(
CODI_200
,
"OK"
)
59
(
CODI_201
,
"Creat"
)
60
(
CODI_202
,
"Acceptat"
)
61
(
CODI_203
,
"Informació no autoritària"
)
62
(
CODI_204
,
"Sense contingut"
)
63
(
CODI_205
,
"Re-inici de contingut"
)
64
(
CODI_206
,
"Contingut parcial"
)
65
(
CODI_300
,
"Eleccions múltiples"
)
66
(
CODI_301
,
"Mogut permanentment"
)
67
(
CODI_302
,
"Mogut temporalment"
)
68
(
CODI_303
,
"Vegeu altres"
)
69
(
CODI_304
,
"No modificat"
)
70
(
CODI_305
,
"Utilitza proxy"
)
71
(
CODI_306
,
""
)
// Utilitzat en esborranys anteriors de l'RFC, reservat. RFC 2616
72
(
CODI_307
,
"Redirecció temporal"
)
// RFC 2616
73
(
CODI_400
,
"Petició incorrecta"
)
74
(
CODI_401
,
"No autoritzat"
)
75
(
CODI_402
,
"Cal pagament"
)
// No utilitzat, però reservat
76
(
CODI_403
,
"Prohibit"
)
77
(
CODI_404
,
"No trobat"
)
78
(
CODI_405
,
"Mètode no permès"
)
79
(
CODI_406
,
"No acceptable"
)
// Contingut conflictiu amb "Accept"
80
(
CODI_407
,
"Cal autenticació de proxy"
)
81
(
CODI_408
,
"Temps de petició exhaurit"
)
82
(
CODI_409
,
"Conflicte"
)
83
(
CODI_410
,
"Desaparegut"
)
84
(
CODI_411
,
"Cal indicar longitud"
)
85
(
CODI_412
,
"Precondició fallida"
)
86
(
CODI_413
,
"Entitat de petició massa gran"
)
87
(
CODI_414
,
"L'URI sol·licitada és massa llarga"
)
88
(
CODI_415
,
"Media type no suportat"
)
89
(
CODI_416
,
"Rang sol·licitat no satisfactible"
)
// RFC 2616
90
(
CODI_417
,
"Expectació fallada"
)
// RFC 2616
91
(
CODI_500
,
"Error intern del servidor"
)
92
(
CODI_501
,
"No implementat"
)
93
(
CODI_502
,
"Porta d'enllaç incorrecta"
)
94
(
CODI_503
,
"Servei no disponible"
)
95
(
CODI_504
,
"Temps de porta d'enllaç exhaurit"
)
96
(
CODI_505
,
"Versió d'HTTP no suportada"
)
97
;
// map_list_of
98
99
}
// ns anònim
100
101
namespace
tfc {
102
103
namespace
FrasesEstatHTTP {
104
105
const
string
&
frase
(
CodiEstatHTTP
codi) {
106
// FRASES és constant, per tant l'operador [] no es pot fer
107
// servir directament, complicant-ne l'accés
108
// find() retorna un iterador al 'pair'
109
const
auto
it =
FRASES
.find(codi);
110
assert(
FRASES
.end() != it );
111
112
return
it->second;
113
}
114
115
}
// ns FrasesEstatHTTP
116
117
}
// ns tfc
118
119
// vim:set ts=4 et ai: //
Generat a Dl Jun 17 2013 20:07:39 per a TFCweb per
1.8.1.2