Update ftp.c and hello.c to use the generic async_operations API.
[people/xl0/gpxe.git] / src / include / gpxe / hello.h
1 #ifndef _GPXE_HELLO_H
2 #define _GPXE_HELLO_H
3
4 /** @file
5  *
6  * "Hello world" TCP protocol
7  *
8  */
9
10 #include <stdint.h>
11 #include <gpxe/tcp.h>
12 #include <gpxe/async.h>
13
14 enum hello_state {
15         HELLO_SENDING_MESSAGE = 1,
16         HELLO_SENDING_ENDL,
17 };
18
19 /**
20  * A "hello world" request
21  *
22  */
23 struct hello_request {
24         /** TCP connection for this request */
25         struct tcp_connection tcp;
26         /** Current state */
27         enum hello_state state;
28         /** Message to be transmitted */
29         const char *message;
30         /** Amount of message remaining to be transmitted */
31         size_t remaining;
32         /** Callback function
33          *
34          * @v data      Received data
35          * @v len       Length of received data
36          *
37          * This function is called for all data received from the
38          * remote server.
39          */
40         void ( *callback ) ( char *data, size_t len );
41         /** Asynchronous operation */
42         struct async_operation aop;
43 };
44
45 extern struct async_operation * say_hello ( struct hello_request *hello );
46
47 #endif