grpc
src
core
ext
filters
client_channel
local_subchannel_pool.h
Go to the documentation of this file.
1
/*
2
*
3
* Copyright 2018 gRPC authors.
4
*
5
* Licensed under the Apache License, Version 2.0 (the "License");
6
* you may not use this file except in compliance with the License.
7
* You may obtain a copy of the License at
8
*
9
* http://www.apache.org/licenses/LICENSE-2.0
10
*
11
* Unless required by applicable law or agreed to in writing, software
12
* distributed under the License is distributed on an "AS IS" BASIS,
13
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
* See the License for the specific language governing permissions and
15
* limitations under the License.
16
*
17
*/
18
19
#ifndef GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_LOCAL_SUBCHANNEL_POOL_H
20
#define GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_LOCAL_SUBCHANNEL_POOL_H
21
22
#include <
grpc/support/port_platform.h
>
23
24
#include <map>
25
26
#include "
src/core/ext/filters/client_channel/subchannel_pool_interface.h
"
27
#include "
src/core/lib/gprpp/ref_counted_ptr.h
"
28
29
namespace
grpc_core
{
30
31
// The local subchannel pool that is owned by a single channel. It doesn't
32
// support subchannel sharing with other channels by nature. Nor does it support
33
// subchannel retention when a subchannel is not used. The only real purpose of
34
// using this subchannel pool is to allow subchannel reuse within the channel
35
// when an incoming resolver update contains some addresses for which the
36
// channel has already created subchannels.
37
// Thread-unsafe.
38
class
LocalSubchannelPool
final :
public
SubchannelPoolInterface
{
39
public
:
40
LocalSubchannelPool
() {}
41
~LocalSubchannelPool
()
override
{}
42
43
// Implements interface methods.
44
// Thread-unsafe. Intended to be invoked within the client_channel work
45
// serializer.
46
RefCountedPtr<Subchannel>
RegisterSubchannel
(
47
const
SubchannelKey
&
key
,
RefCountedPtr<Subchannel>
constructed)
override
;
48
void
UnregisterSubchannel
(
const
SubchannelKey
&
key
,
49
Subchannel
*
subchannel
)
override
;
50
RefCountedPtr<Subchannel>
FindSubchannel
(
const
SubchannelKey
&
key
)
override
;
51
52
private
:
53
// A map from subchannel key to subchannel.
54
std::map<SubchannelKey, Subchannel*>
subchannel_map_
;
55
};
56
57
}
// namespace grpc_core
58
59
#endif
/* GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_LOCAL_SUBCHANNEL_POOL_H */
grpc_core
Definition:
call_metric_recorder.h:31
grpc_core::LocalSubchannelPool
Definition:
local_subchannel_pool.h:38
subchannel
RingHashSubchannelData * subchannel
Definition:
ring_hash.cc:285
subchannel_pool_interface.h
grpc_core::LocalSubchannelPool::~LocalSubchannelPool
~LocalSubchannelPool() override
Definition:
local_subchannel_pool.h:41
grpc_core::LocalSubchannelPool::RegisterSubchannel
RefCountedPtr< Subchannel > RegisterSubchannel(const SubchannelKey &key, RefCountedPtr< Subchannel > constructed) override
Definition:
local_subchannel_pool.cc:31
grpc_core::RefCountedPtr
Definition:
ref_counted_ptr.h:35
grpc_core::LocalSubchannelPool::FindSubchannel
RefCountedPtr< Subchannel > FindSubchannel(const SubchannelKey &key) override
Definition:
local_subchannel_pool.cc:53
grpc_core::LocalSubchannelPool::LocalSubchannelPool
LocalSubchannelPool()
Definition:
local_subchannel_pool.h:40
grpc_core::SubchannelKey
Definition:
subchannel_pool_interface.h:40
grpc_core::Subchannel
Definition:
subchannel.h:166
key
const char * key
Definition:
hpack_parser_table.cc:164
grpc_core::SubchannelPoolInterface
Definition:
subchannel_pool_interface.h:76
grpc_core::LocalSubchannelPool::UnregisterSubchannel
void UnregisterSubchannel(const SubchannelKey &key, Subchannel *subchannel) override
Definition:
local_subchannel_pool.cc:42
ref_counted_ptr.h
grpc_core::LocalSubchannelPool::subchannel_map_
std::map< SubchannelKey, Subchannel * > subchannel_map_
Definition:
local_subchannel_pool.h:54
port_platform.h
grpc
Author(s):
autogenerated on Fri May 16 2025 02:59:16