NS-3 based Named Data Networking (NDN) simulator
ndnSIM 2.5: NDN, CCN, CCNx, content centric networks
API Documentation
request.hpp
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2014, Peter Thorson. All rights reserved.
3  *
4  * Redistribution and use in source and binary forms, with or without
5  * modification, are permitted provided that the following conditions are met:
6  * * Redistributions of source code must retain the above copyright
7  * notice, this list of conditions and the following disclaimer.
8  * * Redistributions in binary form must reproduce the above copyright
9  * notice, this list of conditions and the following disclaimer in the
10  * documentation and/or other materials provided with the distribution.
11  * * Neither the name of the WebSocket++ Project nor the
12  * names of its contributors may be used to endorse or promote products
13  * derived from this software without specific prior written permission.
14  *
15  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
16  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
17  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
18  * ARE DISCLAIMED. IN NO EVENT SHALL PETER THORSON BE LIABLE FOR ANY
19  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
20  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
21  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
22  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
23  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
24  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
25  *
26  */
27 
28 #ifndef HTTP_PARSER_REQUEST_HPP
29 #define HTTP_PARSER_REQUEST_HPP
30 
31 #include <string>
32 
35 
36 namespace websocketpp {
37 namespace http {
38 namespace parser {
39 
41 
50 class request : public parser {
51 public:
52  typedef request type;
53  typedef lib::shared_ptr<type> ptr;
54 
56  : m_buf(lib::make_shared<std::string>())
57  , m_ready(false) {}
58 
60 
79  size_t consume(char const * buf, size_t len);
80 
82  bool ready() const {
83  return m_ready;
84  }
85 
87  std::string raw() const;
88 
90  std::string raw_head() const;
91 
93  void set_method(std::string const & method);
94 
96  std::string const & get_method() const {
97  return m_method;
98  }
99 
101  void set_uri(std::string const & uri);
102 
104  std::string const & get_uri() const {
105  return m_uri;
106  }
107 
108 private:
110  void process(std::string::iterator begin, std::string::iterator end);
111 
112  lib::shared_ptr<std::string> m_buf;
113  std::string m_method;
114  std::string m_uri;
115  bool m_ready;
116 };
117 
118 } // namespace parser
119 } // namespace http
120 } // namespace websocketpp
121 
123 
124 #endif // HTTP_PARSER_REQUEST_HPP
STL namespace.
lib::shared_ptr< type > ptr
Definition: request.hpp:53
Namespace for the WebSocket++ project.
Definition: base64.hpp:41
std::string const & get_uri() const
Return the requested URI.
Definition: request.hpp:104
std::string raw_head() const
Returns the raw request headers only (similar to an HTTP HEAD request)
Definition: request.hpp:141
void set_uri(std::string const &uri)
Set the HTTP uri. Must be a valid HTTP uri.
Definition: request.hpp:159
std::string const & get_method() const
Return the request method.
Definition: request.hpp:96
Stores, parses, and manipulates HTTP requests.
Definition: request.hpp:50
size_t consume(char const *buf, size_t len)
Process bytes in the input buffer.
Definition: request.hpp:41
void set_method(std::string const &method)
Set the HTTP method. Must be a valid HTTP token.
Definition: request.hpp:151
std::string raw() const
Returns the full raw request (including the body)
Definition: request.hpp:131
bool ready() const
Returns whether or not the request is ready for reading.
Definition: request.hpp:82