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_TCP_POSIX_H 20 #define GRPC_CORE_LIB_IOMGR_TCP_POSIX_H 21 /* 22 Low level TCP "bottom half" implementation, for use by transports built on 23 top of a TCP connection. 24 25 Note that this file does not (yet) include APIs for creating the socket in 26 the first place. 27 28 All calls passing slice transfer ownership of a slice refcount unless 29 otherwise specified. 30 */ 31 32 #include <grpc/support/port_platform.h> 33 34 #include "src/core/lib/iomgr/port.h" 35 36 #include "src/core/lib/debug/trace.h" 37 #include "src/core/lib/iomgr/buffer_list.h" 38 #include "src/core/lib/iomgr/endpoint.h" 39 #include "src/core/lib/iomgr/ev_posix.h" 40 41 extern grpc_core::TraceFlag grpc_tcp_trace; 42 43 /* Create a tcp endpoint given a file desciptor and a read slice size. 44 Takes ownership of fd. */ 45 grpc_endpoint* grpc_tcp_create(grpc_fd* fd, const grpc_channel_args* args, 46 const char* peer_string); 47 48 /* Return the tcp endpoint's fd, or -1 if this is not available. Does not 49 release the fd. 50 Requires: ep must be a tcp endpoint. 51 */ 52 int grpc_tcp_fd(grpc_endpoint* ep); 53 54 /* Destroy the tcp endpoint without closing its fd. *fd will be set and done 55 * will be called when the endpoint is destroyed. 56 * Requires: ep must be a tcp endpoint and fd must not be NULL. */ 57 void grpc_tcp_destroy_and_release_fd(grpc_endpoint* ep, int* fd, 58 grpc_closure* done); 59 60 #endif /* GRPC_CORE_LIB_IOMGR_TCP_POSIX_H */ 61