GRPC Core  18.0.0
socket_mutator.h
Go to the documentation of this file.
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 GRPC_CORE_LIB_IOMGR_SOCKET_MUTATOR_H
20 #define GRPC_CORE_LIB_IOMGR_SOCKET_MUTATOR_H
21 
23 
25 #include <grpc/support/sync.h>
26 
27 #include <stdbool.h>
28 
30 typedef enum {
38 
40 typedef struct {
42  int fd;
46 
50  bool (*mutate_fd)(int fd, grpc_socket_mutator* mutator);
54  void (*destroy)(grpc_socket_mutator* mutator);
57  bool (*mutate_fd_2)(const grpc_mutate_socket_info* info,
58  grpc_socket_mutator* mutator);
59 };
60 
65 };
66 
69  const grpc_socket_mutator_vtable* vtable);
70 
73 
76  grpc_fd_usage usage);
77 
80 
83 
84 #endif /* GRPC_CORE_LIB_IOMGR_SOCKET_MUTATOR_H */
void grpc_socket_mutator_unref(grpc_socket_mutator *mutator)
Definition: socket_mutator.cc:71
grpc_fd_usage
How is an fd to be used?
Definition: socket_mutator.h:30
@ GRPC_FD_SERVER_LISTENER_USAGE
Used for server listening.
Definition: socket_mutator.h:34
@ GRPC_FD_SERVER_CONNECTION_USAGE
Used for server connection.
Definition: socket_mutator.h:36
@ GRPC_FD_CLIENT_CONNECTION_USAGE
Used for client connection.
Definition: socket_mutator.h:32
grpc_socket_mutator * grpc_socket_mutator_ref(grpc_socket_mutator *mutator)
Definition: socket_mutator.cc:36
bool grpc_socket_mutator_mutate_fd(grpc_socket_mutator *mutator, int fd, grpc_fd_usage usage)
Perform the file descriptor mutation operation of mutator on fd.
Definition: socket_mutator.cc:41
void grpc_socket_mutator_init(grpc_socket_mutator *mutator, const grpc_socket_mutator_vtable *vtable)
called by concrete implementations to initialize the base struct
Definition: socket_mutator.cc:30
grpc_arg grpc_socket_mutator_to_arg(grpc_socket_mutator *mutator)
Wrap mutator as a grpc_arg.
Definition: socket_mutator.cc:93
int grpc_socket_mutator_compare(grpc_socket_mutator *a, grpc_socket_mutator *b)
Compare if a and b are the same mutator or have same settings.
Definition: socket_mutator.cc:57
Definition: sync_generic.h:36
A single argument...
Definition: grpc_types.h:103
Information about an fd to mutate.
Definition: socket_mutator.h:40
int fd
File descriptor to mutate.
Definition: socket_mutator.h:42
grpc_fd_usage usage
How the fd will be used.
Definition: socket_mutator.h:44
The virtual table of grpc_socket_mutator.
Definition: socket_mutator.h:48
void(* destroy)(grpc_socket_mutator *mutator)
Destroys the socket mutator instance.
Definition: socket_mutator.h:54
bool(* mutate_fd)(int fd, grpc_socket_mutator *mutator)
Mutates the socket options of fd – deprecated, prefer mutate_fd_2.
Definition: socket_mutator.h:50
int(* compare)(grpc_socket_mutator *a, grpc_socket_mutator *b)
Compare socket mutator a and b.
Definition: socket_mutator.h:52
bool(* mutate_fd_2)(const grpc_mutate_socket_info *info, grpc_socket_mutator *mutator)
Mutates the socket options of the fd in info - if set takes preference to mutate_fd.
Definition: socket_mutator.h:57
The Socket Mutator interface allows changes on socket options.
Definition: socket_mutator.h:62
gpr_refcount refcount
Definition: socket_mutator.h:64
const grpc_socket_mutator_vtable * vtable
Definition: socket_mutator.h:63