1 #include <exec/types.h>
2 #include <exec/lists.h>
4 // Used to store received data until application asks for it using a A314_READ.
7 struct QueuedData *next;
12 // Socket flags, these are bit masks, can have many of them.
13 #define SOCKET_RCVD_EOS_FROM_APP 0x0004
14 #define SOCKET_RCVD_EOS_FROM_RPI 0x0008
15 #define SOCKET_SENT_EOS_TO_APP 0x0010
16 #define SOCKET_SENT_EOS_TO_RPI 0x0020
17 #define SOCKET_CLOSED 0x0040
18 #define SOCKET_SHOULD_SEND_RESET 0x0080
19 #define SOCKET_IN_SEND_QUEUE 0x0100
33 struct A314_IORequest *pending_connect;
34 struct A314_IORequest *pending_read;
35 struct A314_IORequest *pending_write;
37 struct Socket *next_in_send_queue;
38 UWORD send_queue_required_length;
40 // Data that is received on the stream, but the application didn't read yet.
41 struct QueuedData *rq_head;
42 struct QueuedData *rq_tail;
45 extern struct Socket *send_queue_head;
46 extern struct Socket *send_queue_tail;
48 extern void init_sockets();
50 extern struct Socket *create_socket(struct Task *task, ULONG id);
51 extern void delete_socket(struct Socket *s);
53 extern struct Socket *find_socket(void *sig_task, ULONG socket);
54 extern struct Socket *find_socket_by_stream_id(UBYTE stream_id);
56 extern void add_to_send_queue(struct Socket *s, UWORD required_length);
57 extern void remove_from_send_queue(struct Socket *s);