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
c3d7504e
Commit
c3d7504e
authored
Sep 25, 2019
by
Dominik Charousset
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Add new resolve function to the middleman
parent
bb46599f
Changes
17
Hide whitespace changes
Inline
Side-by-side
Showing
17 changed files
with
58 additions
and
64 deletions
+58
-64
libcaf_net/caf/net/backend/test.hpp
libcaf_net/caf/net/backend/test.hpp
+2
-0
libcaf_net/caf/net/basp/ec.hpp
libcaf_net/caf/net/basp/ec.hpp
+2
-0
libcaf_net/caf/net/endpoint_manager.hpp
libcaf_net/caf/net/endpoint_manager.hpp
+3
-3
libcaf_net/caf/net/endpoint_manager_impl.hpp
libcaf_net/caf/net/endpoint_manager_impl.hpp
+1
-2
libcaf_net/caf/net/middleman.hpp
libcaf_net/caf/net/middleman.hpp
+5
-0
libcaf_net/caf/net/middleman_backend.hpp
libcaf_net/caf/net/middleman_backend.hpp
+3
-0
libcaf_net/caf/net/stream_transport.hpp
libcaf_net/caf/net/stream_transport.hpp
+2
-2
libcaf_net/caf/net/transport_worker.hpp
libcaf_net/caf/net/transport_worker.hpp
+1
-1
libcaf_net/src/ec.cpp
libcaf_net/src/ec.cpp
+1
-0
libcaf_net/src/endpoint_manager.cpp
libcaf_net/src/endpoint_manager.cpp
+4
-4
libcaf_net/src/net/backend/test.cpp
libcaf_net/src/net/backend/test.cpp
+10
-0
libcaf_net/src/net/middleman.cpp
libcaf_net/src/net/middleman.cpp
+10
-0
libcaf_net/test/endpoint_manager.cpp
libcaf_net/test/endpoint_manager.cpp
+3
-2
libcaf_net/test/net/backend/test.cpp
libcaf_net/test/net/backend/test.cpp
+0
-41
libcaf_net/test/stream_transport.cpp
libcaf_net/test/stream_transport.cpp
+4
-3
libcaf_net/test/string_application.cpp
libcaf_net/test/string_application.cpp
+4
-3
libcaf_net/test/transport_worker.cpp
libcaf_net/test/transport_worker.cpp
+3
-3
No files found.
libcaf_net/caf/net/backend/test.hpp
View file @
c3d7504e
...
@@ -50,6 +50,8 @@ public:
...
@@ -50,6 +50,8 @@ public:
endpoint_manager_ptr
peer
(
const
node_id
&
id
)
override
;
endpoint_manager_ptr
peer
(
const
node_id
&
id
)
override
;
void
resolve
(
const
uri
&
locator
,
const
actor
&
listener
)
override
;
strong_actor_ptr
make_proxy
(
node_id
nid
,
actor_id
aid
)
override
;
strong_actor_ptr
make_proxy
(
node_id
nid
,
actor_id
aid
)
override
;
void
set_last_hop
(
node_id
*
)
override
;
void
set_last_hop
(
node_id
*
)
override
;
...
...
libcaf_net/caf/net/basp/ec.hpp
View file @
c3d7504e
...
@@ -41,6 +41,8 @@ enum class ec : uint8_t {
...
@@ -41,6 +41,8 @@ enum class ec : uint8_t {
unimplemented
=
10
,
unimplemented
=
10
,
app_identifiers_mismatch
,
app_identifiers_mismatch
,
invalid_payload
,
invalid_payload
,
invalid_scheme
,
invalid_locator
,
};
};
/// @relates ec
/// @relates ec
...
...
libcaf_net/caf/net/endpoint_manager.hpp
View file @
c3d7504e
...
@@ -52,7 +52,7 @@ public:
...
@@ -52,7 +52,7 @@ public:
struct
event
:
intrusive
::
singly_linked
<
event
>
{
struct
event
:
intrusive
::
singly_linked
<
event
>
{
struct
resolve_request
{
struct
resolve_request
{
std
::
string
path
;
uri
locator
;
actor
listener
;
actor
listener
;
};
};
...
@@ -61,7 +61,7 @@ public:
...
@@ -61,7 +61,7 @@ public:
uint64_t
id
;
uint64_t
id
;
};
};
event
(
std
::
string
path
,
actor
listener
);
event
(
uri
locator
,
actor
listener
);
event
(
atom_value
type
,
uint64_t
id
);
event
(
atom_value
type
,
uint64_t
id
);
...
@@ -138,7 +138,7 @@ public:
...
@@ -138,7 +138,7 @@ public:
// -- event management -------------------------------------------------------
// -- event management -------------------------------------------------------
/// Resolves a path to a remote actor.
/// Resolves a path to a remote actor.
void
resolve
(
std
::
string
path
,
actor
listener
);
void
resolve
(
uri
locator
,
actor
listener
);
/// Enqueues a message to the endpoint.
/// Enqueues a message to the endpoint.
void
enqueue
(
mailbox_element_ptr
msg
,
strong_actor_ptr
receiver
,
void
enqueue
(
mailbox_element_ptr
msg
,
strong_actor_ptr
receiver
,
...
...
libcaf_net/caf/net/endpoint_manager_impl.hpp
View file @
c3d7504e
...
@@ -96,8 +96,7 @@ public:
...
@@ -96,8 +96,7 @@ public:
using
timeout
=
endpoint_manager
::
event
::
timeout
;
using
timeout
=
endpoint_manager
::
event
::
timeout
;
using
resolve_request
=
endpoint_manager
::
event
::
resolve_request
;
using
resolve_request
=
endpoint_manager
::
event
::
resolve_request
;
if
(
auto
rr
=
get_if
<
resolve_request
>
(
&
ptr
->
value
))
{
if
(
auto
rr
=
get_if
<
resolve_request
>
(
&
ptr
->
value
))
{
transport_
.
resolve
(
*
this
,
std
::
move
(
rr
->
path
),
transport_
.
resolve
(
*
this
,
rr
->
locator
,
rr
->
listener
);
std
::
move
(
rr
->
listener
));
}
else
{
}
else
{
auto
&
t
=
get
<
timeout
>
(
ptr
->
value
);
auto
&
t
=
get
<
timeout
>
(
ptr
->
value
);
transport_
.
timeout
(
*
this
,
t
.
type
,
t
.
id
);
transport_
.
timeout
(
*
this
,
t
.
type
,
t
.
id
);
...
...
libcaf_net/caf/net/middleman.hpp
View file @
c3d7504e
...
@@ -66,6 +66,11 @@ public:
...
@@ -66,6 +66,11 @@ public:
return
result
.
release
();
return
result
.
release
();
}
}
// -- remoting ---------------------------------------------------------------
/// Resolves a path to a remote actor.
void
resolve
(
const
uri
&
locator
,
const
actor
&
listener
);
// -- properties -------------------------------------------------------------
// -- properties -------------------------------------------------------------
actor_system
&
system
()
{
actor_system
&
system
()
{
...
...
libcaf_net/caf/net/middleman_backend.hpp
View file @
c3d7504e
...
@@ -46,6 +46,9 @@ public:
...
@@ -46,6 +46,9 @@ public:
/// @returns The endpoint manager for `peer` on success, `nullptr` otherwise.
/// @returns The endpoint manager for `peer` on success, `nullptr` otherwise.
virtual
endpoint_manager_ptr
peer
(
const
node_id
&
id
)
=
0
;
virtual
endpoint_manager_ptr
peer
(
const
node_id
&
id
)
=
0
;
/// Resolves a path to a remote actor.
virtual
void
resolve
(
const
uri
&
locator
,
const
actor
&
listener
)
=
0
;
// -- properties -------------------------------------------------------------
// -- properties -------------------------------------------------------------
const
std
::
string
&
id
()
const
noexcept
{
const
std
::
string
&
id
()
const
noexcept
{
...
...
libcaf_net/caf/net/stream_transport.hpp
View file @
c3d7504e
...
@@ -131,8 +131,8 @@ public:
...
@@ -131,8 +131,8 @@ public:
}
}
template
<
class
Parent
>
template
<
class
Parent
>
void
resolve
(
Parent
&
,
const
std
::
string
&
path
,
actor
listener
)
{
void
resolve
(
Parent
&
,
const
uri
&
locator
,
const
actor
&
listener
)
{
worker_
.
resolve
(
*
this
,
path
,
listener
);
worker_
.
resolve
(
*
this
,
locator
.
path
()
,
listener
);
}
}
template
<
class
...
Ts
>
template
<
class
...
Ts
>
...
...
libcaf_net/caf/net/transport_worker.hpp
View file @
c3d7504e
...
@@ -82,7 +82,7 @@ public:
...
@@ -82,7 +82,7 @@ public:
}
}
template
<
class
Parent
>
template
<
class
Parent
>
void
resolve
(
Parent
&
parent
,
const
std
::
string
&
path
,
actor
listener
)
{
void
resolve
(
Parent
&
parent
,
string_view
path
,
const
actor
&
listener
)
{
auto
decorator
=
make_write_packet_decorator
(
*
this
,
parent
);
auto
decorator
=
make_write_packet_decorator
(
*
this
,
parent
);
application_
.
resolve
(
decorator
,
path
,
listener
);
application_
.
resolve
(
decorator
,
path
,
listener
);
}
}
...
...
libcaf_net/src/ec.cpp
View file @
c3d7504e
...
@@ -42,6 +42,7 @@ string_view ec_names[] = {
...
@@ -42,6 +42,7 @@ string_view ec_names[] = {
"unimplemented"
,
"unimplemented"
,
"app_identifiers_mismatch"
,
"app_identifiers_mismatch"
,
"invalid_payload"
,
"invalid_payload"
,
"invalid_scheme"
,
};
};
}
// namespace
}
// namespace
...
...
libcaf_net/src/endpoint_manager.cpp
View file @
c3d7504e
...
@@ -26,8 +26,8 @@
...
@@ -26,8 +26,8 @@
namespace
caf
{
namespace
caf
{
namespace
net
{
namespace
net
{
endpoint_manager
::
event
::
event
(
std
::
string
path
,
actor
listener
)
endpoint_manager
::
event
::
event
(
uri
locator
,
actor
listener
)
:
value
(
resolve_request
{
std
::
move
(
path
),
std
::
move
(
listener
)})
{
:
value
(
resolve_request
{
std
::
move
(
locator
),
std
::
move
(
listener
)})
{
// nop
// nop
}
}
...
@@ -74,9 +74,9 @@ std::unique_ptr<endpoint_manager::message> endpoint_manager::next_message() {
...
@@ -74,9 +74,9 @@ std::unique_ptr<endpoint_manager::message> endpoint_manager::next_message() {
return
result
;
return
result
;
}
}
void
endpoint_manager
::
resolve
(
std
::
string
path
,
actor
listener
)
{
void
endpoint_manager
::
resolve
(
uri
locator
,
actor
listener
)
{
using
intrusive
::
inbox_result
;
using
intrusive
::
inbox_result
;
auto
ptr
=
new
event
(
std
::
move
(
path
),
std
::
move
(
listener
));
auto
ptr
=
new
event
(
std
::
move
(
locator
),
std
::
move
(
listener
));
switch
(
events_
.
push_back
(
ptr
))
{
switch
(
events_
.
push_back
(
ptr
))
{
default:
default:
break
;
break
;
...
...
libcaf_net/src/net/backend/test.cpp
View file @
c3d7504e
...
@@ -21,10 +21,12 @@
...
@@ -21,10 +21,12 @@
#include "caf/expected.hpp"
#include "caf/expected.hpp"
#include "caf/net/actor_proxy_impl.hpp"
#include "caf/net/actor_proxy_impl.hpp"
#include "caf/net/basp/application.hpp"
#include "caf/net/basp/application.hpp"
#include "caf/net/basp/ec.hpp"
#include "caf/net/make_endpoint_manager.hpp"
#include "caf/net/make_endpoint_manager.hpp"
#include "caf/net/middleman.hpp"
#include "caf/net/middleman.hpp"
#include "caf/net/stream_transport.hpp"
#include "caf/net/stream_transport.hpp"
#include "caf/raise_error.hpp"
#include "caf/raise_error.hpp"
#include "caf/send.hpp"
namespace
caf
{
namespace
caf
{
namespace
net
{
namespace
net
{
...
@@ -50,6 +52,14 @@ endpoint_manager_ptr test::peer(const node_id& id) {
...
@@ -50,6 +52,14 @@ endpoint_manager_ptr test::peer(const node_id& id) {
return
get_peer
(
id
).
second
;
return
get_peer
(
id
).
second
;
}
}
void
test
::
resolve
(
const
uri
&
locator
,
const
actor
&
listener
)
{
auto
id
=
locator
.
authority_only
();
if
(
id
)
peer
(
make_node_id
(
*
id
))
->
resolve
(
locator
,
listener
);
else
anon_send
(
listener
,
error
(
basp
::
ec
::
invalid_locator
));
}
strong_actor_ptr
test
::
make_proxy
(
node_id
nid
,
actor_id
aid
)
{
strong_actor_ptr
test
::
make_proxy
(
node_id
nid
,
actor_id
aid
)
{
using
impl_type
=
actor_proxy_impl
;
using
impl_type
=
actor_proxy_impl
;
using
hdl_type
=
strong_actor_ptr
;
using
hdl_type
=
strong_actor_ptr
;
...
...
libcaf_net/src/net/middleman.cpp
View file @
c3d7504e
...
@@ -19,9 +19,11 @@
...
@@ -19,9 +19,11 @@
#include "caf/net/middleman.hpp"
#include "caf/net/middleman.hpp"
#include "caf/actor_system_config.hpp"
#include "caf/actor_system_config.hpp"
#include "caf/net/basp/ec.hpp"
#include "caf/net/middleman_backend.hpp"
#include "caf/net/middleman_backend.hpp"
#include "caf/net/multiplexer.hpp"
#include "caf/net/multiplexer.hpp"
#include "caf/raise_error.hpp"
#include "caf/raise_error.hpp"
#include "caf/send.hpp"
#include "caf/uri.hpp"
#include "caf/uri.hpp"
namespace
caf
{
namespace
caf
{
...
@@ -70,6 +72,14 @@ void* middleman::subtype_ptr() {
...
@@ -70,6 +72,14 @@ void* middleman::subtype_ptr() {
return
this
;
return
this
;
}
}
void
middleman
::
resolve
(
const
uri
&
locator
,
const
actor
&
listener
)
{
auto
ptr
=
backend
(
locator
.
scheme
());
if
(
ptr
!=
nullptr
)
ptr
->
resolve
(
locator
,
listener
);
else
anon_send
(
listener
,
error
{
basp
::
ec
::
invalid_scheme
});
}
middleman_backend
*
middleman
::
backend
(
string_view
scheme
)
const
noexcept
{
middleman_backend
*
middleman
::
backend
(
string_view
scheme
)
const
noexcept
{
auto
predicate
=
[
&
](
const
middleman_backend_ptr
&
ptr
)
{
auto
predicate
=
[
&
](
const
middleman_backend_ptr
&
ptr
)
{
return
ptr
->
id
()
==
scheme
;
return
ptr
->
id
()
==
scheme
;
...
...
libcaf_net/test/endpoint_manager.cpp
View file @
c3d7504e
...
@@ -121,7 +121,7 @@ public:
...
@@ -121,7 +121,7 @@ public:
}
}
template
<
class
Manager
>
template
<
class
Manager
>
void
resolve
(
Manager
&
mgr
,
std
::
string
path
,
actor
listener
)
{
void
resolve
(
Manager
&
mgr
,
const
uri
&
locator
,
const
actor
&
listener
)
{
actor_id
aid
=
42
;
actor_id
aid
=
42
;
auto
hid
=
"0011223344556677889900112233445566778899"
;
auto
hid
=
"0011223344556677889900112233445566778899"
;
auto
nid
=
unbox
(
make_node_id
(
42
,
hid
));
auto
nid
=
unbox
(
make_node_id
(
42
,
hid
));
...
@@ -129,6 +129,7 @@ public:
...
@@ -129,6 +129,7 @@ public:
auto
p
=
make_actor
<
actor_proxy_impl
,
strong_actor_ptr
>
(
aid
,
nid
,
auto
p
=
make_actor
<
actor_proxy_impl
,
strong_actor_ptr
>
(
aid
,
nid
,
&
mgr
.
system
(),
cfg
,
&
mgr
.
system
(),
cfg
,
&
mgr
);
&
mgr
);
std
::
string
path
{
locator
.
path
().
begin
(),
locator
.
path
().
end
()};
anon_send
(
listener
,
resolve_atom
::
value
,
std
::
move
(
path
),
p
);
anon_send
(
listener
,
resolve_atom
::
value
,
std
::
move
(
path
),
p
);
}
}
...
@@ -189,7 +190,7 @@ CAF_TEST(resolve and proxy communication) {
...
@@ -189,7 +190,7 @@ CAF_TEST(resolve and proxy communication) {
mpx
->
handle_updates
();
mpx
->
handle_updates
();
run
();
run
();
CAF_CHECK_EQUAL
(
read
(
sockets
.
second
,
make_span
(
read_buf
)),
hello_test
.
size
());
CAF_CHECK_EQUAL
(
read
(
sockets
.
second
,
make_span
(
read_buf
)),
hello_test
.
size
());
mgr
->
resolve
(
"/id/42"
,
self
);
mgr
->
resolve
(
unbox
(
make_uri
(
"test:id/42"
))
,
self
);
run
();
run
();
self
->
receive
(
self
->
receive
(
[
&
](
resolve_atom
,
const
std
::
string
&
,
const
strong_actor_ptr
&
p
)
{
[
&
](
resolve_atom
,
const
std
::
string
&
,
const
strong_actor_ptr
&
p
)
{
...
...
libcaf_net/test/net/backend/test.cpp
deleted
100644 → 0
View file @
bb46599f
/******************************************************************************
* ____ _ _____ *
* / ___| / \ | ___| C++ *
* | | / _ \ | |_ Actor *
* | |___ / ___ \| _| Framework *
* \____/_/ \_|_| *
* *
* Copyright 2011-2019 Dominik Charousset *
* *
* Distributed under the terms and conditions of the BSD 3-Clause License or *
* (at your option) under the terms and conditions of the Boost Software *
* License 1.0. See accompanying files LICENSE and LICENSE_ALTERNATIVE. *
* *
* If you did not receive a copy of the license files, see *
* http://opensource.org/licenses/BSD-3-Clause and *
* http://www.boost.org/LICENSE_1_0.txt. *
******************************************************************************/
#define CAF_SUITE net.backend.test
#include "caf/net/backend/test.hpp"
#include "caf/test/dsl.hpp"
using
namespace
caf
;
namespace
{
struct
fixture
{
};
}
// namespace
CAF_TEST_FIXTURE_SCOPE
(
test_tests
,
fixture
)
CAF_TEST
(
todo
)
{
// implement me
}
CAF_TEST_FIXTURE_SCOPE_END
()
libcaf_net/test/stream_transport.cpp
View file @
c3d7504e
...
@@ -85,7 +85,7 @@ public:
...
@@ -85,7 +85,7 @@ public:
}
}
template
<
class
Parent
>
template
<
class
Parent
>
void
resolve
(
Parent
&
parent
,
const
std
::
string
&
path
,
actor
listener
)
{
void
resolve
(
Parent
&
parent
,
string_view
path
,
actor
listener
)
{
actor_id
aid
=
42
;
actor_id
aid
=
42
;
auto
hid
=
"0011223344556677889900112233445566778899"
;
auto
hid
=
"0011223344556677889900112233445566778899"
;
auto
nid
=
unbox
(
make_node_id
(
42
,
hid
));
auto
nid
=
unbox
(
make_node_id
(
42
,
hid
));
...
@@ -95,7 +95,8 @@ public:
...
@@ -95,7 +95,8 @@ public:
&
parent
.
system
(),
&
parent
.
system
(),
cfg
,
cfg
,
std
::
move
(
ptr
));
std
::
move
(
ptr
));
anon_send
(
listener
,
resolve_atom
::
value
,
std
::
move
(
path
),
p
);
anon_send
(
listener
,
resolve_atom
::
value
,
std
::
string
{
path
.
begin
(),
path
.
end
()},
p
);
}
}
template
<
class
Transport
>
template
<
class
Transport
>
...
@@ -163,7 +164,7 @@ CAF_TEST(resolve and proxy communication) {
...
@@ -163,7 +164,7 @@ CAF_TEST(resolve and proxy communication) {
CAF_CHECK_EQUAL
(
mgr
->
init
(),
none
);
CAF_CHECK_EQUAL
(
mgr
->
init
(),
none
);
mpx
->
handle_updates
();
mpx
->
handle_updates
();
run
();
run
();
mgr
->
resolve
(
"/id/42"
,
self
);
mgr
->
resolve
(
unbox
(
make_uri
(
"test:/id/42"
))
,
self
);
run
();
run
();
self
->
receive
(
self
->
receive
(
[
&
](
resolve_atom
,
const
std
::
string
&
,
const
strong_actor_ptr
&
p
)
{
[
&
](
resolve_atom
,
const
std
::
string
&
,
const
strong_actor_ptr
&
p
)
{
...
...
libcaf_net/test/string_application.cpp
View file @
c3d7504e
...
@@ -159,7 +159,7 @@ public:
...
@@ -159,7 +159,7 @@ public:
}
}
template
<
class
Parent
>
template
<
class
Parent
>
void
resolve
(
Parent
&
parent
,
const
std
::
string
&
path
,
actor
listener
)
{
void
resolve
(
Parent
&
parent
,
string_view
path
,
actor
listener
)
{
actor_id
aid
=
42
;
actor_id
aid
=
42
;
auto
hid
=
"0011223344556677889900112233445566778899"
;
auto
hid
=
"0011223344556677889900112233445566778899"
;
auto
nid
=
unbox
(
make_node_id
(
aid
,
hid
));
auto
nid
=
unbox
(
make_node_id
(
aid
,
hid
));
...
@@ -168,7 +168,8 @@ public:
...
@@ -168,7 +168,8 @@ public:
auto
mgr
=
&
parent
.
manager
();
auto
mgr
=
&
parent
.
manager
();
auto
p
=
make_actor
<
net
::
actor_proxy_impl
,
strong_actor_ptr
>
(
aid
,
nid
,
sys
,
auto
p
=
make_actor
<
net
::
actor_proxy_impl
,
strong_actor_ptr
>
(
aid
,
nid
,
sys
,
cfg
,
mgr
);
cfg
,
mgr
);
anon_send
(
listener
,
resolve_atom
::
value
,
std
::
move
(
path
),
p
);
anon_send
(
listener
,
resolve_atom
::
value
,
std
::
string
{
path
.
begin
(),
path
.
end
()},
p
);
}
}
template
<
class
Transport
>
template
<
class
Transport
>
...
@@ -214,7 +215,7 @@ CAF_TEST(receive) {
...
@@ -214,7 +215,7 @@ CAF_TEST(receive) {
mpx
->
handle_updates
();
mpx
->
handle_updates
();
CAF_CHECK_EQUAL
(
mpx
->
num_socket_managers
(),
3u
);
CAF_CHECK_EQUAL
(
mpx
->
num_socket_managers
(),
3u
);
CAF_MESSAGE
(
"resolve actor-proxy"
);
CAF_MESSAGE
(
"resolve actor-proxy"
);
mgr1
->
resolve
(
"/id/42"
,
self
);
mgr1
->
resolve
(
unbox
(
make_uri
(
"test:/id/42"
))
,
self
);
run
();
run
();
self
->
receive
(
self
->
receive
(
[
&
](
resolve_atom
,
const
std
::
string
&
,
const
strong_actor_ptr
&
p
)
{
[
&
](
resolve_atom
,
const
std
::
string
&
,
const
strong_actor_ptr
&
p
)
{
...
...
libcaf_net/test/transport_worker.cpp
View file @
c3d7504e
...
@@ -84,9 +84,9 @@ public:
...
@@ -84,9 +84,9 @@ public:
}
}
template
<
class
Parent
>
template
<
class
Parent
>
void
resolve
(
Parent
&
,
const
std
::
string
&
path
,
actor
listener
)
{
void
resolve
(
Parent
&
,
string_view
path
,
const
actor
&
listener
)
{
res_
->
resolve_path
=
path
;
res_
->
resolve_path
.
assign
(
path
.
begin
(),
path
.
end
())
;
res_
->
resolve_listener
=
std
::
move
(
listener
)
;
res_
->
resolve_listener
=
listener
;
}
}
template
<
class
Parent
>
template
<
class
Parent
>
...
...
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