36 #include "platform.hpp" 47 #ifdef ZMQ_HAVE_WINDOWS 51 #include <sys/socket.h> 52 #include <arpa/inet.h> 53 #include <netinet/tcp.h> 54 #include <netinet/in.h> 59 #ifdef ZMQ_HAVE_OPENVMS 65 own_t (io_thread_, options_),
131 #ifdef ZMQ_HAVE_WINDOWS 132 int rc = closesocket (
s);
133 wsa_assert (rc != SOCKET_ERROR);
145 struct sockaddr_storage ss;
147 int sl =
sizeof (ss);
149 socklen_t sl =
sizeof (ss);
151 int rc = getsockname (
s, (
struct sockaddr *) &ss, &sl);
190 #ifdef ZMQ_HAVE_WINDOWS 191 if (
s == INVALID_SOCKET) {
192 errno = wsa_error_to_errno (WSAGetLastError ());
195 #if !defined _WIN32_WCE 197 BOOL brc = SetHandleInformation ((HANDLE)
s, HANDLE_FLAG_INHERIT, 0);
222 #ifdef ZMQ_HAVE_WINDOWS 223 rc = setsockopt (s, SOL_SOCKET, SO_EXCLUSIVEADDRUSE,
224 (
const char*) &flag,
sizeof (
int));
225 wsa_assert (rc != SOCKET_ERROR);
227 rc = setsockopt (s, SOL_SOCKET, SO_REUSEADDR, &flag,
sizeof (
int));
233 #ifdef ZMQ_HAVE_WINDOWS 234 if (rc == SOCKET_ERROR) {
235 errno = wsa_error_to_errno (WSAGetLastError ());
245 #ifdef ZMQ_HAVE_WINDOWS 246 if (rc == SOCKET_ERROR) {
247 errno = wsa_error_to_errno (WSAGetLastError ());
272 struct sockaddr_storage ss;
273 memset (&ss, 0,
sizeof (ss));
275 int ss_len =
sizeof (ss);
277 socklen_t ss_len =
sizeof (ss);
281 #ifdef ZMQ_HAVE_WINDOWS 282 if (sock == INVALID_SOCKET) {
283 const int last_error = WSAGetLastError();
284 wsa_assert (last_error == WSAEWOULDBLOCK ||
285 last_error == WSAECONNRESET ||
286 last_error == WSAEMFILE ||
287 last_error == WSAENOBUFS);
290 #if !defined _WIN32_WCE 292 BOOL brc = SetHandleInformation ((HANDLE) sock, HANDLE_FLAG_INHERIT, 0);
297 errno_assert (errno == EAGAIN || errno == EWOULDBLOCK ||
299 errno ==
ENOBUFS || errno == ENOMEM || errno == EMFILE ||
308 int rc = fcntl (sock, F_SETFD, FD_CLOEXEC);
313 bool matched =
false;
321 #ifdef ZMQ_HAVE_WINDOWS 322 int rc = closesocket (sock);
323 wsa_assert (rc != SOCKET_ERROR);
static session_base_t * create(zmq::io_thread_t *io_thread_, bool active_, zmq::socket_base_t *socket_, const options_t &options_, address_t *addr_)
virtual int to_string(std::string &addr_)
void send_attach(zmq::session_base_t *destination_, zmq::i_engine *engine_, bool inc_seqnum_=true)
void tune_tcp_keepalives(fd_t s_, int keepalive_, int keepalive_cnt_, int keepalive_idle_, int keepalive_intvl_)
void process_term(int linger_)
void event_accept_failed(const std::string &addr_, int err_)
fd_t open_socket(int domain_, int type_, int protocol_)
zmq::io_thread_t * choose_io_thread(uint64_t affinity_)
void event_listening(const std::string &addr_, int fd_)
ZMQ_EXPORT int zmq_errno(void)
int get_address(std::string &addr_)
int set_address(const char *addr_)
int resolve(const char *name_, bool local_, bool ipv6_, bool is_src_=false)
void set_pollin(handle_t handle_)
void set_tcp_receive_buffer(fd_t sockfd_, int bufsize_)
void tune_tcp_maxrt(fd_t sockfd_, int timeout_)
void tune_tcp_socket(fd_t s_)
void enable_ipv4_mapping(fd_t s_)
void set_tcp_send_buffer(fd_t sockfd_, int bufsize_)
tcp_accept_filters_t tcp_accept_filters
void event_closed(const std::string &addr_, int fd_)
const sockaddr * addr() const
socklen_t addrlen() const
void launch_child(own_t *object_)
sa_family_t family() const
handle_t add_fd(fd_t fd_)
void process_term(int linger_)
void event_accepted(const std::string &addr_, int fd_)
zmq::socket_base_t * socket
void rm_fd(handle_t handle_)
tcp_listener_t(zmq::io_thread_t *io_thread_, zmq::socket_base_t *socket_, const options_t &options_)
void set_ip_type_of_service(fd_t s_, int iptos)