Low-overhead filter streams

This commit is contained in:
Michael Brown
2007-01-30 12:17:03 +00:00
parent ddf3b56d47
commit 2f7eac1646
2 changed files with 207 additions and 0 deletions

44
src/include/gpxe/filter.h Normal file
View File

@@ -0,0 +1,44 @@
#ifndef _GPXE_FILTER_H
#define _GPXE_FILTER_H
/** @file
*
* Filter streams
*/
#include <gpxe/stream.h>
/** A filter stream */
struct filter_stream {
/** Upstream
*
* This is the end pointing towards the top-level application
* (e.g. HTTP).
*/
struct stream_connection upstream;
/** Downstream
*
* This is the end pointing towards the bottom-level
* connection (e.g. TCP).
*/
struct stream_application downstream;
};
extern void filter_connected ( struct stream_application *app );
extern void filter_closed ( struct stream_application *app, int rc );
extern void filter_senddata ( struct stream_application *app,
void *data, size_t len );
extern void filter_acked ( struct stream_application *app, size_t len );
extern void filter_newdata ( struct stream_application *app,
void *data, size_t len );
extern int filter_bind ( struct stream_connection *conn,
struct sockaddr *local );
extern int filter_connect ( struct stream_connection *conn,
struct sockaddr *peer );
extern void filter_close ( struct stream_connection *conn );
extern int filter_send ( struct stream_connection *conn,
void *data, size_t len );
extern int filter_kick ( struct stream_connection *conn );
#endif /* _GPXE_FILTER_H */