1 //
2 //
3 // Copyright 2020 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 #include <grpc/support/port_platform.h>
20 
21 #include "src/core/lib/security/certificate_provider/certificate_provider_registry.h"
22 
23 #include <string>
24 #include <utility>
25 
26 #include <grpc/support/log.h>
27 
28 namespace grpc_core {
29 
RegisterCertificateProviderFactory(std::unique_ptr<CertificateProviderFactory> factory)30 void CertificateProviderRegistry::Builder::RegisterCertificateProviderFactory(
31     std::unique_ptr<CertificateProviderFactory> factory) {
32   absl::string_view name = factory->name();
33   gpr_log(GPR_DEBUG, "registering certificate provider factory for \"%s\"",
34           std::string(name).c_str());
35   GPR_ASSERT(factories_.emplace(name, std::move(factory)).second);
36 }
37 
Build()38 CertificateProviderRegistry CertificateProviderRegistry::Builder::Build() {
39   return CertificateProviderRegistry(std::move(factories_));
40 }
41 
42 CertificateProviderFactory*
LookupCertificateProviderFactory(absl::string_view name) const43 CertificateProviderRegistry::LookupCertificateProviderFactory(
44     absl::string_view name) const {
45   auto it = factories_.find(name);
46   if (it == factories_.end()) return nullptr;
47   return it->second.get();
48 }
49 
50 }  // namespace grpc_core
51