7 #if defined ZMQ_HAVE_VMCI
21 #if defined ZMQ_HAVE_WINDOWS
28 zmq::vmci_listener_t::vmci_listener_t (io_thread_t *io_thread_,
29 socket_base_t *socket_,
31 stream_listener_base_t (io_thread_, socket_,
options_)
35 void zmq::vmci_listener_t::in_event ()
41 _socket->event_accept_failed (
46 tune_vmci_buffer_size (this->get_ctx (), fd,
options.vmci_buffer_size,
50 if (
options.vmci_connect_timeout > 0) {
51 #if defined ZMQ_HAVE_WINDOWS
52 tune_vmci_connect_timeout (this->get_ctx (), fd,
56 tune_vmci_connect_timeout (this->get_ctx (), fd,
timeout);
68 struct sockaddr_storage ss;
74 const vmci_address_t addr (
reinterpret_cast<struct sockaddr *
> (&ss), sl,
77 addr.to_string (address_string);
78 return address_string;
81 int zmq::vmci_listener_t::set_local_address (
const char *addr_)
87 vmci_address_t
address (this->get_ctx ());
88 int rc =
address.resolve (addr.c_str ());
94 open_socket (this->get_ctx ()->get_vmci_socket_family (), SOCK_STREAM, 0);
95 #ifdef ZMQ_HAVE_WINDOWS
96 if (s == INVALID_SOCKET) {
97 errno = wsa_error_to_errno (WSAGetLastError ());
100 #if !defined _WIN32_WCE
102 BOOL brc = SetHandleInformation ((
HANDLE) _s, HANDLE_FLAG_INHERIT, 0);
114 #ifdef ZMQ_HAVE_WINDOWS
115 if (rc == SOCKET_ERROR) {
116 errno = wsa_error_to_errno (WSAGetLastError ());
125 rc = listen (_s,
options.backlog);
126 #ifdef ZMQ_HAVE_WINDOWS
127 if (rc == SOCKET_ERROR) {
128 errno = wsa_error_to_errno (WSAGetLastError ());
147 zmq::fd_t zmq::vmci_listener_t::accept ()
155 #ifdef ZMQ_HAVE_WINDOWS
156 if (
sock == INVALID_SOCKET) {
157 wsa_assert (WSAGetLastError () == WSAEWOULDBLOCK
158 || WSAGetLastError () == WSAECONNRESET
159 || WSAGetLastError () == WSAEMFILE
160 || WSAGetLastError () == WSAENOBUFS);
163 #if !defined _WIN32_WCE
165 BOOL brc = SetHandleInformation ((
HANDLE)
sock, HANDLE_FLAG_INHERIT, 0);
181 int rc = fcntl (
sock, F_SETFD, FD_CLOEXEC);