Lines Matching +full:getsockopt +full:- +full:timeouts
77 stream->read_cb = NULL; in uv__stream_init()
78 stream->alloc_cb = NULL; in uv__stream_init()
79 stream->close_cb = NULL; in uv__stream_init()
80 stream->connection_cb = NULL; in uv__stream_init()
81 stream->connect_req = NULL; in uv__stream_init()
82 stream->shutdown_req = NULL; in uv__stream_init()
83 stream->accepted_fd = -1; in uv__stream_init()
84 stream->queued_fds = NULL; in uv__stream_init()
85 stream->delayed_error = 0; in uv__stream_init()
86 QUEUE_INIT(&stream->write_queue); in uv__stream_init()
87 QUEUE_INIT(&stream->write_completed_queue); in uv__stream_init()
88 stream->write_queue_size = 0; in uv__stream_init()
90 if (loop->emfile_fd == -1) { in uv__stream_init()
98 loop->emfile_fd = err; in uv__stream_init()
102 stream->select = NULL; in uv__stream_init()
105 uv__io_init(&stream->io_watcher, uv__stream_io, -1); in uv__stream_init()
115 s = stream->select; in uv__stream_osx_interrupt_select()
124 r = write(s->fake_fd, "x", 1); in uv__stream_osx_interrupt_select()
125 while (r == -1 && errno == EINTR); in uv__stream_osx_interrupt_select()
129 /* No-op on any other platform */ in uv__stream_osx_interrupt_select()
145 s = stream->select; in uv__stream_osx_select()
146 fd = s->fd; in uv__stream_osx_select()
148 if (fd > s->int_fd) in uv__stream_osx_select()
151 max_fd = s->int_fd; in uv__stream_osx_select()
155 if (uv_sem_trywait(&s->close_sem) == 0) in uv__stream_osx_select()
159 memset(s->sread, 0, s->sread_sz); in uv__stream_osx_select()
160 memset(s->swrite, 0, s->swrite_sz); in uv__stream_osx_select()
162 if (uv__io_active(&stream->io_watcher, POLLIN)) in uv__stream_osx_select()
163 FD_SET(fd, s->sread); in uv__stream_osx_select()
164 if (uv__io_active(&stream->io_watcher, POLLOUT)) in uv__stream_osx_select()
165 FD_SET(fd, s->swrite); in uv__stream_osx_select()
166 FD_SET(s->int_fd, s->sread); in uv__stream_osx_select()
169 r = select(max_fd + 1, s->sread, s->swrite, NULL, NULL); in uv__stream_osx_select()
170 if (r == -1) { in uv__stream_osx_select()
178 /* Ignore timeouts */ in uv__stream_osx_select()
183 if (FD_ISSET(s->int_fd, s->sread)) in uv__stream_osx_select()
185 r = read(s->int_fd, buf, sizeof(buf)); in uv__stream_osx_select()
190 if (r != -1) in uv__stream_osx_select()
204 if (FD_ISSET(fd, s->sread)) in uv__stream_osx_select()
206 if (FD_ISSET(fd, s->swrite)) in uv__stream_osx_select()
209 assert(events != 0 || FD_ISSET(s->int_fd, s->sread)); in uv__stream_osx_select()
211 ACCESS_ONCE(int, s->events) = events; in uv__stream_osx_select()
213 uv_async_send(&s->async); in uv__stream_osx_select()
214 uv_sem_wait(&s->async_sem); in uv__stream_osx_select()
217 assert((s->events == 0) || (stream->flags & UV_HANDLE_CLOSING)); in uv__stream_osx_select()
229 stream = s->stream; in uv__stream_osx_select_cb()
232 events = s->events; in uv__stream_osx_select_cb()
233 ACCESS_ONCE(int, s->events) = 0; in uv__stream_osx_select_cb()
238 /* Invoke callback on event-loop */ in uv__stream_osx_select_cb()
239 if ((events & POLLIN) && uv__io_active(&stream->io_watcher, POLLIN)) in uv__stream_osx_select_cb()
240 uv__stream_io(stream->loop, &stream->io_watcher, POLLIN); in uv__stream_osx_select_cb()
242 if ((events & POLLOUT) && uv__io_active(&stream->io_watcher, POLLOUT)) in uv__stream_osx_select_cb()
243 uv__stream_io(stream->loop, &stream->io_watcher, POLLOUT); in uv__stream_osx_select_cb()
245 if (stream->flags & UV_HANDLE_CLOSING) in uv__stream_osx_select_cb()
251 uv_sem_post(&s->async_sem); in uv__stream_osx_select_cb()
283 if (kq == -1) { in uv__stream_try_select()
296 while (ret == -1 && errno == EINTR); in uv__stream_try_select()
300 if (ret == -1) in uv__stream_try_select()
328 s->events = 0; in uv__stream_try_select()
329 s->fd = *fd; in uv__stream_try_select()
330 s->sread = (fd_set*) ((char*) s + sizeof(*s)); in uv__stream_try_select()
331 s->sread_sz = sread_sz; in uv__stream_try_select()
332 s->swrite = (fd_set*) ((char*) s->sread + sread_sz); in uv__stream_try_select()
333 s->swrite_sz = swrite_sz; in uv__stream_try_select()
335 err = uv_async_init(stream->loop, &s->async, uv__stream_osx_select_cb); in uv__stream_try_select()
339 s->async.flags |= UV_HANDLE_INTERNAL; in uv__stream_try_select()
340 uv__handle_unref(&s->async); in uv__stream_try_select()
342 err = uv_sem_init(&s->close_sem, 0); in uv__stream_try_select()
346 err = uv_sem_init(&s->async_sem, 0); in uv__stream_try_select()
350 s->fake_fd = fds[0]; in uv__stream_try_select()
351 s->int_fd = fds[1]; in uv__stream_try_select()
354 s->stream = stream; in uv__stream_try_select()
355 stream->select = s; in uv__stream_try_select()
356 *fd = s->fake_fd; in uv__stream_try_select()
358 err = uv_thread_create(&s->thread, uv__stream_osx_select, stream); in uv__stream_try_select()
365 s->stream = NULL; in uv__stream_try_select()
366 stream->select = NULL; in uv__stream_try_select()
369 uv_sem_destroy(&s->async_sem); in uv__stream_try_select()
372 uv_sem_destroy(&s->close_sem); in uv__stream_try_select()
377 uv_close((uv_handle_t*) &s->async, uv__stream_osx_cb_close); in uv__stream_try_select()
397 if (!(stream->io_watcher.fd == -1 || stream->io_watcher.fd == fd)) in uv__stream_open()
401 stream->flags |= flags; in uv__stream_open()
403 if (stream->type == UV_TCP) { in uv__stream_open()
404 if ((stream->flags & UV_HANDLE_TCP_NODELAY) && uv__tcp_nodelay(fd, 1)) in uv__stream_open()
408 if ((stream->flags & UV_HANDLE_TCP_KEEPALIVE) && in uv__stream_open()
423 stream->io_watcher.fd = fd; in uv__stream_open()
432 while (!QUEUE_EMPTY(&stream->write_queue)) { in uv__stream_flush_write_queue()
433 q = QUEUE_HEAD(&stream->write_queue); in uv__stream_flush_write_queue()
437 req->error = error; in uv__stream_flush_write_queue()
439 QUEUE_INSERT_TAIL(&stream->write_completed_queue, &req->queue); in uv__stream_flush_write_queue()
445 assert(!uv__io_active(&stream->io_watcher, POLLIN | POLLOUT)); in uv__stream_destroy()
446 assert(stream->flags & UV_HANDLE_CLOSED); in uv__stream_destroy()
448 if (stream->connect_req) { in uv__stream_destroy()
449 uv__req_unregister(stream->loop, stream->connect_req); in uv__stream_destroy()
450 stream->connect_req->cb(stream->connect_req, UV_ECANCELED); in uv__stream_destroy()
451 stream->connect_req = NULL; in uv__stream_destroy()
457 if (stream->shutdown_req) { in uv__stream_destroy()
463 uv__req_unregister(stream->loop, stream->shutdown_req); in uv__stream_destroy()
464 stream->shutdown_req->cb(stream->shutdown_req, UV_ECANCELED); in uv__stream_destroy()
465 stream->shutdown_req = NULL; in uv__stream_destroy()
468 assert(stream->write_queue_size == 0); in uv__stream_destroy()
475 * immediately to signal the clients that we're overloaded - and we are, but
478 * There is one caveat: it's not reliable in a multi-threaded environment.
487 if (loop->emfile_fd == -1) in uv__emfile_trick()
490 uv__close(loop->emfile_fd); in uv__emfile_trick()
491 loop->emfile_fd = -1; in uv__emfile_trick()
501 loop->emfile_fd = emfile_fd; in uv__emfile_trick()
508 # define UV_DEC_BACKLOG(w) w->rcount--;
510 # define UV_DEC_BACKLOG(w) /* no-op */
520 assert(stream->accepted_fd == -1); in uv__server_io()
521 assert(!(stream->flags & UV_HANDLE_CLOSING)); in uv__server_io()
523 uv__io_start(stream->loop, &stream->io_watcher, POLLIN); in uv__server_io()
528 while (uv__stream_fd(stream) != -1) { in uv__server_io()
529 assert(stream->accepted_fd == -1); in uv__server_io()
532 if (w->rcount <= 0) in uv__server_io()
550 stream->connection_cb(stream, err); in uv__server_io()
555 stream->accepted_fd = err; in uv__server_io()
556 stream->connection_cb(stream, 0); in uv__server_io()
558 if (stream->accepted_fd != -1) { in uv__server_io()
560 uv__io_stop(loop, &stream->io_watcher, POLLIN); in uv__server_io()
564 if (stream->type == UV_TCP && in uv__server_io()
565 (stream->flags & UV_HANDLE_TCP_SINGLE_ACCEPT)) { in uv__server_io()
580 assert(server->loop == client->loop); in uv_accept()
582 if (server->accepted_fd == -1) in uv_accept()
585 switch (client->type) { in uv_accept()
589 server->accepted_fd, in uv_accept()
593 uv__close(server->accepted_fd); in uv_accept()
599 err = uv_udp_open((uv_udp_t*) client, server->accepted_fd); in uv_accept()
601 uv__close(server->accepted_fd); in uv_accept()
610 client->flags |= UV_HANDLE_BOUND; in uv_accept()
614 if (server->queued_fds != NULL) { in uv_accept()
617 queued_fds = server->queued_fds; in uv_accept()
620 server->accepted_fd = queued_fds->fds[0]; in uv_accept()
623 assert(queued_fds->offset > 0); in uv_accept()
624 if (--queued_fds->offset == 0) { in uv_accept()
626 server->queued_fds = NULL; in uv_accept()
629 memmove(queued_fds->fds, in uv_accept()
630 queued_fds->fds + 1, in uv_accept()
631 queued_fds->offset * sizeof(*queued_fds->fds)); in uv_accept()
634 server->accepted_fd = -1; in uv_accept()
636 uv__io_start(server->loop, &server->io_watcher, POLLIN); in uv_accept()
645 switch (stream->type) { in uv_listen()
669 assert(QUEUE_EMPTY(&stream->write_queue)); in uv__drain()
670 uv__io_stop(stream->loop, &stream->io_watcher, POLLOUT); in uv__drain()
674 if ((stream->flags & UV_HANDLE_SHUTTING) && in uv__drain()
675 !(stream->flags & UV_HANDLE_CLOSING) && in uv__drain()
676 !(stream->flags & UV_HANDLE_SHUT)) { in uv__drain()
677 assert(stream->shutdown_req); in uv__drain()
679 req = stream->shutdown_req; in uv__drain()
680 stream->shutdown_req = NULL; in uv__drain()
681 stream->flags &= ~UV_HANDLE_SHUTTING; in uv__drain()
682 uv__req_unregister(stream->loop, req); in uv__drain()
689 stream->flags |= UV_HANDLE_SHUT; in uv__drain()
691 if (req->cb != NULL) in uv__drain()
692 req->cb(req, err); in uv__drain()
699 return write(fd, vec->iov_base, vec->iov_len); in uv__writev()
708 assert(req->bufs != NULL); in uv__write_req_size()
709 size = uv__count_bufs(req->bufs + req->write_index, in uv__write_req_size()
710 req->nbufs - req->write_index); in uv__write_req_size()
711 assert(req->handle->write_queue_size >= size); in uv__write_req_size()
729 assert(n <= stream->write_queue_size); in uv__write_req_update()
730 stream->write_queue_size -= n; in uv__write_req_update()
732 buf = req->bufs + req->write_index; in uv__write_req_update()
735 len = n < buf->len ? n : buf->len; in uv__write_req_update()
736 buf->base += len; in uv__write_req_update()
737 buf->len -= len; in uv__write_req_update()
738 buf += (buf->len == 0); /* Advance to next buffer if this one is empty. */ in uv__write_req_update()
739 n -= len; in uv__write_req_update()
742 req->write_index = buf - req->bufs; in uv__write_req_update()
744 return req->write_index == req->nbufs; in uv__write_req_update()
749 uv_stream_t* stream = req->handle; in uv__write_req_finish()
751 /* Pop the req off tcp->write_queue. */ in uv__write_req_finish()
752 QUEUE_REMOVE(&req->queue); in uv__write_req_finish()
757 * they should stop writing - which they should if we got an error. Something in uv__write_req_finish()
760 if (req->error == 0) { in uv__write_req_finish()
761 if (req->bufs != req->bufsml) in uv__write_req_finish()
762 uv__free(req->bufs); in uv__write_req_finish()
763 req->bufs = NULL; in uv__write_req_finish()
769 QUEUE_INSERT_TAIL(&stream->write_completed_queue, &req->queue); in uv__write_req_finish()
770 uv__io_feed(stream->loop, &stream->io_watcher); in uv__write_req_finish()
775 switch (handle->type) { in uv__handle_fd()
778 return ((uv_stream_t*) handle)->io_watcher.fd; in uv__handle_fd()
781 return ((uv_udp_t*) handle)->io_watcher.fd; in uv__handle_fd()
784 return -1; in uv__handle_fd()
842 cmsg->cmsg_level = SOL_SOCKET; in uv__try_write()
843 cmsg->cmsg_type = SCM_RIGHTS; in uv__try_write()
844 cmsg->cmsg_len = CMSG_LEN(sizeof(fd_to_send)); in uv__try_write()
855 while (n == -1 && errno == EINTR); in uv__try_write()
859 while (n == -1 && errno == EINTR); in uv__try_write()
869 /* macOS versions 10.10 and 10.15 - and presumbaly 10.11 to 10.14, too - in uv__try_write()
893 if (QUEUE_EMPTY(&stream->write_queue)) in uv__write()
896 q = QUEUE_HEAD(&stream->write_queue); in uv__write()
898 assert(req->handle == stream); in uv__write()
901 &(req->bufs[req->write_index]), in uv__write()
902 req->nbufs - req->write_index, in uv__write()
903 req->send_handle); in uv__write()
907 req->send_handle = NULL; in uv__write()
916 if (stream->flags & UV_HANDLE_BLOCKING_WRITES) in uv__write()
920 uv__io_start(stream->loop, &stream->io_watcher, POLLOUT); in uv__write()
928 req->error = n; in uv__write()
931 uv__io_stop(stream->loop, &stream->io_watcher, POLLOUT); in uv__write()
941 if (QUEUE_EMPTY(&stream->write_completed_queue)) in uv__write_callbacks()
944 QUEUE_MOVE(&stream->write_completed_queue, &pq); in uv__write_callbacks()
951 uv__req_unregister(stream->loop, req); in uv__write_callbacks()
953 if (req->bufs != NULL) { in uv__write_callbacks()
954 stream->write_queue_size -= uv__write_req_size(req); in uv__write_callbacks()
955 if (req->bufs != req->bufsml) in uv__write_callbacks()
956 uv__free(req->bufs); in uv__write_callbacks()
957 req->bufs = NULL; in uv__write_callbacks()
961 if (req->cb) in uv__write_callbacks()
962 req->cb(req, req->error); in uv__write_callbacks()
981 if (getsockopt(fd, SOL_SOCKET, SO_TYPE, &type, &len)) in uv__handle_type()
1011 stream->flags |= UV_HANDLE_READ_EOF; in uv__stream_eof()
1012 stream->flags &= ~UV_HANDLE_READING; in uv__stream_eof()
1013 uv__io_stop(stream->loop, &stream->io_watcher, POLLIN); in uv__stream_eof()
1016 stream->read_cb(stream, UV_EOF, buf); in uv__stream_eof()
1024 queued_fds = stream->queued_fds; in uv__stream_queue_fd()
1027 queued_fds = uv__malloc((queue_size - 1) * sizeof(*queued_fds->fds) + in uv__stream_queue_fd()
1031 queued_fds->size = queue_size; in uv__stream_queue_fd()
1032 queued_fds->offset = 0; in uv__stream_queue_fd()
1033 stream->queued_fds = queued_fds; in uv__stream_queue_fd()
1036 } else if (queued_fds->size == queued_fds->offset) { in uv__stream_queue_fd()
1037 queue_size = queued_fds->size + 8; in uv__stream_queue_fd()
1039 (queue_size - 1) * sizeof(*queued_fds->fds) + in uv__stream_queue_fd()
1044 * NOTE: if it is fatal - sockets will be closed in uv__stream_close in uv__stream_queue_fd()
1048 queued_fds->size = queue_size; in uv__stream_queue_fd()
1049 stream->queued_fds = queued_fds; in uv__stream_queue_fd()
1053 queued_fds->fds[queued_fds->offset++] = fd; in uv__stream_queue_fd()
1080 if (cmsg->cmsg_type != SCM_RIGHTS) { in uv__stream_recv_cmsg()
1081 fprintf(stderr, "ignoring non-SCM_RIGHTS ancillary data: %d\n", in uv__stream_recv_cmsg()
1082 cmsg->cmsg_type); in uv__stream_recv_cmsg()
1092 end = (char*) cmsg + cmsg->cmsg_len; in uv__stream_recv_cmsg()
1100 if (stream->accepted_fd != -1) { in uv__stream_recv_cmsg()
1109 stream->accepted_fd = pi[i]; in uv__stream_recv_cmsg()
1120 # pragma clang diagnostic ignored "-Wgnu-folding-constant"
1121 # pragma clang diagnostic ignored "-Wvla-extension"
1133 stream->flags &= ~UV_HANDLE_READ_PARTIAL; in uv__read()
1136 * we can read it. XXX Need to rearm fd if we switch to edge-triggered I/O. in uv__read()
1140 is_ipc = stream->type == UV_NAMED_PIPE && ((uv_pipe_t*) stream)->ipc; in uv__read()
1143 * tcp->read_cb is NULL or not? in uv__read()
1145 while (stream->read_cb in uv__read()
1146 && (stream->flags & UV_HANDLE_READING) in uv__read()
1147 && (count-- > 0)) { in uv__read()
1148 assert(stream->alloc_cb != NULL); in uv__read()
1151 stream->alloc_cb((uv_handle_t*)stream, 64 * 1024, &buf); in uv__read()
1154 stream->read_cb(stream, UV_ENOBUFS, &buf); in uv__read()
1187 if (stream->flags & UV_HANDLE_READING) { in uv__read()
1188 uv__io_start(stream->loop, &stream->io_watcher, POLLIN); in uv__read()
1191 stream->read_cb(stream, 0, &buf); in uv__read()
1193 } else if (errno == ECONNRESET && stream->type == UV_NAMED_PIPE) { in uv__read()
1199 stream->flags &= ~(UV_HANDLE_READABLE | UV_HANDLE_WRITABLE); in uv__read()
1200 stream->read_cb(stream, UV__ERR(errno), &buf); in uv__read()
1201 if (stream->flags & UV_HANDLE_READING) { in uv__read()
1202 stream->flags &= ~UV_HANDLE_READING; in uv__read()
1203 uv__io_stop(stream->loop, &stream->io_watcher, POLLIN); in uv__read()
1219 stream->read_cb(stream, err, &buf); in uv__read()
1239 stream->read_cb(stream, err, &buf); in uv__read()
1247 stream->read_cb(stream, nread, &buf); in uv__read()
1251 stream->flags |= UV_HANDLE_READ_PARTIAL; in uv__read()
1268 assert(stream->type == UV_TCP || in uv_shutdown()
1269 stream->type == UV_TTY || in uv_shutdown()
1270 stream->type == UV_NAMED_PIPE); in uv_shutdown()
1272 if (!(stream->flags & UV_HANDLE_WRITABLE) || in uv_shutdown()
1273 stream->flags & UV_HANDLE_SHUT || in uv_shutdown()
1274 stream->flags & UV_HANDLE_SHUTTING || in uv_shutdown()
1282 uv__req_init(stream->loop, req, UV_SHUTDOWN); in uv_shutdown()
1283 req->handle = stream; in uv_shutdown()
1284 req->cb = cb; in uv_shutdown()
1285 stream->shutdown_req = req; in uv_shutdown()
1286 stream->flags |= UV_HANDLE_SHUTTING; in uv_shutdown()
1287 stream->flags &= ~UV_HANDLE_WRITABLE; in uv_shutdown()
1289 uv__io_start(stream->loop, &stream->io_watcher, POLLOUT); in uv_shutdown()
1301 assert(stream->type == UV_TCP || in uv__stream_io()
1302 stream->type == UV_NAMED_PIPE || in uv__stream_io()
1303 stream->type == UV_TTY); in uv__stream_io()
1304 assert(!(stream->flags & UV_HANDLE_CLOSING)); in uv__stream_io()
1306 if (stream->connect_req) { in uv__stream_io()
1317 if (uv__stream_fd(stream) == -1) in uv__stream_io()
1320 /* Short-circuit iff POLLHUP is set, the user is still interested in read in uv__stream_io()
1327 (stream->flags & UV_HANDLE_READING) && in uv__stream_io()
1328 (stream->flags & UV_HANDLE_READ_PARTIAL) && in uv__stream_io()
1329 !(stream->flags & UV_HANDLE_READ_EOF)) { in uv__stream_io()
1334 if (uv__stream_fd(stream) == -1) in uv__stream_io()
1342 if (QUEUE_EMPTY(&stream->write_queue)) in uv__stream_io()
1351 * getsockopt.
1355 uv_connect_t* req = stream->connect_req; in uv__stream_connect()
1358 assert(stream->type == UV_TCP || stream->type == UV_NAMED_PIPE); in uv__stream_connect()
1361 if (stream->delayed_error) { in uv__stream_connect()
1364 * until the next tick--which is now. in uv__stream_connect()
1366 error = stream->delayed_error; in uv__stream_connect()
1367 stream->delayed_error = 0; in uv__stream_connect()
1371 getsockopt(uv__stream_fd(stream), in uv__stream_connect()
1382 stream->connect_req = NULL; in uv__stream_connect()
1383 uv__req_unregister(stream->loop, req); in uv__stream_connect()
1385 if (error < 0 || QUEUE_EMPTY(&stream->write_queue)) { in uv__stream_connect()
1386 uv__io_stop(stream->loop, &stream->io_watcher, POLLOUT); in uv__stream_connect()
1389 if (req->cb) in uv__stream_connect()
1390 req->cb(req, error); in uv__stream_connect()
1392 if (uv__stream_fd(stream) == -1) in uv__stream_connect()
1406 assert((stream->type == UV_TCP || in uv__check_before_write()
1407 stream->type == UV_NAMED_PIPE || in uv__check_before_write()
1408 stream->type == UV_TTY) && in uv__check_before_write()
1414 if (!(stream->flags & UV_HANDLE_WRITABLE)) in uv__check_before_write()
1418 if (stream->type != UV_NAMED_PIPE || !((uv_pipe_t*)stream)->ipc) in uv__check_before_write()
1424 * OS X specific fields. On other Unices it does (handle)->io_watcher.fd, in uv__check_before_write()
1432 …See https://github.com/mirror/newlib-cygwin/blob/86fc4bf0/winsup/cygwin/fhandler_socket.cc#L1736-L… in uv__check_before_write()
1454 * it means there are error-state requests in the write_completed_queue that in uv_write2()
1459 empty_queue = (stream->write_queue_size == 0); in uv_write2()
1462 uv__req_init(stream->loop, req, UV_WRITE); in uv_write2()
1463 req->cb = cb; in uv_write2()
1464 req->handle = stream; in uv_write2()
1465 req->error = 0; in uv_write2()
1466 req->send_handle = send_handle; in uv_write2()
1467 QUEUE_INIT(&req->queue); in uv_write2()
1469 req->bufs = req->bufsml; in uv_write2()
1470 if (nbufs > ARRAY_SIZE(req->bufsml)) in uv_write2()
1471 req->bufs = uv__malloc(nbufs * sizeof(bufs[0])); in uv_write2()
1473 if (req->bufs == NULL) in uv_write2()
1476 memcpy(req->bufs, bufs, nbufs * sizeof(bufs[0])); in uv_write2()
1477 req->nbufs = nbufs; in uv_write2()
1478 req->write_index = 0; in uv_write2()
1479 stream->write_queue_size += uv__count_bufs(bufs, nbufs); in uv_write2()
1482 QUEUE_INSERT_TAIL(&stream->write_queue, &req->queue); in uv_write2()
1488 if (stream->connect_req) { in uv_write2()
1500 assert(!(stream->flags & UV_HANDLE_BLOCKING_WRITES)); in uv_write2()
1501 uv__io_start(stream->loop, &stream->io_watcher, POLLOUT); in uv_write2()
1535 if (stream->connect_req != NULL || stream->write_queue_size != 0) in uv_try_write2()
1549 assert(stream->type == UV_TCP || stream->type == UV_NAMED_PIPE || in uv__read_start()
1550 stream->type == UV_TTY); in uv__read_start()
1552 /* The UV_HANDLE_READING flag is irrelevant of the state of the stream - it in uv__read_start()
1554 stream->flags |= UV_HANDLE_READING; in uv__read_start()
1555 stream->flags &= ~UV_HANDLE_READ_EOF; in uv__read_start()
1561 stream->read_cb = read_cb; in uv__read_start()
1562 stream->alloc_cb = alloc_cb; in uv__read_start()
1564 uv__io_start(stream->loop, &stream->io_watcher, POLLIN); in uv__read_start()
1573 if (!(stream->flags & UV_HANDLE_READING)) in uv_read_stop()
1576 stream->flags &= ~UV_HANDLE_READING; in uv_read_stop()
1577 uv__io_stop(stream->loop, &stream->io_watcher, POLLIN); in uv_read_stop()
1581 stream->read_cb = NULL; in uv_read_stop()
1582 stream->alloc_cb = NULL; in uv_read_stop()
1588 return !!(stream->flags & UV_HANDLE_READABLE); in uv_is_readable()
1593 return !!(stream->flags & UV_HANDLE_WRITABLE); in uv_is_writable()
1601 assert(handle->type == UV_TCP || in uv___stream_fd()
1602 handle->type == UV_TTY || in uv___stream_fd()
1603 handle->type == UV_NAMED_PIPE); in uv___stream_fd()
1605 s = handle->select; in uv___stream_fd()
1607 return s->fd; in uv___stream_fd()
1609 return handle->io_watcher.fd; in uv___stream_fd()
1620 if (handle->select != NULL) { in uv__stream_close()
1623 s = handle->select; in uv__stream_close()
1625 uv_sem_post(&s->close_sem); in uv__stream_close()
1626 uv_sem_post(&s->async_sem); in uv__stream_close()
1628 uv_thread_join(&s->thread); in uv__stream_close()
1629 uv_sem_destroy(&s->close_sem); in uv__stream_close()
1630 uv_sem_destroy(&s->async_sem); in uv__stream_close()
1631 uv__close(s->fake_fd); in uv__stream_close()
1632 uv__close(s->int_fd); in uv__stream_close()
1633 uv_close((uv_handle_t*) &s->async, uv__stream_osx_cb_close); in uv__stream_close()
1635 handle->select = NULL; in uv__stream_close()
1639 uv__io_close(handle->loop, &handle->io_watcher); in uv__stream_close()
1642 handle->flags &= ~(UV_HANDLE_READABLE | UV_HANDLE_WRITABLE); in uv__stream_close()
1644 if (handle->io_watcher.fd != -1) { in uv__stream_close()
1646 if (handle->io_watcher.fd > STDERR_FILENO) in uv__stream_close()
1647 uv__close(handle->io_watcher.fd); in uv__stream_close()
1648 handle->io_watcher.fd = -1; in uv__stream_close()
1651 if (handle->accepted_fd != -1) { in uv__stream_close()
1652 uv__close(handle->accepted_fd); in uv__stream_close()
1653 handle->accepted_fd = -1; in uv__stream_close()
1657 if (handle->queued_fds != NULL) { in uv__stream_close()
1658 queued_fds = handle->queued_fds; in uv__stream_close()
1659 for (i = 0; i < queued_fds->offset; i++) in uv__stream_close()
1660 uv__close(queued_fds->fds[i]); in uv__stream_close()
1661 uv__free(handle->queued_fds); in uv__stream_close()
1662 handle->queued_fds = NULL; in uv__stream_close()
1665 assert(!uv__io_active(&handle->io_watcher, POLLIN | POLLOUT)); in uv__stream_close()