Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
A
actor-incubator
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
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-incubator
Commits
b5a8642b
Commit
b5a8642b
authored
Jan 17, 2020
by
Jakob Otto
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Reimplement write_event handling
parent
6344cacd
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
23 additions
and
13 deletions
+23
-13
libcaf_net/caf/net/defaults.hpp
libcaf_net/caf/net/defaults.hpp
+3
-0
libcaf_net/caf/net/stream_transport.hpp
libcaf_net/caf/net/stream_transport.hpp
+14
-13
libcaf_net/caf/net/transport_base.hpp
libcaf_net/caf/net/transport_base.hpp
+4
-0
libcaf_net/src/defaults.cpp
libcaf_net/src/defaults.cpp
+2
-0
No files found.
libcaf_net/caf/net/defaults.hpp
View file @
b5a8642b
...
...
@@ -30,4 +30,7 @@ extern const size_t max_payload_buffers;
/// Maximum number of cached buffers for sending headers.
extern
const
size_t
max_header_buffers
;
/// Maximum number of packets to be held in write_queue.
extern
const
size_t
max_write_queue_size
;
}
// namespace caf::defaults::middleman
libcaf_net/caf/net/stream_transport.hpp
View file @
b5a8642b
...
...
@@ -106,16 +106,18 @@ public:
bool
handle_write_event
(
endpoint_manager
&
parent
)
override
{
CAF_LOG_TRACE
(
CAF_ARG2
(
"handle"
,
this
->
handle
().
id
));
// Try to write leftover data.
write_some
();
// Get new data from parent.
// TODO: dont read all messages at once - get one by one.
for
(
auto
msg
=
parent
.
next_message
();
msg
!=
nullptr
;
msg
=
parent
.
next_message
())
{
this
->
next_layer_
.
write_message
(
*
this
,
std
::
move
(
msg
));
}
// Write prepared data.
return
write_some
();
auto
get_messages
=
[
&
]
{
if
(
write_queue_
.
empty
())
{
for
(
auto
msg
=
parent
.
next_message
();
msg
!=
nullptr
;
msg
=
parent
.
next_message
())
{
this
->
next_layer_
.
write_message
(
*
this
,
std
::
move
(
msg
));
}
}
return
!
write_queue_
.
empty
();
};
while
(
write_some
()
&&
get_messages
())
;
// nop
return
!
write_queue_
.
empty
();
}
void
write_packet
(
id_type
,
span
<
buffer_type
*>
buffers
)
override
{
...
...
@@ -200,12 +202,11 @@ private:
if
(
err
!=
sec
::
unavailable_or_would_block
)
{
CAF_LOG_DEBUG
(
"send failed"
<<
CAF_ARG
(
err
));
this
->
next_layer_
.
handle_error
(
err
);
return
false
;
}
return
tru
e
;
return
fals
e
;
}
}
return
fals
e
;
return
tru
e
;
}
write_queue_type
write_queue_
;
...
...
libcaf_net/caf/net/transport_base.hpp
View file @
b5a8642b
...
...
@@ -100,6 +100,8 @@ public:
CAF_LOG_TRACE
(
""
);
manager_
=
&
parent
;
auto
&
cfg
=
system
().
config
();
max_write_queue_size_
=
get_or
(
cfg
,
"middleman.max-write-queue-size"
,
defaults
::
middleman
::
max_write_queue_size
);
auto
max_header_bufs
=
get_or
(
cfg
,
"middleman.max-header-buffers"
,
defaults
::
middleman
::
max_header_buffers
);
header_bufs_
.
reserve
(
max_header_bufs
);
...
...
@@ -224,6 +226,8 @@ protected:
buffer_type
read_buf_
;
endpoint_manager
*
manager_
;
size_t
max_write_queue_size_
;
};
}
// namespace caf::net
libcaf_net/src/defaults.cpp
View file @
b5a8642b
...
...
@@ -24,4 +24,6 @@ const size_t max_payload_buffers = 100;
const
size_t
max_header_buffers
=
10
;
const
size_t
max_write_queue_size
=
2000
;
}
// namespace caf::defaults::middleman
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