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
f4711b9a
Commit
f4711b9a
authored
Jun 06, 2016
by
Dominik Charousset
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Re-implement remote lookup
parent
ebc7bef1
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
18 additions
and
24 deletions
+18
-24
libcaf_core/src/local_actor.cpp
libcaf_core/src/local_actor.cpp
+1
-1
libcaf_core/src/monitorable_actor.cpp
libcaf_core/src/monitorable_actor.cpp
+1
-1
libcaf_io/caf/io/middleman.hpp
libcaf_io/caf/io/middleman.hpp
+1
-3
libcaf_io/src/basp_broker.cpp
libcaf_io/src/basp_broker.cpp
+11
-12
libcaf_io/src/middleman.cpp
libcaf_io/src/middleman.cpp
+4
-7
No files found.
libcaf_core/src/local_actor.cpp
View file @
f4711b9a
...
...
@@ -334,7 +334,7 @@ local_actor::msg_type local_actor::filter_msg(mailbox_element& x) {
x
.
sender
->
enqueue
(
mailbox_element
::
make
(
ctrl
(),
x
.
mid
.
response_id
(),
{},
ok_atom
::
value
,
std
::
move
(
what
),
address
()
,
name
()),
strong_actor_ptr
{
ctrl
()}
,
name
()),
context
());
}
else
{
x
.
sender
->
enqueue
(
...
...
libcaf_core/src/monitorable_actor.cpp
View file @
f4711b9a
...
...
@@ -261,7 +261,7 @@ bool monitorable_actor::handle_system_message(mailbox_element& x,
}
res
=
mailbox_element
::
make
(
ctrl
(),
x
.
mid
.
response_id
(),
{},
ok_atom
::
value
,
std
::
move
(
what
),
address
()
,
name
());
strong_actor_ptr
{
ctrl
()}
,
name
());
}
});
if
(
!
res
&&
!
err
)
...
...
libcaf_io/caf/io/middleman.hpp
View file @
f4711b9a
...
...
@@ -180,13 +180,11 @@ public:
add_hook
<
impl
>
(
std
::
move
(
fun
));
}
/*
/// Returns the actor associated with `name` at `nid` or
/// `invalid_actor` if `nid` is not connected or has no actor
/// associated to this `name`.
/// @warning Blocks the caller until `nid` responded to the lookup.
actor remote_lookup(atom_value name, const node_id& nid);
*/
strong_actor_ptr
remote_lookup
(
atom_value
name
,
const
node_id
&
nid
);
/// Smart pointer for `network::multiplexer`.
using
backend_pointer
=
std
::
unique_ptr
<
network
::
multiplexer
>
;
...
...
libcaf_io/src/basp_broker.cpp
View file @
f4711b9a
...
...
@@ -257,30 +257,29 @@ void basp_broker_state::learned_new_node(const node_id& nid) {
CAF_LOG_ERROR
(
"learned_new_node called for known node "
<<
CAF_ARG
(
nid
));
return
;
}
auto
tmp
=
system
().
spawn
<
hidden
>
([
=
](
event_based_actor
*
t
his_actor
)
->
behavior
{
auto
tmp
=
system
().
spawn
<
hidden
>
([
=
](
event_based_actor
*
t
self
)
->
behavior
{
CAF_LOG_TRACE
(
""
);
// terminate when receiving a down message
t
his_actor
->
set_down_handler
([
=
](
down_msg
&
dm
)
{
t
self
->
set_down_handler
([
=
](
down_msg
&
dm
)
{
CAF_LOG_TRACE
(
CAF_ARG
(
dm
));
t
his_actor
->
quit
(
std
::
move
(
dm
.
reason
));
t
self
->
quit
(
std
::
move
(
dm
.
reason
));
});
// skip messages until we receive the initial ok_atom
t
his_actor
->
set_default_handler
(
skip
);
t
self
->
set_default_handler
(
skip
);
return
{
[
=
](
ok_atom
,
const
std
::
string
&
/* key == "info" */
,
const
actor_addr
&
config_serv_addr
,
const
std
::
string
&
/* name */
)
{
CAF_LOG_TRACE
(
CAF_ARG
(
config_serv
_addr
));
const
strong_actor_ptr
&
config_serv
,
const
std
::
string
&
/* name */
)
{
CAF_LOG_TRACE
(
CAF_ARG
(
config_serv
));
// drop unexpected messages from this point on
this_actor
->
set_default_handler
(
print_and_drop
);
auto
config_serv
=
actor_cast
<
strong_actor_ptr
>
(
config_serv_addr
);
tself
->
set_default_handler
(
print_and_drop
);
if
(
!
config_serv
)
return
;
t
his_actor
->
monitor
(
config_serv
);
t
his_actor
->
become
(
t
self
->
monitor
(
config_serv
);
t
self
->
become
(
[
=
](
spawn_atom
,
std
::
string
&
type
,
message
&
args
)
->
delegated
<
ok_atom
,
strong_actor_ptr
,
std
::
set
<
std
::
string
>>
{
CAF_LOG_TRACE
(
CAF_ARG
(
type
)
<<
CAF_ARG
(
args
));
t
his_actor
->
delegate
(
actor_cast
<
actor
>
(
std
::
move
(
config_serv
)),
t
self
->
delegate
(
actor_cast
<
actor
>
(
std
::
move
(
config_serv
)),
get_atom
::
value
,
std
::
move
(
type
),
std
::
move
(
args
));
return
{};
...
...
@@ -289,7 +288,7 @@ void basp_broker_state::learned_new_node(const node_id& nid) {
},
after
(
std
::
chrono
::
minutes
(
5
))
>>
[
=
]
{
CAF_LOG_INFO
(
"no spawn server found:"
<<
CAF_ARG
(
nid
));
t
his_actor
->
quit
();
t
self
->
quit
();
}
};
});
...
...
libcaf_io/src/middleman.cpp
View file @
f4711b9a
...
...
@@ -244,19 +244,17 @@ group middleman::remote_group(const std::string& group_identifier,
return
result
;
}
/*
actor middleman::remote_lookup(atom_value name, const node_id& nid) {
strong_actor_ptr
middleman
::
remote_lookup
(
atom_value
name
,
const
node_id
&
nid
)
{
CAF_LOG_TRACE
(
CAF_ARG
(
name
)
<<
CAF_ARG
(
nid
));
auto
basp
=
named_broker
<
basp_broker
>
(
atom
(
"BASP"
));
acto
r result;
strong_actor_pt
r
result
;
scoped_actor
self
{
system
(),
true
};
try
{
self
->
send
(
basp
,
forward_atom
::
value
,
self
.
address
(),
nid
,
name
,
make_message
(
sys_atom
::
value
,
get_atom
::
value
,
"info"
));
self
->
receive
(
[&](ok_atom, const std::string&,
const actor_addr& addr, const std::string&) {
result = actor_cast<actor>(addr);
[
&
](
ok_atom
,
std
::
string
&
,
strong_actor_ptr
&
addr
,
std
::
string
&
)
{
result
=
std
::
move
(
addr
);
},
after
(
std
::
chrono
::
minutes
(
5
))
>>
[]
{
// nop
...
...
@@ -267,7 +265,6 @@ actor middleman::remote_lookup(atom_value name, const node_id& nid) {
}
return
result
;
}
*/
void
middleman
::
start
()
{
CAF_LOG_TRACE
(
""
);
...
...
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