/* * Copyright 2014 MongoDB, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "mongoc-prelude.h" #ifndef MONGOC_SOCKET_H #define MONGOC_SOCKET_H #include #include "mongoc-macros.h" #include "mongoc-config.h" #ifdef _WIN32 #include #include #else #include #include #include #include #include #include #include #include #include #endif #if defined(_AIX) && !defined(MONGOC_HAVE_SS_FAMILY) #define ss_family __ss_family #endif #include "mongoc-iovec.h" BSON_BEGIN_DECLS typedef MONGOC_SOCKET_ARG3 mongoc_socklen_t; typedef struct _mongoc_socket_t mongoc_socket_t; typedef struct { mongoc_socket_t *socket; int events; int revents; } mongoc_socket_poll_t; MONGOC_EXPORT (mongoc_socket_t *) mongoc_socket_accept (mongoc_socket_t *sock, int64_t expire_at) BSON_GNUC_WARN_UNUSED_RESULT; MONGOC_EXPORT (int) mongoc_socket_bind (mongoc_socket_t *sock, const struct sockaddr *addr, mongoc_socklen_t addrlen); MONGOC_EXPORT (int) mongoc_socket_close (mongoc_socket_t *socket); MONGOC_EXPORT (int) mongoc_socket_connect (mongoc_socket_t *sock, const struct sockaddr *addr, mongoc_socklen_t addrlen, int64_t expire_at); MONGOC_EXPORT (char *) mongoc_socket_getnameinfo (mongoc_socket_t *sock) BSON_GNUC_WARN_UNUSED_RESULT; MONGOC_EXPORT (void) mongoc_socket_destroy (mongoc_socket_t *sock); MONGOC_EXPORT (int) mongoc_socket_errno (mongoc_socket_t *sock); MONGOC_EXPORT (int) mongoc_socket_getsockname (mongoc_socket_t *sock, struct sockaddr *addr, mongoc_socklen_t *addrlen); MONGOC_EXPORT (int) mongoc_socket_listen (mongoc_socket_t *sock, unsigned int backlog); MONGOC_EXPORT (mongoc_socket_t *) mongoc_socket_new (int domain, int type, int protocol) BSON_GNUC_WARN_UNUSED_RESULT; MONGOC_EXPORT (ssize_t) mongoc_socket_recv (mongoc_socket_t *sock, void *buf, size_t buflen, int flags, int64_t expire_at); MONGOC_EXPORT (int) mongoc_socket_setsockopt (mongoc_socket_t *sock, int level, int optname, const void *optval, mongoc_socklen_t optlen); MONGOC_EXPORT (ssize_t) mongoc_socket_send (mongoc_socket_t *sock, const void *buf, size_t buflen, int64_t expire_at); MONGOC_EXPORT (ssize_t) mongoc_socket_sendv (mongoc_socket_t *sock, mongoc_iovec_t *iov, size_t iovcnt, int64_t expire_at); MONGOC_EXPORT (bool) mongoc_socket_check_closed (mongoc_socket_t *sock); MONGOC_EXPORT (void) mongoc_socket_inet_ntop (struct addrinfo *rp, char *buf, size_t buflen); MONGOC_EXPORT (ssize_t) mongoc_socket_poll (mongoc_socket_poll_t *sds, size_t nsds, int32_t timeout); BSON_END_DECLS #endif /* MONGOC_SOCKET_H */