NS-3 based Named Data Networking (NDN) simulator
ndnSIM 2.3: NDN, CCN, CCNx, content centric networks
API Documentation
connection.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 WEBSOCKETPP_TRANSPORT_STUB_CON_HPP
29 #define WEBSOCKETPP_TRANSPORT_STUB_CON_HPP
30 
32 
34 
36 
40 
41 #include <string>
42 #include <vector>
43 
44 namespace websocketpp {
45 namespace transport {
46 namespace stub {
47 
50 struct timer {
51  void cancel() {}
52 };
53 
54 template <typename config>
55 class connection : public lib::enable_shared_from_this< connection<config> > {
56 public:
60  typedef lib::shared_ptr<type> ptr;
61 
65  typedef typename config::alog_type alog_type;
67  typedef typename config::elog_type elog_type;
68 
69  // Concurrency policy types
72 
73  typedef lib::shared_ptr<timer> timer_ptr;
74 
75  explicit connection(bool is_server, alog_type & alog, elog_type & elog)
76  : m_alog(alog), m_elog(elog)
77  {
78  m_alog.write(log::alevel::devel,"stub con transport constructor");
79  }
80 
82  ptr get_shared() {
83  return type::shared_from_this();
84  }
85 
87 
94  void set_secure(bool value) {}
95 
97 
102  bool is_secure() const {
103  return false;
104  }
105 
107 
118  void set_uri(uri_ptr) {}
119 
121 
134  void set_remote_endpoint(std::string value) {}
135 
137 
145  std::string get_remote_endpoint() const {
146  return "unknown (stub transport)";
147  }
148 
150 
154  return connection_hdl();
155  }
156 
158 
167  timer_ptr set_timer(long duration, timer_handler handler) {
168  return timer_ptr();
169  }
170 protected:
172 
177  void init(init_handler handler) {
178  m_alog.write(log::alevel::devel,"stub connection init");
180  }
181 
183 
206  void async_read_at_least(size_t num_bytes, char * buf, size_t len,
207  read_handler handler)
208  {
209  m_alog.write(log::alevel::devel, "stub_con async_read_at_least");
211  }
212 
214 
225  void async_write(char const * buf, size_t len, write_handler handler) {
226  m_alog.write(log::alevel::devel,"stub_con async_write");
228  }
229 
231 
241  void async_write(std::vector<buffer> const & bufs, write_handler handler) {
242  m_alog.write(log::alevel::devel,"stub_con async_write buffer list");
244  }
245 
247 
251 
253 
263  lib::error_code dispatch(dispatch_handler handler) {
264  handler();
265  return lib::error_code();
266  }
267 
269 
273  handler(lib::error_code());
274  }
275 private:
276  // member variables!
277  alog_type & m_alog;
278  elog_type & m_elog;
279 };
280 
281 
282 } // namespace stub
283 } // namespace transport
284 } // namespace websocketpp
285 
286 #endif // WEBSOCKETPP_TRANSPORT_STUB_CON_HPP
connection(bool is_server, alog_type &alog, elog_type &elog)
Definition: connection.hpp:75
config::concurrency_type concurrency_type
transport concurrency policy
Definition: connection.hpp:63
Definition: alloc.cpp:37
connection_hdl get_handle() const
Get the connection handle.
Definition: connection.hpp:153
void set_uri(uri_ptr)
Set uri hook.
Definition: connection.hpp:118
void async_write(std::vector< buffer > const &bufs, write_handler handler)
Asyncronous Transport Write (scatter-gather)
Definition: connection.hpp:241
void async_read_at_least(size_t num_bytes, char *buf, size_t len, read_handler handler)
Initiate an async_read for at least num_bytes bytes into buf.
Definition: connection.hpp:206
lib::error_code dispatch(dispatch_handler handler)
Call given handler back within the transport&#39;s event system (if present)
Definition: connection.hpp:263
bool is_secure() const
Tests whether or not the underlying transport is secure.
Definition: connection.hpp:102
concurrency_type::mutex_type mutex_type
Definition: connection.hpp:71
lib::function< void(lib::error_code const &)> write_handler
The type and signature of the callback passed to the write method.
Definition: connection.hpp:123
lib::weak_ptr< void > connection_hdl
A handle to uniquely identify a connection.
A fake lock guard implementation that does nothing.
Definition: none.hpp:46
lib::function< void(lib::error_code const &, size_t)> read_handler
The type and signature of the callback passed to the read method.
Definition: connection.hpp:120
A fake mutex implementation that does nothing.
Definition: none.hpp:39
void set_secure(bool value)
Set whether or not this connection is secure.
Definition: connection.hpp:94
static level const devel
Development messages (warning: very chatty)
Definition: levels.hpp:141
void set_handle(connection_hdl hdl)
Set Connection Handle.
Definition: connection.hpp:250
void async_write(char const *buf, size_t len, write_handler handler)
Asyncronous Transport Write.
Definition: connection.hpp:225
void set_remote_endpoint(std::string value)
Set human readable remote endpoint address.
Definition: connection.hpp:134
lib::function< void()> dispatch_handler
The type and signature of the callback passed to the dispatch method.
Definition: connection.hpp:135
lib::shared_ptr< type > ptr
Type of a shared pointer to this connection transport component.
Definition: connection.hpp:60
lib::function< void(lib::error_code const &)> timer_handler
The type and signature of the callback passed to the read method.
Definition: connection.hpp:126
lib::function< void(lib::error_code const &)> shutdown_handler
The type and signature of the callback passed to the shutdown method.
Definition: connection.hpp:129
Namespace for the WebSocket++ project.
Definition: base64.hpp:41
lib::function< void(lib::error_code const &)> init_handler
The type and signature of the callback passed to the init hook.
Definition: connection.hpp:117
Stub concurrency policy that implements the interface using no-ops.
Definition: none.hpp:60
Empty timer class to stub out for timer functionality that stub transport doesn&#39;t support...
Definition: connection.hpp:50
concurrency_type::scoped_lock_type scoped_lock_type
Definition: connection.hpp:70
lib::shared_ptr< uri > uri_ptr
Pointer to a URI.
Definition: uri.hpp:351
ptr get_shared()
Get a shared pointer to this component.
Definition: connection.hpp:82
connection< config > type
Type of this connection transport component.
Definition: connection.hpp:58
void init(init_handler handler)
Initialize the connection transport.
Definition: connection.hpp:177
timer_ptr set_timer(long duration, timer_handler handler)
Call back a function after a period of time.
Definition: connection.hpp:167
config::elog_type elog_type
Type of this transport&#39;s error logging policy.
Definition: connection.hpp:67
config::alog_type alog_type
Type of this transport&#39;s access logging policy.
Definition: connection.hpp:65
lib::error_code make_error_code(error::value e)
Definition: connection.hpp:224
Stub logger that ignores all input.
Definition: stub.hpp:41
std::string get_remote_endpoint() const
Get human readable remote endpoint address.
Definition: connection.hpp:145
void async_shutdown(shutdown_handler handler)
Perform cleanup on socket shutdown_handler.
Definition: connection.hpp:272
lib::shared_ptr< timer > timer_ptr
Definition: connection.hpp:73