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
c59d29be
Commit
c59d29be
authored
Jul 10, 2018
by
Joseph Noir
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Clean whitespaces
parent
f9f8efc1
Changes
13
Hide whitespace changes
Inline
Side-by-side
Showing
13 changed files
with
124 additions
and
124 deletions
+124
-124
libcaf_io/caf/io/network/acceptor.hpp
libcaf_io/caf/io/network/acceptor.hpp
+9
-9
libcaf_io/caf/io/network/acceptor_impl.hpp
libcaf_io/caf/io/network/acceptor_impl.hpp
+2
-2
libcaf_io/caf/io/network/datagram_handler.hpp
libcaf_io/caf/io/network/datagram_handler.hpp
+26
-26
libcaf_io/caf/io/network/datagram_handler_impl.hpp
libcaf_io/caf/io/network/datagram_handler_impl.hpp
+2
-2
libcaf_io/caf/io/network/datagram_servant_impl.hpp
libcaf_io/caf/io/network/datagram_servant_impl.hpp
+20
-20
libcaf_io/caf/io/network/doorman_impl.hpp
libcaf_io/caf/io/network/doorman_impl.hpp
+9
-9
libcaf_io/caf/io/network/event_handler.hpp
libcaf_io/caf/io/network/event_handler.hpp
+14
-14
libcaf_io/caf/io/network/scribe_impl.hpp
libcaf_io/caf/io/network/scribe_impl.hpp
+13
-13
libcaf_io/caf/io/network/stream.hpp
libcaf_io/caf/io/network/stream.hpp
+22
-22
libcaf_io/caf/io/network/stream_impl.hpp
libcaf_io/caf/io/network/stream_impl.hpp
+2
-2
libcaf_io/src/datagram_handler.cpp
libcaf_io/src/datagram_handler.cpp
+2
-2
libcaf_io/src/event_handler.cpp
libcaf_io/src/event_handler.cpp
+1
-1
libcaf_io/src/stream.cpp
libcaf_io/src/stream.cpp
+2
-2
No files found.
libcaf_io/caf/io/network/acceptor.hpp
View file @
c59d29be
...
...
@@ -37,31 +37,31 @@ class acceptor : public event_handler {
public:
/// A manager providing the `accept` member function.
using
manager_type
=
acceptor_manager
;
/// A smart pointer to an acceptor manager.
using
manager_ptr
=
intrusive_ptr
<
manager_type
>
;
acceptor
(
default_multiplexer
&
backend_ref
,
native_socket
sockfd
);
/// Returns the accepted socket. This member function should
/// be called only from the `new_connection` callback.
inline
native_socket
&
accepted_socket
()
{
return
sock_
;
}
/// Starts this acceptor, forwarding all incoming connections to
/// `manager`. The intrusive pointer will be released after the
/// acceptor has been closed or an IO error occured.
void
start
(
acceptor_manager
*
mgr
);
/// Activates the acceptor.
void
activate
(
acceptor_manager
*
mgr
);
/// Closes the network connection and removes this handler from its parent.
void
stop_reading
();
void
removed_from_loop
(
operation
op
)
override
;
protected:
template
<
class
Policy
>
void
handle_event_impl
(
io
::
network
::
operation
op
,
Policy
&
policy
)
{
...
...
@@ -76,7 +76,7 @@ protected:
}
}
}
private:
manager_ptr
mgr_
;
native_socket
sock_
;
...
...
libcaf_io/caf/io/network/acceptor_impl.hpp
View file @
c59d29be
...
...
@@ -38,11 +38,11 @@ public:
policy_
(
std
::
forward
<
Ts
>
(
xs
)...)
{
// nop
}
void
handle_event
(
io
::
network
::
operation
op
)
override
{
this
->
handle_event_impl
(
op
,
policy_
);
}
private:
ProtocolPolicy
policy_
;
};
...
...
libcaf_io/caf/io/network/datagram_handler.hpp
View file @
c59d29be
...
...
@@ -40,28 +40,28 @@ class datagram_handler : public event_handler {
public:
/// A smart pointer to a datagram manager.
using
manager_ptr
=
intrusive_ptr
<
datagram_manager
>
;
/// A buffer class providing a compatible interface to `std::vector`.
using
write_buffer_type
=
std
::
vector
<
char
>
;
using
read_buffer_type
=
network
::
receive_buffer
;
/// A job for sending a datagram consisting of the sender and a buffer.
using
job_type
=
std
::
pair
<
datagram_handle
,
write_buffer_type
>
;
datagram_handler
(
default_multiplexer
&
backend_ref
,
native_socket
sockfd
);
/// Starts reading data from the socket, forwarding incoming data to `mgr`.
void
start
(
datagram_manager
*
mgr
);
/// Activates the datagram handler.
void
activate
(
datagram_manager
*
mgr
);
void
ack_writes
(
bool
x
);
/// Copies data to the write buffer.
/// @warning Not thread safe.
void
write
(
datagram_handle
hdl
,
const
void
*
buf
,
size_t
num_bytes
);
/// Returns the write buffer of this enpoint.
/// @warning Must not be modified outside the IO multiplexers event loop
/// once the stream has been started.
...
...
@@ -70,45 +70,45 @@ public:
wr_offline_buf_
.
back
().
first
=
hdl
;
return
wr_offline_buf_
.
back
().
second
;
}
/// Enqueues a buffer to be sent as a datagram.
/// @warning Must not be modified outside the IO multiplexers event loop
/// once the stream has been started.
inline
void
enqueue_datagram
(
datagram_handle
hdl
,
std
::
vector
<
char
>
buf
)
{
wr_offline_buf_
.
emplace_back
(
hdl
,
move
(
buf
));
}
/// Returns the read buffer of this stream.
/// @warning Must not be modified outside the IO multiplexers event loop
/// once the stream has been started.
inline
read_buffer_type
&
rd_buf
()
{
return
rd_buf_
;
}
/// Sends the content of the write buffer, calling the `io_failure`
/// member function of `mgr` in case of an error.
/// @warning Must not be called outside the IO multiplexers event loop
/// once the stream has been started.
void
flush
(
const
manager_ptr
&
mgr
);
/// Closes the read channel of the underlying socket and removes
/// this handler from its parent.
void
stop_reading
();
void
removed_from_loop
(
operation
op
)
override
;
void
add_endpoint
(
datagram_handle
hdl
,
const
ip_endpoint
&
ep
,
const
manager_ptr
mgr
);
std
::
unordered_map
<
datagram_handle
,
ip_endpoint
>&
endpoints
();
const
std
::
unordered_map
<
datagram_handle
,
ip_endpoint
>&
endpoints
()
const
;
void
remove_endpoint
(
datagram_handle
hdl
);
inline
ip_endpoint
&
sending_endpoint
()
{
return
sender_
;
}
protected:
template
<
class
Policy
>
void
handle_event_impl
(
io
::
network
::
operation
op
,
Policy
&
policy
)
{
...
...
@@ -150,32 +150,32 @@ protected:
break
;
}
}
private:
size_t
max_consecutive_reads_
;
void
prepare_next_read
();
void
prepare_next_write
();
bool
handle_read_result
(
bool
read_result
);
void
handle_write_result
(
bool
write_result
,
datagram_handle
id
,
std
::
vector
<
char
>&
buf
,
size_t
wb
);
void
handle_error
();
// known endpoints and broker servants
std
::
unordered_map
<
ip_endpoint
,
datagram_handle
>
hdl_by_ep_
;
std
::
unordered_map
<
datagram_handle
,
ip_endpoint
>
ep_by_hdl_
;
// state for reading
const
size_t
max_datagram_size_
;
size_t
num_bytes_
;
read_buffer_type
rd_buf_
;
manager_ptr
reader_
;
ip_endpoint
sender_
;
// state for writing
int
send_buffer_size_
;
bool
ack_writes_
;
...
...
libcaf_io/caf/io/network/datagram_handler_impl.hpp
View file @
c59d29be
...
...
@@ -39,11 +39,11 @@ public:
policy_
(
std
::
forward
<
Ts
>
(
xs
)...)
{
// nop
}
void
handle_event
(
io
::
network
::
operation
op
)
override
{
this
->
handle_event_impl
(
op
,
policy_
);
}
private:
ProtocolPolicy
policy_
;
};
...
...
libcaf_io/caf/io/network/datagram_servant_impl.hpp
View file @
c59d29be
...
...
@@ -33,50 +33,50 @@ namespace network {
/// Default datagram servant implementation.
class
datagram_servant_impl
:
public
datagram_servant
{
using
id_type
=
int64_t
;
public:
datagram_servant_impl
(
default_multiplexer
&
mx
,
native_socket
sockfd
,
int64_t
id
);
bool
new_endpoint
(
network
::
receive_buffer
&
buf
)
override
;
void
ack_writes
(
bool
enable
)
override
;
std
::
vector
<
char
>&
wr_buf
(
datagram_handle
hdl
)
override
;
void
enqueue_datagram
(
datagram_handle
hdl
,
std
::
vector
<
char
>
buf
)
override
;
network
::
receive_buffer
&
rd_buf
()
override
;
void
stop_reading
()
override
;
void
flush
()
override
;
std
::
string
addr
()
const
override
;
uint16_t
port
(
datagram_handle
hdl
)
const
override
;
uint16_t
local_port
()
const
override
;
std
::
vector
<
datagram_handle
>
hdls
()
const
override
;
void
add_endpoint
(
const
ip_endpoint
&
ep
,
datagram_handle
hdl
)
override
;
void
remove_endpoint
(
datagram_handle
hdl
)
override
;
void
launch
()
override
;
void
add_to_loop
()
override
;
void
remove_from_loop
()
override
;
void
detach_handles
()
override
;
private:
bool
launched_
;
datagram_handler_impl
<
policy
::
udp
>
handler_
;
};
}
// namespace network
}
// namespace io
}
// namespace caf
...
...
libcaf_io/caf/io/network/doorman_impl.hpp
View file @
c59d29be
...
...
@@ -34,25 +34,25 @@ namespace network {
class
doorman_impl
:
public
doorman
{
public:
doorman_impl
(
default_multiplexer
&
mx
,
native_socket
sockfd
);
bool
new_connection
()
override
;
void
stop_reading
()
override
;
void
launch
()
override
;
std
::
string
addr
()
const
override
;
uint16_t
port
()
const
override
;
void
add_to_loop
()
override
;
void
remove_from_loop
()
override
;
protected:
acceptor_impl
<
policy
::
tcp
>
acceptor_
;
};
}
// namespace network
}
// namespace io
}
// namespace caf
libcaf_io/caf/io/network/event_handler.hpp
View file @
c59d29be
...
...
@@ -31,61 +31,61 @@ namespace network {
class
event_handler
{
public:
event_handler
(
default_multiplexer
&
dm
,
native_socket
sockfd
);
virtual
~
event_handler
();
/// Returns true once the requested operation is done, i.e.,
/// to signalize the multiplexer to remove this handler.
/// The handler remains in the event loop as long as it returns false.
virtual
void
handle_event
(
operation
op
)
=
0
;
/// Callback to signalize that this handler has been removed
/// from the event loop for operations of type `op`.
virtual
void
removed_from_loop
(
operation
op
)
=
0
;
/// Returns the native socket handle for this handler.
inline
native_socket
fd
()
const
{
return
fd_
;
}
/// Returns the `multiplexer` this acceptor belongs to.
inline
default_multiplexer
&
backend
()
{
return
backend_
;
}
/// Returns the bit field storing the subscribed events.
inline
int
eventbf
()
const
{
return
eventbf_
;
}
/// Sets the bit field storing the subscribed events.
inline
void
eventbf
(
int
value
)
{
eventbf_
=
value
;
}
/// Checks whether `close_read` has been called.
inline
bool
read_channel_closed
()
const
{
return
read_channel_closed_
;
}
/// Closes the read channel of the underlying socket.
void
close_read_channel
();
/// Removes the file descriptor from the event loop of the parent.
void
passivate
();
protected:
/// Adds the file descriptor to the event loop of the parent.
void
activate
();
void
set_fd_flags
();
int
eventbf_
;
native_socket
fd_
;
bool
read_channel_closed_
;
default_multiplexer
&
backend_
;
};
}
// namespace network
}
// namespace io
}
// namespace caf
libcaf_io/caf/io/network/scribe_impl.hpp
View file @
c59d29be
...
...
@@ -34,34 +34,34 @@ namespace network {
class
scribe_impl
:
public
scribe
{
public:
scribe_impl
(
default_multiplexer
&
mx
,
native_socket
sockfd
);
void
configure_read
(
receive_policy
::
config
config
)
override
;
void
ack_writes
(
bool
enable
)
override
;
std
::
vector
<
char
>&
wr_buf
()
override
;
std
::
vector
<
char
>&
rd_buf
()
override
;
void
stop_reading
()
override
;
void
flush
()
override
;
std
::
string
addr
()
const
override
;
uint16_t
port
()
const
override
;
void
launch
();
void
add_to_loop
()
override
;
void
remove_from_loop
()
override
;
protected:
bool
launched_
;
stream_impl
<
policy
::
tcp
>
stream_
;
};
}
// namespace network
}
// namespace io
}
// namespace caf
...
...
libcaf_io/caf/io/network/stream.hpp
View file @
c59d29be
...
...
@@ -41,60 +41,60 @@ class stream : public event_handler {
public:
/// A smart pointer to a stream manager.
using
manager_ptr
=
intrusive_ptr
<
stream_manager
>
;
/// A buffer class providing a compatible
/// interface to `std::vector`.
using
buffer_type
=
std
::
vector
<
char
>
;
stream
(
default_multiplexer
&
backend_ref
,
native_socket
sockfd
);
/// Starts reading data from the socket, forwarding incoming data to `mgr`.
void
start
(
stream_manager
*
mgr
);
/// Activates the stream.
void
activate
(
stream_manager
*
mgr
);
/// Configures how much data will be provided for the next `consume` callback.
/// @warning Must not be called outside the IO multiplexers event loop
/// once the stream has been started.
void
configure_read
(
receive_policy
::
config
config
);
void
ack_writes
(
bool
x
);
/// Copies data to the write buffer.
/// @warning Not thread safe.
void
write
(
const
void
*
buf
,
size_t
num_bytes
);
/// Returns the write buffer of this stream.
/// @warning Must not be modified outside the IO multiplexers event loop
/// once the stream has been started.
inline
buffer_type
&
wr_buf
()
{
return
wr_offline_buf_
;
}
/// Returns the read buffer of this stream.
/// @warning Must not be modified outside the IO multiplexers event loop
/// once the stream has been started.
inline
buffer_type
&
rd_buf
()
{
return
rd_buf_
;
}
/// Sends the content of the write buffer, calling the `io_failure`
/// member function of `mgr` in case of an error.
/// @warning Must not be called outside the IO multiplexers event loop
/// once the stream has been started.
void
flush
(
const
manager_ptr
&
mgr
);
/// Closes the read channel of the underlying socket and removes
/// this handler from its parent.
void
stop_reading
();
void
removed_from_loop
(
operation
op
)
override
;
/// Forces this stream to subscribe to write events if no data is in the
/// write buffer.
void
force_empty_write
(
const
manager_ptr
&
mgr
);
protected:
template
<
class
Policy
>
void
handle_event_impl
(
io
::
network
::
operation
op
,
Policy
&
policy
)
{
...
...
@@ -125,20 +125,20 @@ protected:
break
;
}
}
private:
void
prepare_next_read
();
void
prepare_next_write
();
bool
handle_read_result
(
rw_state
read_result
,
size_t
rb
);
void
handle_write_result
(
rw_state
write_result
,
size_t
wb
);
void
handle_error_propagation
();
size_t
max_consecutive_reads_
;
// State for reading.
manager_ptr
reader_
;
size_t
read_threshold_
;
...
...
@@ -146,7 +146,7 @@ private:
size_t
max_
;
receive_policy_flag
rd_flag_
;
buffer_type
rd_buf_
;
// State for writing.
manager_ptr
writer_
;
bool
ack_writes_
;
...
...
libcaf_io/caf/io/network/stream_impl.hpp
View file @
c59d29be
...
...
@@ -35,11 +35,11 @@ public:
policy_
(
std
::
forward
<
Ts
>
(
xs
)...)
{
// nop
}
void
handle_event
(
io
::
network
::
operation
op
)
override
{
this
->
handle_event_impl
(
op
,
policy_
);
}
private:
ProtocolPolicy
policy_
;
};
...
...
libcaf_io/src/datagram_handler.cpp
View file @
c59d29be
...
...
@@ -29,7 +29,7 @@
#include "caf/io/network/default_multiplexer.hpp"
namespace
{
constexpr
size_t
receive_buffer_size
=
std
::
numeric_limits
<
uint16_t
>::
max
();
}
// namespace anonymous
...
...
@@ -162,7 +162,7 @@ void datagram_handler::prepare_next_write() {
wr_offline_buf_
.
pop_front
();
}
}
bool
datagram_handler
::
handle_read_result
(
bool
read_result
)
{
if
(
!
read_result
)
{
reader_
->
io_failure
(
&
backend
(),
operation
::
read
);
...
...
libcaf_io/src/event_handler.cpp
View file @
c59d29be
...
...
@@ -26,7 +26,7 @@
namespace
caf
{
namespace
io
{
namespace
network
{
event_handler
::
event_handler
(
default_multiplexer
&
dm
,
native_socket
sockfd
)
:
eventbf_
(
0
),
fd_
(
sockfd
),
...
...
libcaf_io/src/stream.cpp
View file @
c59d29be
...
...
@@ -99,7 +99,7 @@ void stream::removed_from_loop(operation op) {
case
operation
:
:
propagate_error
:
break
;
}
}
void
stream
::
force_empty_write
(
const
manager_ptr
&
mgr
)
{
if
(
!
writing_
)
{
backend
().
add
(
operation
::
write
,
fd
(),
this
);
...
...
@@ -201,7 +201,7 @@ void stream::handle_error_propagation() {
// backend will delete this handler anyway,
// no need to call backend().del() here
}
}
// namespace network
}
// namespace io
}
// namespace caf
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