1 // 2 // 3 // Copyright 2015 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 GRPCPP_IMPL_GRPC_LIBRARY_H 20 #define GRPCPP_IMPL_GRPC_LIBRARY_H 21 22 #include <iostream> 23 24 #include <grpc/grpc.h> 25 #include <grpcpp/impl/codegen/config.h> 26 27 namespace grpc { 28 29 namespace internal { 30 31 /// Classes that require gRPC to be initialized should inherit from this class. 32 class GrpcLibrary { 33 public: grpc_init_called_(false)34 explicit GrpcLibrary(bool call_grpc_init = true) : grpc_init_called_(false) { 35 if (call_grpc_init) { 36 grpc_init(); 37 grpc_init_called_ = true; 38 } 39 } ~GrpcLibrary()40 virtual ~GrpcLibrary() { 41 if (grpc_init_called_) { 42 grpc_shutdown(); 43 } 44 } 45 46 private: 47 bool grpc_init_called_; 48 }; 49 50 } // namespace internal 51 } // namespace grpc 52 53 #endif // GRPCPP_IMPL_GRPC_LIBRARY_H 54