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
44b7f51d
Commit
44b7f51d
authored
Aug 02, 2019
by
Jakob Otto
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Cleanup for PR
parent
ad7506fc
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
32 additions
and
37 deletions
+32
-37
libcaf_net/caf/policy/scribe.hpp
libcaf_net/caf/policy/scribe.hpp
+31
-36
libcaf_net/test/scribe.cpp
libcaf_net/test/scribe.cpp
+1
-1
No files found.
libcaf_net/caf/policy/scribe.hpp
View file @
44b7f51d
...
...
@@ -30,6 +30,7 @@
#ifdef CAF_WINDOWS
# include <winsock2.h>
#else
# include <caf/actor.hpp>
# include <sys/socket.h>
# include <sys/types.h>
...
...
@@ -61,7 +62,7 @@ public:
template
<
class
Parent
>
error
init
(
Parent
&
parent
)
{
prepare_next_read
();
parent
.
mask_add
(
net
::
operation
::
read
_write
);
parent
.
mask_add
(
net
::
operation
::
read
);
return
none
;
}
...
...
@@ -70,25 +71,23 @@ public:
void
*
buf
=
read_buf_
.
data
()
+
collected_
;
size_t
len
=
read_threshold_
-
collected_
;
CAF_LOG_TRACE
(
CAF_ARG
(
handle_
.
id
)
<<
CAF_ARG
(
len
));
auto
rres
=
read
(
handle_
,
buf
,
len
);
if
(
rres
.
is
<
caf
::
sec
>
())
{
variant
<
size_t
,
sec
>
ret
=
read
(
handle_
,
buf
,
len
);
if
(
auto
num_bytes
=
get_if
<
size_t
>
(
&
ret
))
{
CAF_LOG_DEBUG
(
CAF_ARG
(
len
)
<<
CAF_ARG
(
handle_
.
id
)
<<
CAF_ARG
(
*
num_bytes
));
collected_
+=
*
num_bytes
;
if
(
collected_
>=
read_threshold_
)
{
parent
.
application
().
process
(
read_buf_
,
*
this
,
parent
);
prepare_next_read
();
return
false
;
}
else
{
return
true
;
}
}
else
{
// Make sure WSAGetLastError gets called immediately on Windows.
CAF_LOG_DEBUG
(
"receive failed"
<<
CAF_ARG
(
get
<
sec
>
(
rres
)));
handle_error
(
parent
,
get
<
caf
::
sec
>
(
rres
));
return
false
;
}
CAF_LOG_DEBUG
(
CAF_ARG
(
len
)
<<
CAF_ARG
(
handle_
.
id
)
<<
CAF_ARG
(
rres
));
auto
result
=
(
get
<
size_t
>
(
rres
)
>
0
)
?
static_cast
<
size_t
>
(
get
<
size_t
>
(
rres
))
:
0
;
collected_
+=
result
;
if
(
collected_
>=
read_threshold_
)
{
parent
.
application
().
process
(
read_buf_
,
*
this
,
parent
);
prepare_next_read
();
auto
err
=
get
<
sec
>
(
ret
);
CAF_LOG_DEBUG
(
"receive failed"
<<
CAF_ARG
(
err
));
handle_error
(
parent
,
err
);
return
false
;
}
else
{
return
true
;
}
}
...
...
@@ -107,32 +106,28 @@ public:
template
<
class
Parent
>
bool
write_some
(
Parent
&
parent
)
{
// write prepared data
if
(
write_buf_
.
empty
())
return
false
;
auto
len
=
write_buf_
.
size
()
-
written_
;
void
*
buf
=
write_buf_
.
data
()
+
written_
;
CAF_LOG_TRACE
(
CAF_ARG
(
handle_
.
id
)
<<
CAF_ARG
(
len
));
auto
sres
=
net
::
write
(
handle_
,
buf
,
len
);
if
(
sres
.
is
<
caf
::
sec
>
())
{
auto
ret
=
net
::
write
(
handle_
,
buf
,
len
);
if
(
auto
num_bytes
=
get_if
<
size_t
>
(
&
ret
))
{
CAF_LOG_DEBUG
(
CAF_ARG
(
len
)
<<
CAF_ARG
(
handle_
.
id
)
<<
CAF_ARG
(
*
num_bytes
));
// update state
written_
+=
*
num_bytes
;
if
(
written_
>=
write_buf_
.
size
())
{
written_
=
0
;
write_buf_
.
clear
();
return
false
;
}
else
{
return
true
;
}
}
else
{
CAF_LOG_ERROR
(
"send failed"
);
handle_error
(
parent
,
get
<
caf
::
sec
>
(
sres
));
handle_error
(
parent
,
get
<
sec
>
(
ret
));
return
false
;
}
CAF_LOG_DEBUG
(
CAF_ARG
(
len
)
<<
CAF_ARG
(
handle_
.
id
)
<<
CAF_ARG
(
sres
));
auto
result
=
(
get
<
size_t
>
(
sres
)
>
0
)
?
static_cast
<
size_t
>
(
get
<
size_t
>
(
sres
))
:
0
;
// update state
written_
+=
result
;
if
(
written_
>=
write_buf_
.
size
())
{
written_
=
0
;
write_buf_
.
clear
();
return
false
;
}
else
{
return
true
;
}
}
template
<
class
Parent
>
...
...
libcaf_net/test/scribe.cpp
View file @
44b7f51d
...
...
@@ -97,7 +97,7 @@ public:
// nop
}
void
handle_error
(
caf
::
sec
)
{
void
handle_error
(
sec
)
{
// nop
}
...
...
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