31 #include "platform.hpp" 33 #if defined ZMQ_HAVE_WINDOWS 36 #include <sys/types.h> 38 #include <sys/socket.h> 39 #include <netinet/in.h> 40 #include <arpa/inet.h> 65 #ifdef ZMQ_HAVE_WINDOWS 66 int rc = closesocket (
fd);
67 wsa_assert (rc != SOCKET_ERROR);
111 int rc = setsockopt (
fd, SOL_SOCKET, SO_REUSEADDR, (
char *) &on,
sizeof (on));
112 #ifdef ZMQ_HAVE_WINDOWS 113 wsa_assert (rc != SOCKET_ERROR);
120 #ifdef ZMQ_HAVE_WINDOWS 121 wsa_assert (rc != SOCKET_ERROR);
130 rc = setsockopt (
fd, IPPROTO_IP, IP_ADD_MEMBERSHIP, (
char*) &mreq,
sizeof (mreq));
131 #ifdef ZMQ_HAVE_WINDOWS 132 wsa_assert (rc != SOCKET_ERROR);
161 errno_assert (rc == 0 || (rc == -1 && errno == EAGAIN));
167 size_t group_size = group_msg.
size ();
168 size_t body_size = body_msg.
size ();
169 size_t size = group_size + body_size + 1;
174 memcpy (
out_buffer + 1 + group_size, body_msg.
data (), body_size);
176 rc = group_msg.
close ();
182 #ifdef ZMQ_HAVE_WINDOWS 183 rc = sendto (
fd, (
const char *)
out_buffer, (
int) size, 0,
186 wsa_assert (rc != SOCKET_ERROR);
214 #ifdef ZMQ_HAVE_WINDOWS 216 const int last_error = WSAGetLastError();
217 if (nbytes == SOCKET_ERROR) {
219 last_error == WSAENETDOWN ||
220 last_error == WSAENETRESET ||
221 last_error == WSAEWOULDBLOCK);
238 if (nbytes - 1 < group_size)
241 int body_size = nbytes - 1 - group_size;
250 errno_assert (rc == 0 || (rc == -1 && errno == EAGAIN));
void set_pollout(handle_t handle_)
void plug(zmq::io_thread_t *io_thread_)
fd_t open_socket(int domain_, int type_, int protocol_)
void unblock_socket(fd_t s_)
virtual int push_msg(msg_t *msg_)
unsigned char in_buffer[MAX_UDP_MSG]
int init(address_t *address_, bool send_, bool recv_)
sa_family_t family() const
socklen_t bind_addrlen() const
int init_size(size_t size_)
void set_pollin(handle_t handle_)
const sockaddr * bind_addr() const
const sockaddr * dest_addr() const
void plug(zmq::io_thread_t *io_thread_, class session_base_t *session_)
virtual int pull_msg(msg_t *msg_)
void reset_pollout(handle_t handle_)
void reset_pollin(handle_t handle_)
void set_flags(unsigned char flags_)
unsigned char out_buffer[MAX_UDP_MSG]
unsigned char data[max_vsm_size]
handle_t add_fd(fd_t fd_)
const in_addr multicast_ip() const
socklen_t dest_addrlen() const
union zmq::address_t::@0 resolved
const in_addr interface_ip() const
void rm_fd(handle_t handle_)