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 <grpc/support/port_platform.h>
23 
24 #include <stddef.h>
25 
26 #include <grpc/impl/codegen/grpc_types.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 client channel to 'target' using file descriptor 'fd'. The 'target'
39     argument will be used to indicate the name for this channel. See the comment
40     for grpc_insecure_channel_create for description of 'args' argument. */
41 GRPCAPI grpc_channel* grpc_insecure_channel_create_from_fd(
42     const char* target, int fd, const grpc_channel_args* args);
43 
44 /** Add the connected communication channel based on file descriptor 'fd' to the
45     'server'. The 'fd' must be an open file descriptor corresponding to a
46     connected socket. Events from the file descriptor may come on any of the
47     server completion queues (i.e completion queues registered via the
48     grpc_server_register_completion_queue API).
49 
50     The 'reserved' pointer MUST be NULL.
51 
52     TODO(hork): add channel_args to this API to allow endpoints and transports
53     created in this function to participate in the resource quota feature.
54     */
55 GRPCAPI void grpc_server_add_insecure_channel_from_fd(grpc_server* server,
56                                                       void* reserved, int fd);
57 
58 #ifdef __cplusplus
59 }
60 #endif
61 
62 #endif /* GRPC_GRPC_POSIX_H */
63