filter.h File Reference

Data transfer filters. More...

#include <stddef.h>
#include <gpxe/xfer.h>

Go to the source code of this file.

Data Structures

struct  xfer_filter_half
 Half of a data transfer filter. More...

Functions

 FILE_LICENCE (GPL2_OR_LATER)
static __attribute__ ((always_inline)) struct xfer_interface *filter_other_half(struct xfer_interface *xfer)
 Get data transfer interface for the other half of a data transfer filter.
void filter_close (struct xfer_interface *xfer, int rc)
int filter_vredirect (struct xfer_interface *xfer, int type, va_list args)
size_t filter_window (struct xfer_interface *xfer)
struct io_bufferfilter_alloc_iob (struct xfer_interface *xfer, size_t len)
int filter_deliver_iob (struct xfer_interface *xfer, struct io_buffer *iobuf, struct xfer_metadata *meta)
int filter_deliver_raw (struct xfer_interface *xfer, const void *data, size_t len)
static void filter_init (struct xfer_filter_half *left, struct xfer_interface_operations *left_op, struct xfer_filter_half *right, struct xfer_interface_operations *right_op, struct refcnt *refcnt)
 Initialise a data transfer filter.


Detailed Description

Data transfer filters.

Definition in file filter.h.


Function Documentation

FILE_LICENCE ( GPL2_OR_LATER   ) 

static __attribute__ ( (always_inline)   )  [inline, static]

Get data transfer interface for the other half of a data transfer filter.

Parameters:
xfer Data transfer interface
Return values:
other Other half's data transfer interface

Definition at line 36 of file filter.h.

References container_of, xfer_filter_half::other, and xfer_filter_half::xfer.

00037                                                   {
00038         struct xfer_filter_half *half = 
00039                 container_of ( xfer, struct xfer_filter_half, xfer );
00040         return &half->other->xfer;
00041 }

void filter_close ( struct xfer_interface xfer,
int  rc 
)

Definition at line 36 of file filter.c.

References xfer_close().

00036                                                           {
00037         struct xfer_interface *other = filter_other_half ( xfer );
00038 
00039         xfer_close ( other, rc );
00040 }

int filter_vredirect ( struct xfer_interface xfer,
int  type,
va_list  args 
)

Definition at line 42 of file filter.c.

References xfer_vredirect().

00043                                        {
00044         struct xfer_interface *other = filter_other_half ( xfer );
00045 
00046         return xfer_vredirect ( other, type, args );
00047 }

size_t filter_window ( struct xfer_interface xfer  ) 

Definition at line 49 of file filter.c.

References xfer_window().

Referenced by tls_plainstream_window().

00049                                                      {
00050         struct xfer_interface *other = filter_other_half ( xfer );
00051 
00052         return xfer_window ( other );
00053 }

struct io_buffer* filter_alloc_iob ( struct xfer_interface xfer,
size_t  len 
) [read]

Definition at line 55 of file filter.c.

References xfer_alloc_iob().

00056                                                    {
00057         struct xfer_interface *other = filter_other_half ( xfer );
00058 
00059         return xfer_alloc_iob ( other, len );
00060 }

int filter_deliver_iob ( struct xfer_interface xfer,
struct io_buffer iobuf,
struct xfer_metadata meta 
)

Definition at line 62 of file filter.c.

References xfer_deliver_iob_meta().

00063                                                       {
00064         struct xfer_interface *other = filter_other_half ( xfer );
00065 
00066         return xfer_deliver_iob_meta ( other, iobuf, meta );
00067 }

int filter_deliver_raw ( struct xfer_interface xfer,
const void *  data,
size_t  len 
)

Definition at line 69 of file filter.c.

References xfer_deliver_raw().

00070                                       {
00071         struct xfer_interface *other = filter_other_half ( xfer );
00072 
00073         return xfer_deliver_raw ( other, data, len );
00074 }

static void filter_init ( struct xfer_filter_half left,
struct xfer_interface_operations left_op,
struct xfer_filter_half right,
struct xfer_interface_operations right_op,
struct refcnt refcnt 
) [inline, static]

Initialise a data transfer filter.

Parameters:
left "Left" half of the filter
left_op Data transfer interface operations for "left" half
right "Right" half of the filter
right_op Data transfer interface operations for "right" half
refcnt Containing object reference counter, or NULL

Definition at line 64 of file filter.h.

References xfer_filter_half::other, xfer_filter_half::xfer, and xfer_init().

Referenced by add_tls().

00068                                                          {
00069         xfer_init ( &left->xfer, left_op, refcnt );
00070         xfer_init ( &right->xfer, right_op, refcnt );
00071         left->other = right;
00072         right->other = left;
00073 }


Generated on Tue Apr 6 20:01:50 2010 for gPXE by  doxygen 1.5.7.1