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
4a5cb104
Commit
4a5cb104
authored
Jan 20, 2020
by
Jakob Otto
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Refactor udp
parent
0f2feb29
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
21 additions
and
30 deletions
+21
-30
libcaf_net/caf/net/datagram_transport.hpp
libcaf_net/caf/net/datagram_transport.hpp
+16
-16
libcaf_net/caf/net/defaults.hpp
libcaf_net/caf/net/defaults.hpp
+0
-3
libcaf_net/caf/net/stream_transport.hpp
libcaf_net/caf/net/stream_transport.hpp
+5
-5
libcaf_net/caf/net/transport_base.hpp
libcaf_net/caf/net/transport_base.hpp
+0
-4
libcaf_net/src/defaults.cpp
libcaf_net/src/defaults.cpp
+0
-2
No files found.
libcaf_net/caf/net/datagram_transport.hpp
View file @
4a5cb104
...
@@ -98,17 +98,20 @@ public:
...
@@ -98,17 +98,20 @@ public:
}
}
bool
handle_write_event
(
endpoint_manager
&
manager
)
override
{
bool
handle_write_event
(
endpoint_manager
&
manager
)
override
{
CAF_LOG_TRACE
(
CAF_ARG
(
this
->
handle_
.
id
)
CAF_LOG_TRACE
(
CAF_ARG2
(
"handle"
,
this
->
handle_
.
id
)
<<
CAF_ARG2
(
"queue-size"
,
packet_queue_
.
size
()));
<<
CAF_ARG2
(
"queue-size"
,
this
->
packet_queue_
.
size
()));
// Try to write leftover data.
auto
get_messages
=
[
&
]
{
write_some
();
if
(
packet_queue_
.
empty
())
{
// Get new data from parent.
for
(
auto
msg
=
manager
.
next_message
();
msg
!=
nullptr
;
for
(
auto
msg
=
manager
.
next_message
();
msg
!=
nullptr
;
msg
=
manager
.
next_message
())
{
msg
=
manager
.
next_message
())
{
this
->
next_layer_
.
write_message
(
*
this
,
std
::
move
(
msg
));
this
->
next_layer_
.
write_message
(
*
this
,
std
::
move
(
msg
));
}
}
}
// Write prepared data.
return
!
packet_queue_
.
empty
();
return
write_some
();
};
while
(
write_some
()
&&
get_messages
())
;
// nop
return
!
packet_queue_
.
empty
();
}
}
// TODO: remove this function. `resolve` should add workers when needed.
// TODO: remove this function. `resolve` should add workers when needed.
...
@@ -159,7 +162,6 @@ private:
...
@@ -159,7 +162,6 @@ private:
}
}
bool
write_some
()
{
bool
write_some
()
{
CAF_LOG_TRACE
(
CAF_ARG2
(
"handle"
,
this
->
handle_
.
id
));
// Helper function to sort empty buffers back into the right caches.
// Helper function to sort empty buffers back into the right caches.
auto
recycle
=
[
&
]()
{
auto
recycle
=
[
&
]()
{
auto
&
front
=
packet_queue_
.
front
();
auto
&
front
=
packet_queue_
.
front
();
...
@@ -192,13 +194,11 @@ private:
...
@@ -192,13 +194,11 @@ private:
if
(
err
!=
sec
::
unavailable_or_would_block
)
{
if
(
err
!=
sec
::
unavailable_or_would_block
)
{
CAF_LOG_ERROR
(
"write failed"
<<
CAF_ARG
(
err
));
CAF_LOG_ERROR
(
"write failed"
<<
CAF_ARG
(
err
));
this
->
next_layer_
.
handle_error
(
err
);
this
->
next_layer_
.
handle_error
(
err
);
return
false
;
}
}
CAF_LOG_DEBUG
(
"write returned `unavailable_or_would_block`"
);
return
false
;
return
true
;
}
}
}
}
return
fals
e
;
return
tru
e
;
}
}
std
::
deque
<
packet
>
packet_queue_
;
std
::
deque
<
packet
>
packet_queue_
;
...
...
libcaf_net/caf/net/defaults.hpp
View file @
4a5cb104
...
@@ -30,7 +30,4 @@ extern const size_t max_payload_buffers;
...
@@ -30,7 +30,4 @@ extern const size_t max_payload_buffers;
/// Maximum number of cached buffers for sending headers.
/// Maximum number of cached buffers for sending headers.
extern
const
size_t
max_header_buffers
;
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
}
// namespace caf::defaults::middleman
libcaf_net/caf/net/stream_transport.hpp
View file @
4a5cb104
...
@@ -104,12 +104,13 @@ public:
...
@@ -104,12 +104,13 @@ public:
return
true
;
return
true
;
}
}
bool
handle_write_event
(
endpoint_manager
&
parent
)
override
{
bool
handle_write_event
(
endpoint_manager
&
manager
)
override
{
CAF_LOG_TRACE
(
CAF_ARG2
(
"handle"
,
this
->
handle
().
id
));
CAF_LOG_TRACE
(
CAF_ARG2
(
"handle"
,
this
->
handle
().
id
)
<<
CAF_ARG2
(
"queue-size"
,
write_queue_
.
size
()));
auto
get_messages
=
[
&
]
{
auto
get_messages
=
[
&
]
{
if
(
write_queue_
.
empty
())
{
if
(
write_queue_
.
empty
())
{
for
(
auto
msg
=
parent
.
next_message
();
msg
!=
nullptr
;
for
(
auto
msg
=
manager
.
next_message
();
msg
!=
nullptr
;
msg
=
parent
.
next_message
())
{
msg
=
manager
.
next_message
())
{
this
->
next_layer_
.
write_message
(
*
this
,
std
::
move
(
msg
));
this
->
next_layer_
.
write_message
(
*
this
,
std
::
move
(
msg
));
}
}
}
}
...
@@ -167,7 +168,6 @@ private:
...
@@ -167,7 +168,6 @@ private:
}
}
bool
write_some
()
{
bool
write_some
()
{
CAF_LOG_TRACE
(
CAF_ARG2
(
"handle"
,
this
->
handle_
.
id
));
// Helper function to sort empty buffers back into the right caches.
// Helper function to sort empty buffers back into the right caches.
auto
recycle
=
[
&
]()
{
auto
recycle
=
[
&
]()
{
auto
&
front
=
this
->
write_queue_
.
front
();
auto
&
front
=
this
->
write_queue_
.
front
();
...
...
libcaf_net/caf/net/transport_base.hpp
View file @
4a5cb104
...
@@ -100,8 +100,6 @@ public:
...
@@ -100,8 +100,6 @@ public:
CAF_LOG_TRACE
(
""
);
CAF_LOG_TRACE
(
""
);
manager_
=
&
parent
;
manager_
=
&
parent
;
auto
&
cfg
=
system
().
config
();
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"
,
auto
max_header_bufs
=
get_or
(
cfg
,
"middleman.max-header-buffers"
,
defaults
::
middleman
::
max_header_buffers
);
defaults
::
middleman
::
max_header_buffers
);
header_bufs_
.
reserve
(
max_header_bufs
);
header_bufs_
.
reserve
(
max_header_bufs
);
...
@@ -226,8 +224,6 @@ protected:
...
@@ -226,8 +224,6 @@ protected:
buffer_type
read_buf_
;
buffer_type
read_buf_
;
endpoint_manager
*
manager_
;
endpoint_manager
*
manager_
;
size_t
max_write_queue_size_
;
};
};
}
// namespace caf::net
}
// namespace caf::net
libcaf_net/src/defaults.cpp
View file @
4a5cb104
...
@@ -24,6 +24,4 @@ const size_t max_payload_buffers = 100;
...
@@ -24,6 +24,4 @@ const size_t max_payload_buffers = 100;
const
size_t
max_header_buffers
=
10
;
const
size_t
max_header_buffers
=
10
;
const
size_t
max_write_queue_size
=
2000
;
}
// namespace caf::defaults::middleman
}
// 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