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
2ab19718
Commit
2ab19718
authored
Jul 03, 2012
by
Dominik Charousset
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
maintenance
parent
e43e9bf6
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
12 additions
and
84 deletions
+12
-84
cppa/behavior.hpp
cppa/behavior.hpp
+0
-71
cppa/local_actor.hpp
cppa/local_actor.hpp
+12
-13
No files found.
cppa/behavior.hpp
View file @
2ab19718
...
...
@@ -107,77 +107,6 @@ match_expr_convert(const Arg0& arg0, const Args&... args) {
return
{
match_expr_concat
(
arg0
,
args
...)};
}
/*
/ *
* @brief Concatenates a match expression and a timeout specification
* represented by an rvalue behavior object.
* /
template<typename F, typename... Lhs>
behavior operator,(const match_expr<Lhs...>& lhs, timeout_definition<F>&& rhs) {
CPPA_REQUIRE(rhs.get_partial_function().undefined());
rhs.get_partial_function() = lhs;
return std::move(rhs);
}
template<typename Arg0>
behavior bhvr_collapse(Arg0&& arg) {
return {std::forward<Arg0>(arg)};
}
template<typename Arg0, typename Arg1, typename... Args>
behavior bhvr_collapse(Arg0&& arg0, Arg1&& arg1, Args&&... args) {
return bhvr_collapse((std::forward<Arg0>(arg0), std::forward<Arg1>(arg1)),
std::forward<Args>(args)...);
}
template<typename... Args>
typename std::enable_if<
util::disjunction<std::is_same<behavior, Args>...>::value,
behavior
>::type
match_expr_concat(Args&&... args) {
return bhvr_collapse(std::forward<Args>(args)...);
}
template<typename... Args>
typename std::enable_if<
util::disjunction<
std::is_same<
behavior,
typename util::rm_ref<Args>::type
>...
>::value == false,
partial_function
>::type
match_expr_concat(Args&&... args) {
return mexpr_concat_convert(std::forward<Args>(args)...);
}
inline partial_function match_expr_concat(partial_function&& pfun) {
return std::move(pfun);
}
inline behavior match_expr_concat(behavior&& bhvr) {
return std::move(bhvr);
}
namespace detail {
template<typename... Ts>
struct select_bhvr {
static constexpr bool timed =
util::disjunction<std::is_same<behavior, Ts>...>::value;
typedef typename util::if_else_c<timed,
behavior,
util::wrapped<partial_function> >::type
type;
};
} // namespace detail
*/
}
// namespace cppa
#endif // CPPA_BEHAVIOR_HPP
cppa/local_actor.hpp
View file @
2ab19718
...
...
@@ -46,8 +46,11 @@ namespace cppa {
class
scheduler
;
class
local_scheduler
;
struct
discard_behavior_t
{
};
struct
keep_behavior_t
{
};
template
<
bool
DiscardOld
>
struct
behavior_policy
{
static
const
bool
discard_old
=
DiscardOld
;
};
typedef
behavior_policy
<
false
>
keep_behavior
;
typedef
behavior_policy
<
true
>
discard_behavior_t
;
// doxygen doesn't parse anonymous namespaces correctly
#ifndef CPPA_DOCUMENTATION
...
...
@@ -254,17 +257,13 @@ class local_actor : public actor {
/**
* @brief Sets the actor's behavior.
*/
template
<
typename
...
Cases
,
typename
...
Args
>
inline
void
become
(
discard_behavior_t
,
match_expr
<
Cases
...
>&&
arg0
,
Args
&&
...
args
)
{
become
(
discard_behavior
,
match_expr_convert
(
std
::
move
(
arg0
),
std
::
forward
<
Args
>
(
args
)...));
}
/**
* @brief Sets the actor's behavior.
*/
template
<
typename
...
Cases
,
typename
...
Args
>
inline
void
become
(
keep_behavior_t
,
match_expr
<
Cases
...
>&&
arg0
,
Args
&&
...
args
)
{
become
(
keep_behavior
,
match_expr_convert
(
std
::
move
(
arg0
),
std
::
forward
<
Args
>
(
args
)...));
template
<
bool
DiscardOld
,
typename
Arg0
,
typename
Arg1
,
typename
...
Args
>
void
become
(
behavior_policy
<
DiscardOld
>
,
Arg0
&&
arg0
,
Arg1
&&
arg1
,
Args
&&
...
args
)
{
do_become
(
match_expr_convert
(
std
::
forward
<
Arg0
>
(
arg0
),
std
::
forward
<
Arg1
>
(
arg1
),
std
::
forward
<
Args
>
(
args
)...),
DiscardOld
);
}
/**
...
...
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