[core] implement ask pattern in actor

This commit is contained in:
Ivo van Dongen
2017-07-20 19:17:49 +03:00
committed by Ivo van Dongen
parent 3364992be9
commit a9ac314a5d
3 changed files with 70 additions and 0 deletions

View File

@@ -281,3 +281,27 @@ TEST(Actor, NonConcurrentMailbox) {
test.invoke(&Test::end);
endedFuture.wait();
}
TEST(Actor, Ask) {
// Asking for a result
struct Test {
Test(ActorRef<Test>) {}
int doubleIt(int i) {
return i * 2;
}
};
ThreadPool pool { 2 };
Actor<Test> test(pool);
auto result = test.ask(&Test::doubleIt, 1);
ASSERT_TRUE(result.valid());
auto status = result.wait_for(std::chrono::seconds(1));
ASSERT_EQ(std::future_status::ready, status);
ASSERT_EQ(2, result.get());
}