Lines Matching refs:f
783 fdhandler_remove( FDHandler* f ) in fdhandler_remove() argument
785 f->pref[0] = f->next; in fdhandler_remove()
786 if (f->next) in fdhandler_remove()
787 f->next->pref = f->pref; in fdhandler_remove()
792 fdhandler_prepend( FDHandler* f, FDHandler** list ) in fdhandler_prepend() argument
794 f->next = list[0]; in fdhandler_prepend()
795 f->pref = list; in fdhandler_prepend()
796 list[0] = f; in fdhandler_prepend()
797 if (f->next) in fdhandler_prepend()
798 f->next->pref = &f->next; in fdhandler_prepend()
822 fdhandler_close( FDHandler* f ) in fdhandler_close() argument
825 receiver_close(f->receiver); in fdhandler_close()
828 fdhandler_remove(f); in fdhandler_close()
831 if (f->out_first != NULL) { in fdhandler_close()
833 while ((p = f->out_first) != NULL) { in fdhandler_close()
834 f->out_first = p->next; in fdhandler_close()
840 if (f->fd >= 0) { in fdhandler_close()
841 looper_del( f->list->looper, f->fd ); in fdhandler_close()
842 close(f->fd); in fdhandler_close()
843 f->fd = -1; in fdhandler_close()
846 f->list = NULL; in fdhandler_close()
847 xfree(f); in fdhandler_close()
855 fdhandler_shutdown( FDHandler* f ) in fdhandler_shutdown() argument
860 f->receiver->close = NULL; in fdhandler_shutdown()
862 if (f->out_first != NULL && !f->closing) in fdhandler_shutdown()
865 f->closing = 1; in fdhandler_shutdown()
866 fdhandler_remove(f); in fdhandler_shutdown()
867 fdhandler_prepend(f, &f->list->closing); in fdhandler_shutdown()
871 fdhandler_close(f); in fdhandler_shutdown()
878 fdhandler_enqueue( FDHandler* f, Packet* p ) in fdhandler_enqueue() argument
880 Packet* first = f->out_first; in fdhandler_enqueue()
883 f->out_ptail[0] = p; in fdhandler_enqueue()
884 f->out_ptail = &p->next; in fdhandler_enqueue()
887 f->out_pos = 0; in fdhandler_enqueue()
888 looper_enable( f->list->looper, f->fd, EPOLLOUT ); in fdhandler_enqueue()
895 fdhandler_event( FDHandler* f, int events ) in fdhandler_event() argument
910 if ((len = fd_read(f->fd, p->data, MAX_PAYLOAD)) < 0) { in fdhandler_event()
916 receiver_post( f->receiver, p ); in fdhandler_event()
922 D("%s: disconnect on fd %d", __FUNCTION__, f->fd); in fdhandler_event()
923 fdhandler_close(f); in fdhandler_event()
927 if (events & EPOLLOUT && f->out_first) { in fdhandler_event()
928 Packet* p = f->out_first; in fdhandler_event()
931 avail = p->len - f->out_pos; in fdhandler_event()
932 if ((len = fd_write(f->fd, p->data + f->out_pos, avail)) < 0) { in fdhandler_event()
935 f->out_pos += len; in fdhandler_event()
936 if (f->out_pos >= p->len) { in fdhandler_event()
937 f->out_pos = 0; in fdhandler_event()
938 f->out_first = p->next; in fdhandler_event()
940 if (f->out_first == NULL) { in fdhandler_event()
941 f->out_ptail = &f->out_first; in fdhandler_event()
942 looper_disable( f->list->looper, f->fd, EPOLLOUT ); in fdhandler_event()
956 FDHandler* f = xalloc0(sizeof(*f)); in fdhandler_new() local
958 f->fd = fd; in fdhandler_new()
959 f->list = list; in fdhandler_new()
960 f->receiver[0] = receiver[0]; in fdhandler_new()
961 f->out_first = NULL; in fdhandler_new()
962 f->out_ptail = &f->out_first; in fdhandler_new()
963 f->out_pos = 0; in fdhandler_new()
965 fdhandler_prepend(f, &list->active); in fdhandler_new()
967 looper_add( list->looper, fd, (EventFunc) fdhandler_event, f ); in fdhandler_new()
970 return f; in fdhandler_new()
979 fdhandler_accept_event( FDHandler* f, int events ) in fdhandler_accept_event() argument
985 D("%s: accepting on fd %d", __FUNCTION__, f->fd); in fdhandler_accept_event()
988 p->channel = fd_accept(f->fd); in fdhandler_accept_event()
994 receiver_post( f->receiver, p ); in fdhandler_accept_event()
999 D("%s: closing accept fd %d", __FUNCTION__, f->fd); in fdhandler_accept_event()
1000 fdhandler_close(f); in fdhandler_accept_event()
1015 FDHandler* f = xalloc0(sizeof(*f)); in fdhandler_new_accept() local
1017 f->fd = fd; in fdhandler_new_accept()
1018 f->list = list; in fdhandler_new_accept()
1019 f->receiver[0] = receiver[0]; in fdhandler_new_accept()
1021 fdhandler_prepend(f, &list->active); in fdhandler_new_accept()
1023 looper_add( list->looper, fd, (EventFunc) fdhandler_accept_event, f ); in fdhandler_new_accept()
1027 return f; in fdhandler_new_accept()