StormByte-Network
2.0.0
C++26 networking module of the StormByte suite
Loading...
Searching...
No Matches
rw.hxx
Go to the documentation of this file.
1
/*
2
* Copyright (C) 2024-2026 David C. Manuelda (StormBytePP)
3
*
4
* This file is part of StormByte-Network.
5
*
6
* StormByte-Network original source is dual-licensed:
7
*
8
* 1. GNU Lesser General Public License v3.0 (or later)
9
* You may redistribute and/or modify this file under the terms of the
10
* GNU Lesser General Public License as published by the Free Software
11
* Foundation, either version 3 of the License, or (at your option)
12
* any later version.
13
*
14
* 2. Commercial license
15
* Alternatively, this file may be used under the terms of a commercial
16
* license agreement with the copyright holder
17
* (David C. Manuelda <StormByte@gmail.com>).
18
*
19
* Both licenses apply only to original StormByte-Network source in this
20
* repository. They do not cover other StormByte modules or any third-party
21
* material shipped with this repository (including everything under
22
* thirdparty/, and in particular the bundled StormByte Buffer tree), which
23
* remains under its own license.
24
*
25
* Neither license grants any patent rights. Any patent licenses required
26
* to use this software or third-party components must be obtained separately
27
* from the patent holders.
28
*
29
* StormByte-Network is distributed in the hope that it will be useful,
30
* but WITHOUT ANY WARRANTY; without even the implied warranty of
31
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
32
* GNU Lesser General Public License for more details.
33
*
34
* You should have received a copy of the GNU Lesser General Public License
35
* version 3 along with StormByte-Network. If not, see
36
* <https://www.gnu.org/licenses/lgpl-3.0.html>.
37
*
38
* SPDX-License-Identifier: LGPL-3.0-or-later OR LicenseRef-StormByte-Commercial
39
*/
40
41
#pragma once
42
43
#include <
StormByte/network/visibility.h
>
44
48
namespace
StormByte::Network::Connection
{
52
namespace
Read {
57
enum class
STORMBYTE_NETWORK_PUBLIC
Result
{
58
Success
,
59
WouldBlock
,
60
Closed
,
61
Failed
,
62
Timeout
,
63
ShutdownRequest
64
};
65
}
66
70
namespace
Write {
75
enum class
STORMBYTE_NETWORK_PUBLIC
Result
{
76
Success
,
77
Failed
78
};
79
}
80
86
constexpr
STORMBYTE_NETWORK_PUBLIC
const
char
*
ToString
(
const
StormByte::Network::Connection::Read::Result
& result)
noexcept
{
87
switch
(result) {
88
case
StormByte::Network::Connection::Read::Result::Success
:
return
"Success"
;
89
case
StormByte::Network::Connection::Read::Result::WouldBlock
:
return
"WouldBlock"
;
90
case
StormByte::Network::Connection::Read::Result::Failed
:
return
"Failed"
;
91
case
StormByte::Network::Connection::Read::Result::Closed
:
return
"Closed"
;
92
case
StormByte::Network::Connection::Read::Result::Timeout
:
return
"Timeout"
;
93
case
StormByte::Network::Connection::Read::Result::ShutdownRequest
:
return
"ShutdownRequest"
;
94
default
:
return
"Unknown"
;
95
}
96
}
97
103
constexpr
STORMBYTE_NETWORK_PUBLIC
const
char
*
ToString
(
const
StormByte::Network::Connection::Write::Result
& result)
noexcept
{
104
switch
(result) {
105
case
StormByte::Network::Connection::Write::Result::Success
:
return
"Success"
;
106
case
StormByte::Network::Connection::Write::Result::Failed
:
return
"Failed"
;
107
default
:
return
"Unknown"
;
108
}
109
}
110
}
StormByte::Network::Connection::Read::Result
Result
Outcome of a wait/read.
Definition
rw.hxx:57
StormByte::Network::Connection::Read::Result::Closed
@ Closed
Local/socket closed.
StormByte::Network::Connection::Read::Result::Success
@ Success
Data available or read ok.
StormByte::Network::Connection::Read::Result::ShutdownRequest
@ ShutdownRequest
Peer shutdown detected.
StormByte::Network::Connection::Read::Result::Timeout
@ Timeout
Wait timed out.
StormByte::Network::Connection::Read::Result::Failed
@ Failed
Hard failure.
StormByte::Network::Connection::Read::Result::WouldBlock
@ WouldBlock
Non-blocking: no data yet.
StormByte::Network::Connection::Write::Result
Result
Outcome of a write.
Definition
rw.hxx:75
StormByte::Network::Connection::Write::Result::Success
@ Success
Write completed.
StormByte::Network::Connection::Write::Result::Failed
@ Failed
Write failed.
StormByte::Network::Connection
Connection types of the Network module.
Definition
client.hxx:55
StormByte::Network::Connection::ToString
constexpr const char * ToString(const StormByte::Network::Connection::Read::Result &result) noexcept
Read result as text.
Definition
rw.hxx:86
visibility.h
STORMBYTE_NETWORK_PUBLIC
#define STORMBYTE_NETWORK_PUBLIC
Definition
visibility.h:51
lib
public
StormByte
network
connection
rw.hxx
Generated by
1.9.8