1*adf684ceSLaurent Vivier /* 2*adf684ceSLaurent Vivier * net stream generic functions 3*adf684ceSLaurent Vivier * 4*adf684ceSLaurent Vivier * Copyright Red Hat 5*adf684ceSLaurent Vivier * 6*adf684ceSLaurent Vivier * SPDX-License-Identifier: GPL-2.0-or-later 7*adf684ceSLaurent Vivier */ 8*adf684ceSLaurent Vivier 9*adf684ceSLaurent Vivier typedef struct NetStreamData { 10*adf684ceSLaurent Vivier NetClientState nc; 11*adf684ceSLaurent Vivier QIOChannel *ioc; 12*adf684ceSLaurent Vivier guint ioc_read_tag; 13*adf684ceSLaurent Vivier guint ioc_write_tag; 14*adf684ceSLaurent Vivier SocketReadState rs; 15*adf684ceSLaurent Vivier unsigned int send_index; /* number of bytes sent*/ 16*adf684ceSLaurent Vivier QIOChannelFunc send; 17*adf684ceSLaurent Vivier /* server data */ 18*adf684ceSLaurent Vivier QIOChannel *listen_ioc; 19*adf684ceSLaurent Vivier QIONetListener *listener; 20*adf684ceSLaurent Vivier QIONetListenerClientFunc listen; 21*adf684ceSLaurent Vivier } NetStreamData; 22*adf684ceSLaurent Vivier 23*adf684ceSLaurent Vivier ssize_t net_stream_data_receive(NetStreamData *d, const uint8_t *buf, 24*adf684ceSLaurent Vivier size_t size); 25*adf684ceSLaurent Vivier void net_stream_data_rs_finalize(SocketReadState *rs); 26*adf684ceSLaurent Vivier gboolean net_stream_data_send(QIOChannel *ioc, GIOCondition condition, 27*adf684ceSLaurent Vivier NetStreamData *d); 28*adf684ceSLaurent Vivier int net_stream_data_client_connected(QIOTask *task, NetStreamData *d); 29*adf684ceSLaurent Vivier void net_stream_data_listen(QIONetListener *listener, 30*adf684ceSLaurent Vivier QIOChannelSocket *cioc, 31*adf684ceSLaurent Vivier NetStreamData *d); 32