Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
A
Actor Framework
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Metrics
Environments
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
cpp-libs
Actor Framework
Commits
a5136c64
Commit
a5136c64
authored
Oct 07, 2022
by
Dominik Charousset
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Streamline web_socket::accept implementation
parent
c4ed2be3
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
28 additions
and
46 deletions
+28
-46
libcaf_net/caf/net/ssl/acceptor.hpp
libcaf_net/caf/net/ssl/acceptor.hpp
+4
-0
libcaf_net/caf/net/tcp_accept_socket.hpp
libcaf_net/caf/net/tcp_accept_socket.hpp
+2
-0
libcaf_net/caf/net/web_socket/accept.hpp
libcaf_net/caf/net/web_socket/accept.hpp
+22
-46
No files found.
libcaf_net/caf/net/ssl/acceptor.hpp
View file @
a5136c64
...
...
@@ -15,6 +15,10 @@ namespace caf::net::ssl {
/// Wraps an accept socket and an SSL context.
class
CAF_NET_EXPORT
acceptor
{
public:
// -- member types -----------------------------------------------------------
using
transport_type
=
transport
;
// -- constructors, destructors, and assignment operators --------------------
acceptor
()
=
delete
;
...
...
libcaf_net/caf/net/tcp_accept_socket.hpp
View file @
a5136c64
...
...
@@ -18,6 +18,8 @@ struct CAF_NET_EXPORT tcp_accept_socket : network_socket {
using
super
=
network_socket
;
using
super
::
super
;
using
transport_type
=
stream_transport
;
};
/// Creates a new TCP socket to accept connections on a given port.
...
...
libcaf_net/caf/net/web_socket/accept.hpp
View file @
a5136c64
...
...
@@ -77,13 +77,29 @@ private:
connector_pointer
connector_
;
};
template
<
class
Transport
,
class
Acceptor
,
class
...
Ts
,
class
OnRequest
>
disposable
ws_accept_impl
(
actor_system
&
sys
,
Acceptor
acc
,
net
::
web_socket
::
acceptor_resource_t
<
Ts
...
>
out
,
OnRequest
on_request
,
const
settings
&
cfg
)
{
}
// namespace caf::detail
namespace
caf
::
net
::
web_socket
{
/// Listens for incoming WebSocket connections.
/// @param sys The host system.
/// @param acc A connection acceptor such as @ref tcp_accept_socket or
/// @ref ssl::acceptor.
/// @param out A buffer resource that connects the server to a listener that
/// processes the buffer pairs for each incoming connection.
/// @param on_request Function object for accepting incoming requests.
/// @param cfg Configuration parameters for the acceptor.
template
<
class
Acceptor
,
class
...
Ts
,
class
OnRequest
>
disposable
accept
(
actor_system
&
sys
,
Acceptor
acc
,
acceptor_resource_t
<
Ts
...
>
out
,
OnRequest
on_request
,
const
settings
&
cfg
=
{})
{
using
transport_t
=
typename
Acceptor
::
transport_type
;
using
request_t
=
request
<
default_trait
,
Ts
...
>
;
static_assert
(
std
::
is_invocable_v
<
OnRequest
,
const
settings
&
,
request_t
&>
,
"invalid signature found for on_request"
);
using
trait_t
=
net
::
web_socket
::
default_trait
;
using
factory_t
=
detail
::
ws_conn_factory
<
Transpor
t
,
trait_t
>
;
using
conn_t
=
typename
Transpor
t
::
connection_handle
;
using
factory_t
=
detail
::
ws_conn_factory
<
transport_
t
,
trait_t
>
;
using
conn_t
=
typename
transport_
t
::
connection_handle
;
using
impl_t
=
detail
::
accept_handler
<
Acceptor
,
conn_t
>
;
using
connector_t
=
net
::
web_socket
::
flow_connector_request_impl
<
OnRequest
,
trait_t
,
Ts
...
>
;
...
...
@@ -105,44 +121,4 @@ disposable ws_accept_impl(actor_system& sys, Acceptor acc,
}
}
}
// namespace caf::detail
namespace
caf
::
net
::
web_socket
{
/// Listens for incoming WebSocket connections.
/// @param sys The host system.
/// @param fd An accept socket in listening mode, already bound to a port.
/// @param out A buffer resource that connects the server to a listener that
/// processes the buffer pairs for each incoming connection.
/// @param on_request Function object for accepting incoming requests.
/// @param cfg Configuration parameters for the acceptor.
template
<
class
...
Ts
,
class
OnRequest
>
disposable
accept
(
actor_system
&
sys
,
tcp_accept_socket
fd
,
acceptor_resource_t
<
Ts
...
>
out
,
OnRequest
on_request
,
const
settings
&
cfg
=
{})
{
using
request_t
=
request
<
default_trait
,
Ts
...
>
;
static_assert
(
std
::
is_invocable_v
<
OnRequest
,
const
settings
&
,
request_t
&>
,
"invalid signature found for on_request"
);
return
detail
::
ws_accept_impl
<
stream_transport
>
(
sys
,
fd
,
out
,
std
::
move
(
on_request
),
cfg
);
}
/// Listens for incoming WebSocket connections over TLS.
/// @param sys The host system.
/// @param acc An SSL connection acceptor with a socket that in listening mode.
/// @param out A buffer resource that connects the server to a listener that
/// processes the buffer pairs for each incoming connection.
/// @param on_request Function object for accepting incoming requests.
/// @param cfg Configuration parameters for the acceptor.
template
<
class
...
Ts
,
class
OnRequest
>
disposable
accept
(
actor_system
&
sys
,
ssl
::
acceptor
acc
,
acceptor_resource_t
<
Ts
...
>
out
,
OnRequest
on_request
,
const
settings
&
cfg
=
{})
{
using
request_t
=
request
<
default_trait
,
Ts
...
>
;
static_assert
(
std
::
is_invocable_v
<
OnRequest
,
const
settings
&
,
request_t
&>
,
"invalid signature found for on_request"
);
return
detail
::
ws_accept_impl
<
ssl
::
transport
>
(
sys
,
std
::
move
(
acc
),
out
,
std
::
move
(
on_request
),
cfg
);
}
}
// namespace caf::net::web_socket
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment