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
Recurs.h
Veure la documentació d'aquest fitxer.
1
#if !defined(_RECURS_H_)
2
#define _RECURS_H_
3
10
/*
11
* Copyright (c) 2012 Toni Corvera
12
*
13
* This file is part of TFCWeb.
14
*
15
* TFCWeb is free software: you can redistribute it and/or modify
16
* it under the terms of the GNU General Public License as published by
17
* the Free Software Foundation, either version 3 of the License, or
18
* (at your option) any later version.
19
*
20
* TFCWeb is distributed in the hope that it will be useful,
21
* but WITHOUT ANY WARRANTY; without even the implied warranty of
22
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
23
* GNU General Public License for more details.
24
*
25
* You should have received a copy of the GNU General Public License
26
* along with TFCWeb. If not, see <http://www.gnu.org/licenses/>.
27
*/
28
29
#include "
CosResposta.h
"
30
#include "
Excepcions.h
"
31
#include "
portabilitat.h
"
32
#include "
Transformacions.h
"
33
#include "
Uri.h
"
34
35
#include <ostream>
36
#include <stdexcept>
37
#include <string>
38
#include <boost/filesystem.hpp>
39
40
namespace
tfc {
41
46
class
ErrorLlegintFitxer
:
public
ErrorTFC
{
47
public
:
48
ErrorLlegintFitxer
(
const
std::string & w =
"Error llegint fitxer"
)
49
:
ErrorTFC
(w)
50
{
51
// buit
52
}
53
};
54
59
class
Recurs
:
public
CosResposta
{
60
public
:
70
explicit
Recurs
(
const
PeticioHTTP
&
peticio
,
71
const
boost::filesystem::path
& arrel_servidor)
throw
(
ErrorRutaInexistent
);
73
Recurs
(
const
Recurs
& r)
throw
()
74
:
CosResposta
(r),
75
arrel_servidor_
(r.arrel_servidor_),
76
fisica_
(r.fisica_)
77
{
78
using namespace
boost::filesystem;
79
// INICIALITZACIÓ CORRECTA
80
assert(
path
() !=
arrel_servidor_
);
81
// INVARIANT
82
assert( canonical(r.fisica_) == r.fisica_ );
83
}
85
Recurs
&
operator=
(
const
Recurs
& r)
throw
() {
86
CosResposta::operator=
(r);
87
using namespace
boost::filesystem;
88
// INICIALITZACIÓ CORRECTA
89
assert(
path
() !=
arrel_servidor_
);
90
// INVARIANT
91
assert( canonical(r.fisica_) == r.fisica_ );
92
93
arrel_servidor_
= r.arrel_servidor_;
94
fisica_
= r.fisica_;
95
return
*
this
;
96
}
97
99
const
boost::filesystem::path
&
fisica
()
const
{
return
fisica_
; }
101
const
Uri
publica
()
const
{
throw
ErrorNoImplementat
();
return
Uri
(
""
); }
102
107
virtual
void
envia
(boost::asio::ip::tcp::socket & socket)
108
const
throw
(std::runtime_error);
109
110
virtual
tipus_capsaleres
capsaleres
()
const
;
111
112
protected
:
113
using
CosResposta::envia
;
114
private
:
118
std::string
entity_tag
()
const
;
119
124
friend
std::ostream&
operator<<
(std::ostream& os,
const
Recurs
& r) {
125
return
os <<
"Recurs ( Petició: "
<< r.
peticio
()
126
<<
", Disc: "
<< r.
fisica
()
127
//<< ", En servidor: " << std::string(r.publica())
128
<<
" )"
;
129
}
130
131
boost::filesystem::path
arrel_servidor_
;
132
boost::filesystem::path
fisica_
;
133
};
134
135
}
// ns tfc
136
137
#endif // _RECURS_H_
138
139
// vim:set ts=4 et ai: //
Generat a Dl Jun 17 2013 20:07:39 per a TFCweb per
1.8.1.2