Update HTTP to use data-xfer interface.

This commit is contained in:
Michael Brown
2007-05-29 15:37:09 +00:00
parent 0dfd5b84fd
commit 735e07268e
4 changed files with 281 additions and 297 deletions

View File

@@ -7,56 +7,10 @@
*
*/
#include <stdint.h>
#include <gpxe/stream.h>
#include <gpxe/async.h>
#include <gpxe/linebuf.h>
#include <gpxe/uri.h>
/** HTTP default port */
#define HTTP_PORT 80
/** HTTPS default port */
#define HTTPS_PORT 443
/** HTTP receive state */
enum http_rx_state {
HTTP_RX_RESPONSE = 0,
HTTP_RX_HEADER,
HTTP_RX_DATA,
HTTP_RX_DEAD,
};
/**
* An HTTP request
*
*/
struct http_request {
/** URI being fetched */
struct uri *uri;
/** Data buffer to fill */
struct buffer *buffer;
/** Asynchronous operation */
struct async async;
/** HTTP response code */
unsigned int response;
/** HTTP Content-Length */
size_t content_length;
/** Server address */
struct sockaddr server;
/** Stream application for this request */
struct stream_application stream;
/** Number of bytes already sent */
size_t tx_offset;
/** RX state */
enum http_rx_state rx_state;
/** Line buffer for received header lines */
struct line_buffer linebuf;
};
extern int http_get ( struct uri *uri, struct buffer *buffer,
struct async *parent );
#endif /* _GPXE_HTTP_H */

View File

@@ -21,8 +21,8 @@ struct line_buffer {
};
extern char * buffered_line ( struct line_buffer *linebuf );
extern int line_buffer ( struct line_buffer *linebuf,
const char **data, size_t *len );
extern ssize_t line_buffer ( struct line_buffer *linebuf,
const char *data, size_t len );
extern void empty_line_buffer ( struct line_buffer *linebuf );
#endif /* _GPXE_LINEBUF_H */