WebSocket++
0.8.2
C++ websocket client/server library
websocketpp
extensions
extension.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_EXTENSION_HPP
29
#
define
WEBSOCKETPP_EXTENSION_HPP
30
31
#
include
<
websocketpp
/
common
/
cpp11
.
hpp
>
32
#
include
<
websocketpp
/
common
/
system_error
.
hpp
>
33
34
#
include
<
string
>
35
#
include
<
vector
>
36
37
namespace
websocketpp {
38
39
/**
40
* Some generic information about extensions
41
*
42
* Each extension object has an implemented flag. It can be retrieved by calling
43
* is_implemented(). This compile time flag indicates whether or not the object
44
* in question actually implements the extension or if it is a placeholder stub
45
*
46
* Each extension object also has an enabled flag. It can be retrieved by
47
* calling is_enabled(). This runtime flag indicates whether or not the
48
* extension has been negotiated for this connection.
49
*/
50
namespace
extensions {
51
52
namespace
error {
53
enum
value {
54
/// Catch all
55
general = 1,
56
57
/// Extension disabled
58
disabled
59
};
60
61
class
category :
public
lib::error_category {
62
public
:
63
category() {}
64
65
const
char
*name()
const
_WEBSOCKETPP_NOEXCEPT_TOKEN_
{
66
return
"websocketpp.extension"
;
67
}
68
69
std::string message(
int
value)
const
{
70
switch
(value) {
71
case
general:
72
return
"Generic extension error"
;
73
case
disabled:
74
return
"Use of methods from disabled extension"
;
75
default
:
76
return
"Unknown permessage-compress error"
;
77
}
78
}
79
};
80
81
inline
lib::error_category
const
& get_category() {
82
static
category instance;
83
return
instance;
84
}
85
86
inline
lib::error_code make_error_code(error::value e) {
87
return
lib::error_code(
static_cast
<
int
>(e), get_category());
88
}
89
90
}
// namespace error
91
}
// namespace extensions
92
}
// namespace websocketpp
93
94
_WEBSOCKETPP_ERROR_CODE_ENUM_NS_START_
95
template
<>
struct
is_error_code_enum
96
<websocketpp::extensions::error::value>
97
{
98
static
const
bool
value =
true
;
99
};
100
_WEBSOCKETPP_ERROR_CODE_ENUM_NS_END_
101
102
#
endif
// WEBSOCKETPP_EXTENSION_HPP
_WEBSOCKETPP_NOEXCEPT_TOKEN_
#define _WEBSOCKETPP_NOEXCEPT_TOKEN_
Definition:
cpp11.hpp:113
_WEBSOCKETPP_ERROR_CODE_ENUM_NS_END_
#define _WEBSOCKETPP_ERROR_CODE_ENUM_NS_END_
Definition:
system_error.hpp:78
_WEBSOCKETPP_ERROR_CODE_ENUM_NS_START_
#define _WEBSOCKETPP_ERROR_CODE_ENUM_NS_START_
Definition:
system_error.hpp:77
Generated by
1.8.20