xref: /openbmc/qemu/net/stream_data.h (revision 6fae7ce1488e3f5bdcc1747564ea68e7f6f0e931)
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