1*cc02d7e2SAndroid Build Coastguard Worker // Copyright 2024 gRPC authors.
2*cc02d7e2SAndroid Build Coastguard Worker //
3*cc02d7e2SAndroid Build Coastguard Worker // Licensed under the Apache License, Version 2.0 (the "License");
4*cc02d7e2SAndroid Build Coastguard Worker // you may not use this file except in compliance with the License.
5*cc02d7e2SAndroid Build Coastguard Worker // You may obtain a copy of the License at
6*cc02d7e2SAndroid Build Coastguard Worker //
7*cc02d7e2SAndroid Build Coastguard Worker // http://www.apache.org/licenses/LICENSE-2.0
8*cc02d7e2SAndroid Build Coastguard Worker //
9*cc02d7e2SAndroid Build Coastguard Worker // Unless required by applicable law or agreed to in writing, software
10*cc02d7e2SAndroid Build Coastguard Worker // distributed under the License is distributed on an "AS IS" BASIS,
11*cc02d7e2SAndroid Build Coastguard Worker // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12*cc02d7e2SAndroid Build Coastguard Worker // See the License for the specific language governing permissions and
13*cc02d7e2SAndroid Build Coastguard Worker // limitations under the License.
14*cc02d7e2SAndroid Build Coastguard Worker
15*cc02d7e2SAndroid Build Coastguard Worker #include "src/cpp/ext/chaotic_good.h"
16*cc02d7e2SAndroid Build Coastguard Worker
17*cc02d7e2SAndroid Build Coastguard Worker #include <memory>
18*cc02d7e2SAndroid Build Coastguard Worker
19*cc02d7e2SAndroid Build Coastguard Worker #include <grpc/grpc.h>
20*cc02d7e2SAndroid Build Coastguard Worker
21*cc02d7e2SAndroid Build Coastguard Worker #include "src/core/ext/transport/chaotic_good/client/chaotic_good_connector.h"
22*cc02d7e2SAndroid Build Coastguard Worker #include "src/core/ext/transport/chaotic_good/server/chaotic_good_server.h"
23*cc02d7e2SAndroid Build Coastguard Worker
24*cc02d7e2SAndroid Build Coastguard Worker namespace grpc {
25*cc02d7e2SAndroid Build Coastguard Worker
26*cc02d7e2SAndroid Build Coastguard Worker namespace {
27*cc02d7e2SAndroid Build Coastguard Worker
28*cc02d7e2SAndroid Build Coastguard Worker class ChaoticGoodInsecureChannelCredentialsImpl final
29*cc02d7e2SAndroid Build Coastguard Worker : public ChannelCredentials {
30*cc02d7e2SAndroid Build Coastguard Worker public:
ChaoticGoodInsecureChannelCredentialsImpl()31*cc02d7e2SAndroid Build Coastguard Worker ChaoticGoodInsecureChannelCredentialsImpl() : ChannelCredentials(nullptr) {}
32*cc02d7e2SAndroid Build Coastguard Worker
33*cc02d7e2SAndroid Build Coastguard Worker private:
CreateChannelWithInterceptors(const grpc::string & target,const grpc::ChannelArguments & args,std::vector<std::unique_ptr<experimental::ClientInterceptorFactoryInterface>> interceptor_creators)34*cc02d7e2SAndroid Build Coastguard Worker std::shared_ptr<Channel> CreateChannelWithInterceptors(
35*cc02d7e2SAndroid Build Coastguard Worker const grpc::string& target, const grpc::ChannelArguments& args,
36*cc02d7e2SAndroid Build Coastguard Worker std::vector<
37*cc02d7e2SAndroid Build Coastguard Worker std::unique_ptr<experimental::ClientInterceptorFactoryInterface>>
38*cc02d7e2SAndroid Build Coastguard Worker interceptor_creators) override {
39*cc02d7e2SAndroid Build Coastguard Worker grpc_channel_args channel_args;
40*cc02d7e2SAndroid Build Coastguard Worker args.SetChannelArgs(&channel_args);
41*cc02d7e2SAndroid Build Coastguard Worker auto channel = grpc::CreateChannelInternal(
42*cc02d7e2SAndroid Build Coastguard Worker "", grpc_chaotic_good_channel_create(target.c_str(), &channel_args),
43*cc02d7e2SAndroid Build Coastguard Worker std::move(interceptor_creators));
44*cc02d7e2SAndroid Build Coastguard Worker return channel;
45*cc02d7e2SAndroid Build Coastguard Worker }
46*cc02d7e2SAndroid Build Coastguard Worker };
47*cc02d7e2SAndroid Build Coastguard Worker
48*cc02d7e2SAndroid Build Coastguard Worker class ChaoticGoodInsecureServerCredentialsImpl final
49*cc02d7e2SAndroid Build Coastguard Worker : public ServerCredentials {
50*cc02d7e2SAndroid Build Coastguard Worker public:
ChaoticGoodInsecureServerCredentialsImpl()51*cc02d7e2SAndroid Build Coastguard Worker ChaoticGoodInsecureServerCredentialsImpl() : ServerCredentials(nullptr) {}
52*cc02d7e2SAndroid Build Coastguard Worker
AddPortToServer(const std::string & addr,grpc_server * server)53*cc02d7e2SAndroid Build Coastguard Worker int AddPortToServer(const std::string& addr, grpc_server* server) override {
54*cc02d7e2SAndroid Build Coastguard Worker return grpc_server_add_chaotic_good_port(server, addr.c_str());
55*cc02d7e2SAndroid Build Coastguard Worker }
56*cc02d7e2SAndroid Build Coastguard Worker };
57*cc02d7e2SAndroid Build Coastguard Worker
58*cc02d7e2SAndroid Build Coastguard Worker } // namespace
59*cc02d7e2SAndroid Build Coastguard Worker
ChaoticGoodInsecureChannelCredentials()60*cc02d7e2SAndroid Build Coastguard Worker std::shared_ptr<ChannelCredentials> ChaoticGoodInsecureChannelCredentials() {
61*cc02d7e2SAndroid Build Coastguard Worker return std::make_shared<ChaoticGoodInsecureChannelCredentialsImpl>();
62*cc02d7e2SAndroid Build Coastguard Worker }
63*cc02d7e2SAndroid Build Coastguard Worker
ChaoticGoodInsecureServerCredentials()64*cc02d7e2SAndroid Build Coastguard Worker std::shared_ptr<ServerCredentials> ChaoticGoodInsecureServerCredentials() {
65*cc02d7e2SAndroid Build Coastguard Worker return std::make_shared<ChaoticGoodInsecureServerCredentialsImpl>();
66*cc02d7e2SAndroid Build Coastguard Worker }
67*cc02d7e2SAndroid Build Coastguard Worker
68*cc02d7e2SAndroid Build Coastguard Worker } // namespace grpc
69