source: XMLIO_V2/external/include/Poco/Net/HTTPServerResponseImpl.h @ 80

Last change on this file since 80 was 80, checked in by ymipsl, 14 years ago

ajout lib externe

  • Property svn:eol-style set to native
File size: 4.6 KB
Line 
1//
2// HTTPServerResponseImpl.h
3//
4// $Id: //poco/1.3/Net/include/Poco/Net/HTTPServerResponseImpl.h#1 $
5//
6// Library: Net
7// Package: HTTPServer
8// Module:  HTTPServerResponseImpl
9//
10// Definition of the HTTPServerResponseImpl class.
11//
12// Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH.
13// and Contributors.
14//
15// Permission is hereby granted, free of charge, to any person or organization
16// obtaining a copy of the software and accompanying documentation covered by
17// this license (the "Software") to use, reproduce, display, distribute,
18// execute, and transmit the Software, and to prepare derivative works of the
19// Software, and to permit third-parties to whom the Software is furnished to
20// do so, all subject to the following:
21//
22// The copyright notices in the Software and this entire statement, including
23// the above license grant, this restriction and the following disclaimer,
24// must be included in all copies of the Software, in whole or in part, and
25// all derivative works of the Software, unless such copies or derivative
26// works are solely in the form of machine-executable object code generated by
27// a source language processor.
28//
29// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
30// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
31// FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
32// SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
33// FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
34// ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
35// DEALINGS IN THE SOFTWARE.
36//
37
38
39#ifndef Net_HTTPServerResponseImpl_INCLUDED
40#define Net_HTTPServerResponseImpl_INCLUDED
41
42
43#include "Poco/Net/Net.h"
44#include "Poco/Net/HTTPServerResponse.h"
45
46
47namespace Poco {
48namespace Net {
49
50
51class HTTPServerSession;
52class HTTPCookie;
53
54
55class Net_API HTTPServerResponseImpl: public HTTPServerResponse
56        /// This subclass of HTTPServerResponse is used for
57        /// representing server-side HTTP responses.
58        ///
59        /// A HTTPServerResponse is passed to the
60        /// handleRequest() method of HTTPRequestHandler.
61        ///
62        /// handleRequest() must set a status code
63        /// and optional reason phrase, set headers
64        /// as necessary, and provide a message body.
65{
66public:
67        HTTPServerResponseImpl(HTTPServerSession& session);
68                /// Creates the HTTPServerResponseImpl.
69
70        ~HTTPServerResponseImpl();
71                /// Destroys the HTTPServerResponseImpl.
72
73        void sendContinue();
74                /// Sends a 100 Continue response to the
75                /// client.
76               
77        std::ostream& send();
78                /// Sends the response header to the client and
79                /// returns an output stream for sending the
80                /// response body.
81                ///
82                /// The returned stream is valid until the response
83                /// object is destroyed.
84                ///
85                /// Must not be called after sendFile(), sendBuffer()
86                /// or redirect() has been called.
87               
88        void sendFile(const std::string& path, const std::string& mediaType);
89                /// Sends the response header to the client, followed
90                /// by the content of the given file.
91                ///
92                /// Must not be called after send(), sendBuffer()
93                /// or redirect() has been called.
94                ///
95                /// Throws a FileNotFoundException if the file
96                /// cannot be found, or an OpenFileException if
97                /// the file cannot be opened.
98               
99        void sendBuffer(const void* pBuffer, std::size_t length);
100                /// Sends the response header to the client, followed
101                /// by the contents of the given buffer.
102                ///
103                /// The Content-Length header of the response is set
104                /// to length and chunked transfer encoding is disabled.
105                ///
106                /// If both the HTTP message header and body (from the
107                /// given buffer) fit into one single network packet, the
108                /// complete response can be sent in one network packet.
109                ///
110                /// Must not be called after send(), sendFile() 
111                /// or redirect() has been called.
112               
113        void redirect(const std::string& uri);
114                /// Sets the status code to 302 (Found)
115                /// and sets the "Location" header field
116                /// to the given URI, which according to
117                /// the HTTP specification, must be absolute.
118                ///
119                /// Must not be called after send() has been called.
120               
121        void requireAuthentication(const std::string& realm);
122                /// Sets the status code to 401 (Unauthorized)
123                /// and sets the "WWW-Authenticate" header field
124                /// according to the given realm.
125               
126        bool sent() const;
127                /// Returns true if the response (header) has been sent.
128
129private:
130        HTTPServerSession& _session;
131        std::ostream*      _pStream;
132};
133
134
135//
136// inlines
137//
138inline bool HTTPServerResponseImpl::sent() const
139{
140        return _pStream != 0;
141}
142
143
144} } // namespace Poco::Net
145
146
147#endif // Net_HTTPServerResponseImpl_INCLUDED
Note: See TracBrowser for help on using the repository browser.