Commit f28c81ee authored by Michael Liu's avatar Michael Liu Committed by Facebook Github Bot

Overload getKeepAliveToken

Summary: getKeepAlive can get a KeepAlive object and return a copy of itself

Reviewed By: yfeldblum

Differential Revision: D14095402

fbshipit-source-id: 9d00ebecddc938e8cf02bcb7cee0642a666db349
parent 1feb410b
...@@ -243,4 +243,10 @@ Executor::KeepAlive<ExecutorT> getKeepAliveToken(ExecutorT& executor) { ...@@ -243,4 +243,10 @@ Executor::KeepAlive<ExecutorT> getKeepAliveToken(ExecutorT& executor) {
return getKeepAliveToken(&executor); return getKeepAliveToken(&executor);
} }
template <typename ExecutorT>
Executor::KeepAlive<ExecutorT> getKeepAliveToken(
Executor::KeepAlive<ExecutorT>& ka) {
return ka.copy();
}
} // namespace folly } // namespace folly
...@@ -196,4 +196,23 @@ TEST(ExecutorTest, KeepAliveCopy) { ...@@ -196,4 +196,23 @@ TEST(ExecutorTest, KeepAliveCopy) {
EXPECT_EQ(0, exec.refCount); EXPECT_EQ(0, exec.refCount);
} }
TEST(ExecutorTest, GetKeepAliveTokenFromToken) {
KeepAliveTestExecutor exec;
{
auto ka = getKeepAliveToken(exec);
EXPECT_TRUE(ka);
EXPECT_EQ(&exec, ka.get());
EXPECT_EQ(1, exec.refCount);
auto ka2 = getKeepAliveToken(ka);
EXPECT_TRUE(ka);
EXPECT_TRUE(ka2);
EXPECT_EQ(&exec, ka2.get());
EXPECT_EQ(2, exec.refCount);
}
EXPECT_EQ(0, exec.refCount);
}
} // namespace folly } // namespace folly
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment