GRPC C++  1.0.0
grpc_library.h
Go to the documentation of this file.
1 /*
2  *
3  * Copyright 2015, Google Inc.
4  * All rights reserved.
5  *
6  * Redistribution and use in source and binary forms, with or without
7  * modification, are permitted provided that the following conditions are
8  * met:
9  *
10  * * Redistributions of source code must retain the above copyright
11  * notice, this list of conditions and the following disclaimer.
12  * * Redistributions in binary form must reproduce the above
13  * copyright notice, this list of conditions and the following disclaimer
14  * in the documentation and/or other materials provided with the
15  * distribution.
16  * * Neither the name of Google Inc. nor the names of its
17  * contributors may be used to endorse or promote products derived from
18  * this software without specific prior written permission.
19  *
20  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
21  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
22  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
23  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
24  * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
25  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
26  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
27  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
28  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
29  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
30  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31  *
32  */
33 
34 #ifndef GRPCXX_IMPL_GRPC_LIBRARY_H
35 #define GRPCXX_IMPL_GRPC_LIBRARY_H
36 
37 #include <iostream>
38 
42 #include <grpc/grpc.h>
43 
44 namespace grpc {
45 
46 namespace internal {
48  public:
51 };
52 
53 static GrpcLibrary g_gli;
54 static CoreCodegen g_core_codegen;
55 
58  public:
60  if (grpc::g_glip == nullptr) {
61  grpc::g_glip = &g_gli;
62  }
63  if (grpc::g_core_codegen_interface == nullptr) {
64  grpc::g_core_codegen_interface = &g_core_codegen;
65  }
66  }
67 
70  int summon() { return 0; }
71 };
72 
73 } // namespace internal
74 } // namespace grpc
75 
76 #endif // GRPCXX_IMPL_GRPC_LIBRARY_H
int summon()
A no-op method to force the linker to reference this class, which will take care of initializing and ...
Definition: grpc_library.h:70
GrpcLibraryInterface * g_glip
Initialized by grpc::GrpcLibraryInitializer from <grpc++/impl/grpc_library.h>
void shutdown() GRPC_OVERRIDE
Definition: grpc_library.h:50
void init() GRPC_OVERRIDE
Definition: grpc_library.h:49
Definition: grpc_library.h:47
Definition: grpc_library.h:42
Definition: alarm.h:48
CoreCodegenInterface * g_core_codegen_interface
Definition: call.h:62
GRPCAPI void grpc_init(void)
Initialize the grpc library.
GRPCAPI void grpc_shutdown(void)
Shut down the grpc library.
Instantiating this class ensures the proper initialization of gRPC.
Definition: grpc_library.h:57
#define GRPC_FINAL
Definition: config.h:72
GrpcLibraryInitializer()
Definition: grpc_library.h:59
Implementation of the core codegen interface.
Definition: core_codegen.h:43
#define GRPC_OVERRIDE
Definition: config.h:78