WebSocket++
0.8.2
C++ websocket client/server library
websocketpp
transport
stub
endpoint.hpp
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_HPP
29
#
define
WEBSOCKETPP_TRANSPORT_STUB_HPP
30
31
#
include
<
websocketpp
/
common
/
memory
.
hpp
>
32
#
include
<
websocketpp
/
logger
/
levels
.
hpp
>
33
34
#
include
<
websocketpp
/
transport
/
base
/
endpoint
.
hpp
>
35
#
include
<
websocketpp
/
transport
/
stub
/
connection
.
hpp
>
36
37
namespace
websocketpp
{
38
namespace
transport
{
39
namespace
stub
{
40
41
template
<
typename
config>
42
class
endpoint
{
43
public
:
44
/// Type of this endpoint transport component
45
typedef
endpoint
type
;
46
/// Type of a pointer to this endpoint transport component
47
typedef
lib::shared_ptr<
type
>
ptr
;
48
49
/// Type of this endpoint's concurrency policy
50
typedef
typename
config::
concurrency_type
concurrency_type
;
51
/// Type of this endpoint's error logging policy
52
typedef
typename
config::
elog_type
elog_type
;
53
/// Type of this endpoint's access logging policy
54
typedef
typename
config::
alog_type
alog_type
;
55
56
/// Type of this endpoint transport component's associated connection
57
/// transport component.
58
typedef
stub
::
connection
<config>
transport_con_type
;
59
/// Type of a shared pointer to this endpoint transport component's
60
/// associated connection transport component
61
typedef
typename
transport_con_type
::
ptr
transport_con_ptr
;
62
63
// generate and manage our own io_service
64
explicit
endpoint()
65
{
66
//std::cout << "transport::iostream::endpoint constructor" << std::endl;
67
}
68
69
/// Set whether or not endpoint can create secure connections
70
/**
71
* TODO: docs
72
*
73
* Setting this value only indicates whether or not the endpoint is capable
74
* of producing and managing secure connections. Connections produced by
75
* this endpoint must also be individually flagged as secure if they are.
76
*
77
* @since 0.3.0-alpha4
78
*
79
* @param value Whether or not the endpoint can create secure connections.
80
*/
81
void
set_secure
(
bool
value) {}
82
83
/// Tests whether or not the underlying transport is secure
84
/**
85
* TODO: docs
86
*
87
* @return Whether or not the underlying transport is secure
88
*/
89
bool
is_secure
()
const
{
90
return
false
;
91
}
92
protected
:
93
/// Initialize logging
94
/**
95
* The loggers are located in the main endpoint class. As such, the
96
* transport doesn't have direct access to them. This method is called
97
* by the endpoint constructor to allow shared logging from the transport
98
* component. These are raw pointers to member variables of the endpoint.
99
* In particular, they cannot be used in the transport constructor as they
100
* haven't been constructed yet, and cannot be used in the transport
101
* destructor as they will have been destroyed by then.
102
*
103
* @param a A pointer to the access logger to use.
104
* @param e A pointer to the error logger to use.
105
*/
106
void
init_logging
(
alog_type
* a,
elog_type
* e) {}
107
108
/// Initiate a new connection
109
/**
110
* @param tcon A pointer to the transport connection component of the
111
* connection to connect.
112
* @param u A URI pointer to the URI to connect to.
113
* @param cb The function to call back with the results when complete.
114
*/
115
void
async_connect
(
transport_con_ptr
tcon, uri_ptr u,
connect_handler
cb) {
116
cb(make_error_code(error::not_implemented));
117
}
118
119
/// Initialize a connection
120
/**
121
* Init is called by an endpoint once for each newly created connection.
122
* It's purpose is to give the transport policy the chance to perform any
123
* transport specific initialization that couldn't be done via the default
124
* constructor.
125
*
126
* @param tcon A pointer to the transport portion of the connection.
127
* @return A status code indicating the success or failure of the operation
128
*/
129
lib::error_code
init
(
transport_con_ptr
tcon) {
130
return
make_error_code
(
error
::
not_implemented
)
;
131
}
132
private
:
133
134
};
135
136
}
// namespace stub
137
}
// namespace transport
138
}
// namespace websocketpp
139
140
#
endif
// WEBSOCKETPP_TRANSPORT_STUB_HPP
Generated by
1.9.1