mirror of https://github.com/grpc/grpc.git
Merge pull request #22017 from vjpai/method_map
Reuse registered call metadata across stubs of the same service on the same channelpull/22183/head
commit
057f2b6139
12 changed files with 209 additions and 38 deletions
@ -0,0 +1,44 @@ |
||||
/*
|
||||
* |
||||
* Copyright 2020 gRPC authors. |
||||
* |
||||
* Licensed under the Apache License, Version 2.0 (the "License"); |
||||
* you may not use this file except in compliance with the License. |
||||
* You may obtain a copy of the License at |
||||
* |
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
* |
||||
* Unless required by applicable law or agreed to in writing, software |
||||
* distributed under the License is distributed on an "AS IS" BASIS, |
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
||||
* See the License for the specific language governing permissions and |
||||
* limitations under the License. |
||||
* |
||||
*/ |
||||
|
||||
#ifndef GRPCPP_TEST_CHANNEL_TEST_PEER_H |
||||
#define GRPCPP_TEST_CHANNEL_TEST_PEER_H |
||||
|
||||
#include <grpcpp/channel.h> |
||||
|
||||
namespace grpc { |
||||
namespace testing { |
||||
|
||||
/// A test-only class to access private members of Channel.
|
||||
class ChannelTestPeer { |
||||
public: |
||||
explicit ChannelTestPeer(Channel* channel) : channel_(channel) {} |
||||
|
||||
/// Provide the gRPC Core channel
|
||||
grpc_channel* channel() const { return channel_->c_channel_; } |
||||
int registered_calls() const; |
||||
int registration_attempts() const; |
||||
|
||||
private: |
||||
Channel* channel_; // not owned
|
||||
}; |
||||
|
||||
} // namespace testing
|
||||
} // namespace grpc
|
||||
|
||||
#endif // GRPCPP_TEST_CHANNEL_TEST_PEER_H
|
@ -0,0 +1,40 @@ |
||||
/*
|
||||
* |
||||
* Copyright 2020 gRPC authors. |
||||
* |
||||
* Licensed under the Apache License, Version 2.0 (the "License"); |
||||
* you may not use this file except in compliance with the License. |
||||
* You may obtain a copy of the License at |
||||
* |
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
* |
||||
* Unless required by applicable law or agreed to in writing, software |
||||
* distributed under the License is distributed on an "AS IS" BASIS, |
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
||||
* See the License for the specific language governing permissions and |
||||
* limitations under the License. |
||||
* |
||||
*/ |
||||
|
||||
#include <grpcpp/test/channel_test_peer.h> |
||||
|
||||
#include <grpc/support/sync.h> |
||||
#include <grpcpp/channel.h> |
||||
|
||||
#include "src/core/lib/surface/channel.h" |
||||
|
||||
namespace grpc { |
||||
namespace testing { |
||||
|
||||
int ChannelTestPeer::registered_calls() const { |
||||
grpc_core::MutexLock lock(&channel_->c_channel_->registration_table->mu); |
||||
return static_cast<int>(channel_->c_channel_->registration_table->map.size()); |
||||
} |
||||
|
||||
int ChannelTestPeer::registration_attempts() const { |
||||
grpc_core::MutexLock lock(&channel_->c_channel_->registration_table->mu); |
||||
return channel_->c_channel_->registration_table->method_registration_attempts; |
||||
} |
||||
|
||||
} // namespace testing
|
||||
} // namespace grpc
|
Loading…
Reference in new issue