Commit 017ba9c3 authored by Andrew Smith's avatar Andrew Smith Committed by Facebook GitHub Bot

Change MergeChannel template parameter names

Summary: This diff changes MergeChannel's template parameter names to adhere to folly's style guidelines. It also reverses the order of the template parameters, as it conceptually makes more sense when the key parameter precedes the value parameter.

Reviewed By: Gownta

Differential Revision: D33033369

fbshipit-source-id: 0b31d18baa26778ba9e8d17b9419cb180b1939d9
parent e1e39232
...@@ -23,15 +23,15 @@ namespace folly { ...@@ -23,15 +23,15 @@ namespace folly {
namespace channels { namespace channels {
namespace detail { namespace detail {
template <typename TValue, typename TSubscriptionId> template <typename KeyType, typename ValueType>
class IMergeChannelProcessor; class IMergeChannelProcessor;
} }
/** /**
* A merge channel allows one to merge multiple receivers into a single output * A merge channel allows one to merge multiple receivers into a single output
* receiver. The set of receivers being merged can be changed at runtime. Each * receiver. The set of receivers being merged can be changed at runtime. Each
* receiver is added with a subscription ID, that can be used to remove the * receiver is added with a key that can be used to remove the receiver at a
* receiver at a later point. * later point.
* *
* Example: * Example:
* *
...@@ -42,19 +42,19 @@ class IMergeChannelProcessor; ...@@ -42,19 +42,19 @@ class IMergeChannelProcessor;
* folly::Executor::KeepAlive<folly::SequencedExecutor> getExecutor(); * folly::Executor::KeepAlive<folly::SequencedExecutor> getExecutor();
* *
* auto [outputReceiver, mergeChannel] * auto [outputReceiver, mergeChannel]
* = createMergeChannel<int, std::string>(getExecutor()); * = createMergeChannel<std::string, int>(getExecutor());
* mergeChannel.addNewReceiver("abc", subscribe("abc")); * mergeChannel.addNewReceiver("abc", subscribe("abc"));
* mergeChannel.addNewReceiver("def", subscribe("def")); * mergeChannel.addNewReceiver("def", subscribe("def"));
* mergeChannel.removeReceiver("abc"); * mergeChannel.removeReceiver("abc");
* std::move(mergeChannel).close(); * std::move(mergeChannel).close();
*/ */
template <typename TValue, typename TSubscriptionId> template <typename KeyType, typename ValueType>
class MergeChannel { class MergeChannel {
using TProcessor = detail::IMergeChannelProcessor<TValue, TSubscriptionId>; using TProcessor = detail::IMergeChannelProcessor<KeyType, ValueType>;
public: public:
explicit MergeChannel( explicit MergeChannel(
detail::IMergeChannelProcessor<TValue, TSubscriptionId>* processor); detail::IMergeChannelProcessor<KeyType, ValueType>* processor);
MergeChannel(MergeChannel&& other) noexcept; MergeChannel(MergeChannel&& other) noexcept;
MergeChannel& operator=(MergeChannel&& other) noexcept; MergeChannel& operator=(MergeChannel&& other) noexcept;
~MergeChannel(); ~MergeChannel();
...@@ -65,21 +65,21 @@ class MergeChannel { ...@@ -65,21 +65,21 @@ class MergeChannel {
explicit operator bool() const; explicit operator bool() const;
/** /**
* Adds a new receiver to be merged, along with a given subscription ID. If * Adds a new receiver to be merged, along with a given key. If the key
* the subscription ID matches the ID of an existing receiver, that existing * matches the key of an existing receiver, that existing receiver is replaced
* receiver is replaced with the new one (and changes to the old receiver will * with the new one (and updates from the old receiver will no longer be
* no longer be merged). An added receiver can later be removed by passing the * merged). An added receiver can later be removed by passing the same key to
* subscription ID to removeReceiver. * removeReceiver.
*/ */
template <typename TReceiver> template <typename TReceiver>
void addNewReceiver(TSubscriptionId subscriptionId, TReceiver receiver); void addNewReceiver(KeyType key, TReceiver receiver);
/** /**
* Removes the receiver added with the given subscription ID. The receiver * Removes the receiver added with the given key. The receiver will be
* will be asynchronously removed, so the consumer may still receive some * asynchronously removed, so the consumer may still receive some values from
* values from this receiver after this call. * this receiver after this call.
*/ */
void removeReceiver(TSubscriptionId subscriptionId); void removeReceiver(KeyType key);
/** /**
* Closes the merge channel. * Closes the merge channel.
...@@ -95,8 +95,8 @@ class MergeChannel { ...@@ -95,8 +95,8 @@ class MergeChannel {
* *
* @param executor: The SequencedExecutor to use for merging values. * @param executor: The SequencedExecutor to use for merging values.
*/ */
template <typename TValue, typename TSubscriptionId> template <typename KeyType, typename ValueType>
std::pair<Receiver<TValue>, MergeChannel<TValue, TSubscriptionId>> std::pair<Receiver<ValueType>, MergeChannel<KeyType, ValueType>>
createMergeChannel( createMergeChannel(
folly::Executor::KeepAlive<folly::SequencedExecutor> executor); folly::Executor::KeepAlive<folly::SequencedExecutor> executor);
} // namespace channels } // namespace channels
......
...@@ -54,7 +54,7 @@ TEST_F(MergeChannelFixture, ReceiveValues_ReturnMergedValues) { ...@@ -54,7 +54,7 @@ TEST_F(MergeChannelFixture, ReceiveValues_ReturnMergedValues) {
auto [receiver2, sender2] = Channel<int>::create(); auto [receiver2, sender2] = Channel<int>::create();
auto [receiver3, sender3] = Channel<int>::create(); auto [receiver3, sender3] = Channel<int>::create();
auto [mergedReceiver, mergeChannel] = auto [mergedReceiver, mergeChannel] =
createMergeChannel<int, std::string>(&executor_); createMergeChannel<std::string, int>(&executor_);
mergeChannel.addNewReceiver("sub1", std::move(receiver1)); mergeChannel.addNewReceiver("sub1", std::move(receiver1));
mergeChannel.addNewReceiver("sub2", std::move(receiver2)); mergeChannel.addNewReceiver("sub2", std::move(receiver2));
...@@ -91,7 +91,7 @@ TEST_F( ...@@ -91,7 +91,7 @@ TEST_F(
auto [receiver2a, sender2a] = Channel<int>::create(); auto [receiver2a, sender2a] = Channel<int>::create();
auto [receiver2b, sender2b] = Channel<int>::create(); auto [receiver2b, sender2b] = Channel<int>::create();
auto [mergedReceiver, mergeChannel] = auto [mergedReceiver, mergeChannel] =
createMergeChannel<int, std::string>(&executor_); createMergeChannel<std::string, int>(&executor_);
mergeChannel.addNewReceiver("sub1", std::move(receiver1)); mergeChannel.addNewReceiver("sub1", std::move(receiver1));
mergeChannel.addNewReceiver("sub2", std::move(receiver2a)); mergeChannel.addNewReceiver("sub2", std::move(receiver2a));
...@@ -127,7 +127,7 @@ TEST_F( ...@@ -127,7 +127,7 @@ TEST_F(
auto [receiver2a, sender2a] = Channel<int>::create(); auto [receiver2a, sender2a] = Channel<int>::create();
auto [receiver2b, sender2b] = Channel<int>::create(); auto [receiver2b, sender2b] = Channel<int>::create();
auto [mergedReceiver, mergeChannel] = auto [mergedReceiver, mergeChannel] =
createMergeChannel<int, std::string>(&executor_); createMergeChannel<std::string, int>(&executor_);
mergeChannel.addNewReceiver("sub1", std::move(receiver1)); mergeChannel.addNewReceiver("sub1", std::move(receiver1));
mergeChannel.addNewReceiver("sub2", std::move(receiver2a)); mergeChannel.addNewReceiver("sub2", std::move(receiver2a));
...@@ -163,7 +163,7 @@ TEST_F(MergeChannelFixture, ReceiveValues_RemoveReceiver) { ...@@ -163,7 +163,7 @@ TEST_F(MergeChannelFixture, ReceiveValues_RemoveReceiver) {
auto [receiver1, sender1] = Channel<int>::create(); auto [receiver1, sender1] = Channel<int>::create();
auto [receiver2, sender2] = Channel<int>::create(); auto [receiver2, sender2] = Channel<int>::create();
auto [mergedReceiver, mergeChannel] = auto [mergedReceiver, mergeChannel] =
createMergeChannel<int, std::string>(&executor_); createMergeChannel<std::string, int>(&executor_);
mergeChannel.addNewReceiver("sub1", std::move(receiver1)); mergeChannel.addNewReceiver("sub1", std::move(receiver1));
mergeChannel.addNewReceiver("sub2", std::move(receiver2)); mergeChannel.addNewReceiver("sub2", std::move(receiver2));
...@@ -194,7 +194,7 @@ TEST_F(MergeChannelFixture, ReceiveValues_RemoveReceiver_AfterClose) { ...@@ -194,7 +194,7 @@ TEST_F(MergeChannelFixture, ReceiveValues_RemoveReceiver_AfterClose) {
auto [receiver1, sender1] = Channel<int>::create(); auto [receiver1, sender1] = Channel<int>::create();
auto [receiver2, sender2] = Channel<int>::create(); auto [receiver2, sender2] = Channel<int>::create();
auto [mergedReceiver, mergeChannel] = auto [mergedReceiver, mergeChannel] =
createMergeChannel<int, std::string>(&executor_); createMergeChannel<std::string, int>(&executor_);
mergeChannel.addNewReceiver("sub1", std::move(receiver1)); mergeChannel.addNewReceiver("sub1", std::move(receiver1));
mergeChannel.addNewReceiver("sub2", std::move(receiver2)); mergeChannel.addNewReceiver("sub2", std::move(receiver2));
...@@ -227,7 +227,7 @@ TEST_F(MergeChannelFixture, OneInputClosed_ContinuesMerging) { ...@@ -227,7 +227,7 @@ TEST_F(MergeChannelFixture, OneInputClosed_ContinuesMerging) {
auto [receiver2, sender2] = Channel<int>::create(); auto [receiver2, sender2] = Channel<int>::create();
auto [receiver3, sender3] = Channel<int>::create(); auto [receiver3, sender3] = Channel<int>::create();
auto [mergedReceiver, mergeChannel] = auto [mergedReceiver, mergeChannel] =
createMergeChannel<int, std::string>(&executor_); createMergeChannel<std::string, int>(&executor_);
mergeChannel.addNewReceiver("sub1", std::move(receiver1)); mergeChannel.addNewReceiver("sub1", std::move(receiver1));
mergeChannel.addNewReceiver("sub2", std::move(receiver2)); mergeChannel.addNewReceiver("sub2", std::move(receiver2));
...@@ -266,7 +266,7 @@ TEST_F(MergeChannelFixture, OneInputThrows_OutputClosedWithException) { ...@@ -266,7 +266,7 @@ TEST_F(MergeChannelFixture, OneInputThrows_OutputClosedWithException) {
auto [receiver2, sender2] = Channel<int>::create(); auto [receiver2, sender2] = Channel<int>::create();
auto [receiver3, sender3] = Channel<int>::create(); auto [receiver3, sender3] = Channel<int>::create();
auto [mergedReceiver, mergeChannel] = auto [mergedReceiver, mergeChannel] =
createMergeChannel<int, std::string>(&executor_); createMergeChannel<std::string, int>(&executor_);
mergeChannel.addNewReceiver("sub1", std::move(receiver1)); mergeChannel.addNewReceiver("sub1", std::move(receiver1));
mergeChannel.addNewReceiver("sub2", std::move(receiver2)); mergeChannel.addNewReceiver("sub2", std::move(receiver2));
...@@ -298,7 +298,7 @@ TEST_F(MergeChannelFixture, Cancelled) { ...@@ -298,7 +298,7 @@ TEST_F(MergeChannelFixture, Cancelled) {
auto [receiver2, sender2] = Channel<int>::create(); auto [receiver2, sender2] = Channel<int>::create();
auto [receiver3, sender3] = Channel<int>::create(); auto [receiver3, sender3] = Channel<int>::create();
auto [mergedReceiver, mergeChannel] = auto [mergedReceiver, mergeChannel] =
createMergeChannel<int, std::string>(&executor_); createMergeChannel<std::string, int>(&executor_);
mergeChannel.addNewReceiver("sub1", std::move(receiver1)); mergeChannel.addNewReceiver("sub1", std::move(receiver1));
mergeChannel.addNewReceiver("sub2", std::move(receiver2)); mergeChannel.addNewReceiver("sub2", std::move(receiver2));
...@@ -372,7 +372,7 @@ class MergeChannelFixtureStress : public Test { ...@@ -372,7 +372,7 @@ class MergeChannelFixtureStress : public Test {
TEST_F(MergeChannelFixtureStress, HandleClosed) { TEST_F(MergeChannelFixtureStress, HandleClosed) {
folly::CPUThreadPoolExecutor mergeChannelExecutor(1); folly::CPUThreadPoolExecutor mergeChannelExecutor(1);
auto [mergeReceiver, mergeChannel] = createMergeChannel<ProducedValue, int>( auto [mergeReceiver, mergeChannel] = createMergeChannel<int, ProducedValue>(
folly::SerialExecutor::create(&mergeChannelExecutor)); folly::SerialExecutor::create(&mergeChannelExecutor));
consumer_->startConsuming(std::move(mergeReceiver)); consumer_->startConsuming(std::move(mergeReceiver));
...@@ -398,7 +398,7 @@ TEST_F(MergeChannelFixtureStress, HandleClosed) { ...@@ -398,7 +398,7 @@ TEST_F(MergeChannelFixtureStress, HandleClosed) {
TEST_F(MergeChannelFixtureStress, InputChannelReceivesException) { TEST_F(MergeChannelFixtureStress, InputChannelReceivesException) {
folly::CPUThreadPoolExecutor mergeChannelExecutor(1); folly::CPUThreadPoolExecutor mergeChannelExecutor(1);
auto [mergeReceiver, mergeChannel] = createMergeChannel<ProducedValue, int>( auto [mergeReceiver, mergeChannel] = createMergeChannel<int, ProducedValue>(
folly::SerialExecutor::create(&mergeChannelExecutor)); folly::SerialExecutor::create(&mergeChannelExecutor));
consumer_->startConsuming(std::move(mergeReceiver)); consumer_->startConsuming(std::move(mergeReceiver));
...@@ -432,7 +432,7 @@ TEST_F(MergeChannelFixtureStress, InputChannelReceivesException) { ...@@ -432,7 +432,7 @@ TEST_F(MergeChannelFixtureStress, InputChannelReceivesException) {
TEST_F(MergeChannelFixtureStress, Cancelled) { TEST_F(MergeChannelFixtureStress, Cancelled) {
folly::CPUThreadPoolExecutor mergeChannelExecutor(1); folly::CPUThreadPoolExecutor mergeChannelExecutor(1);
auto [mergeReceiver, mergeChannel] = createMergeChannel<ProducedValue, int>( auto [mergeReceiver, mergeChannel] = createMergeChannel<int, ProducedValue>(
folly::SerialExecutor::create(&mergeChannelExecutor)); folly::SerialExecutor::create(&mergeChannelExecutor));
consumer_->startConsuming(std::move(mergeReceiver)); consumer_->startConsuming(std::move(mergeReceiver));
...@@ -458,7 +458,7 @@ TEST_F(MergeChannelFixtureStress, Cancelled) { ...@@ -458,7 +458,7 @@ TEST_F(MergeChannelFixtureStress, Cancelled) {
TEST_F(MergeChannelFixtureStress, Cancelled_ThenHandleClosedImmediately) { TEST_F(MergeChannelFixtureStress, Cancelled_ThenHandleClosedImmediately) {
folly::CPUThreadPoolExecutor mergeChannelExecutor(1); folly::CPUThreadPoolExecutor mergeChannelExecutor(1);
auto [mergeReceiver, mergeChannel] = createMergeChannel<ProducedValue, int>( auto [mergeReceiver, mergeChannel] = createMergeChannel<int, ProducedValue>(
folly::SerialExecutor::create(&mergeChannelExecutor)); folly::SerialExecutor::create(&mergeChannelExecutor));
consumer_->startConsuming(std::move(mergeReceiver)); consumer_->startConsuming(std::move(mergeReceiver));
...@@ -487,7 +487,7 @@ TEST_F(MergeChannelFixtureStress, Cancelled_ThenHandleClosedImmediately) { ...@@ -487,7 +487,7 @@ TEST_F(MergeChannelFixtureStress, Cancelled_ThenHandleClosedImmediately) {
TEST_F(MergeChannelFixtureStress, HandleClosed_ThenCancelledImmediately) { TEST_F(MergeChannelFixtureStress, HandleClosed_ThenCancelledImmediately) {
folly::CPUThreadPoolExecutor mergeChannelExecutor(1); folly::CPUThreadPoolExecutor mergeChannelExecutor(1);
auto [mergeReceiver, mergeChannel] = createMergeChannel<ProducedValue, int>( auto [mergeReceiver, mergeChannel] = createMergeChannel<int, ProducedValue>(
folly::SerialExecutor::create(&mergeChannelExecutor)); folly::SerialExecutor::create(&mergeChannelExecutor));
consumer_->startConsuming(std::move(mergeReceiver)); consumer_->startConsuming(std::move(mergeReceiver));
......
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