SNode.C
Loading...
Searching...
No Matches
Echo.cpp
Go to the documentation of this file.
1
/*
2
* SNode.C - a slim toolkit for network communication
3
* Copyright (C) Volker Christian <me@vchrist.at>
4
* 2020, 2021, 2022, 2023, 2024, 2025
5
*
6
* This program is free software: you can redistribute it and/or modify
7
* it under the terms of the GNU Lesser General Public License as published
8
* by the Free Software Foundation, either version 3 of the License, or
9
* (at your option) any later version.
10
*
11
* This program is distributed in the hope that it will be useful,
12
* but WITHOUT ANY WARRANTY; without even the implied warranty of
13
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
* GNU Lesser General Public License for more details.
15
*
16
* You should have received a copy of the GNU Lesser General Public License
17
* along with this program. If not, see <http://www.gnu.org/licenses/>.
18
*/
19
20
#
include
"Echo.h"
21
22
#
ifndef
DOXYGEN_SHOULD_SKIP_THIS
23
24
#
include
"log/Logger.h"
25
#
include
"utils/system/signal.h"
26
27
#
include
<
cstring
>
28
29
#
endif
/* DOXYGEN_SHOULD_SKIP_THIS */
30
31
#
define
MAX_FLYING_PINGS
3
32
#
define
PING_INTERVAL
90
33
34
namespace
apps::websocket::subprotocol::echo::
client
{
35
36
Echo
::
Echo
(
web
::
websocket
::
SubProtocolContext
*
socketContextUpgradeBase
,
const
std
::
string
&
name
)
37
:
web
::
websocket
::
client
::
SubProtocol
(
socketContextUpgradeBase
,
name
,
PING_INTERVAL
,
MAX_FLYING_PINGS
) {
38
}
39
40
void
Echo
::
onConnected
() {
41
VLOG(1) <<
"Echo connected"
;
42
}
43
44
void
Echo
::
onMessageStart
(
int
opCode
) {
45
VLOG(2) <<
"Message Start - OpCode: "
<<
opCode
;
46
}
47
48
void
Echo
::
onMessageData
(
const
char
*
chunk
,
std
::
size_t
chunkLen
) {
49
data
+=
std
::
string
(
chunk
,
chunkLen
);
50
51
VLOG(2) <<
"Message Fragment: "
<<
std
::
string
(
chunk
,
chunkLen
);
52
}
53
54
void
Echo
::
onMessageEnd
() {
55
VLOG(1) <<
"Message Full Data: "
<<
data
;
56
VLOG(1) <<
"Message End"
;
57
/*
58
forEachClient([&data = this->data](SubProtocol* client) {
59
client->sendMessage(data);
60
});
61
*/
62
// sendMessage(data);
63
64
data
.
clear
();
65
}
66
67
void
Echo
::
onMessageError
(
uint16_t
errnum
) {
68
VLOG(1) <<
"Message error: "
<<
errnum
;
69
}
70
71
void
Echo
::
onDisconnected
() {
72
VLOG(1) <<
"Echo disconnected:"
;
73
}
74
75
bool
Echo
::
onSignal
(
int
sig
) {
76
VLOG(1) <<
"SubProtocol 'echo' exit due to '"
<<
strsignal
(
sig
) <<
"' (SIG"
<<
utils
::
system
::
sigabbrev_np
(
sig
) <<
" = "
<<
sig
77
<<
")"
;
78
79
sendClose
();
80
81
return
false
;
82
}
83
84
}
// namespace apps::websocket::subprotocol::echo::client
MAX_FLYING_PINGS
#define MAX_FLYING_PINGS
Definition
Echo.cpp:31
PING_INTERVAL
#define PING_INTERVAL
Definition
Echo.cpp:32
apps::websocket
Definition
Echo.cpp:34
apps
websocket
subprotocol
client
echo
Echo.cpp
Generated on Mon Feb 10 2025 20:20:41 for SNode.C by
1.11.0