xref: /aosp_15_r20/external/grpc-grpc/include/grpc/grpc_posix.h (revision cc02d7e222339f7a4f6ba5f422e6413f4bd931f2)
1 /*
2  *
3  * Copyright 2016 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_GRPC_POSIX_H
20 #define GRPC_GRPC_POSIX_H
21 
22 #include <stddef.h>
23 
24 #include <grpc/grpc.h>
25 #include <grpc/impl/grpc_types.h>
26 #include <grpc/support/port_platform.h>
27 
28 #ifdef __cplusplus
29 extern "C" {
30 #endif
31 
32 /*! \mainpage GRPC Core POSIX
33  *
34  * The GRPC Core POSIX library provides some POSIX-specific low-level
35  * functionality on top of GRPC Core.
36  */
37 
38 /** Create a secure channel to 'target' using file descriptor 'fd' and passed-in
39     credentials. The 'target' argument will be used to indicate the name for
40     this channel. Note that this API currently only supports insecure channel
41     credentials. Using other types of credentials will result in a failure. */
42 GRPCAPI grpc_channel* grpc_channel_create_from_fd(
43     const char* target, int fd, grpc_channel_credentials* creds,
44     const grpc_channel_args* args);
45 
46 /** Add the connected secure communication channel based on file descriptor 'fd'
47    to the 'server' and server credentials 'creds'. The 'fd' must be an open file
48    descriptor corresponding to a connected socket. Events from the file
49    descriptor may come on any of the server completion queues (i.e completion
50    queues registered via the grpc_server_register_completion_queue API).
51    Note that this API currently only supports inseure server credentials
52    Using other types of credentials will result in a failure.
53    TODO(hork): add channel_args to this API to allow endpoints and transports
54    created in this function to participate in the resource quota feature. */
55 GRPCAPI void grpc_server_add_channel_from_fd(grpc_server* server, int fd,
56                                              grpc_server_credentials* creds);
57 
58 #ifdef __cplusplus
59 }
60 #endif
61 
62 #endif /* GRPC_GRPC_POSIX_H */
63