Oracle iPlanet Web Proxy Server 4.0.14 NSAPI Developer's Guide

W

write

The write filter method is called when output data is to be sent. Filters that modify or consume outgoing data should implement the write filter method.

Upon receiving control, a write implementation should first process the data as necessary, and then pass it on to the next filter layer; for example, by calling net_write(layer->lower, ...,). If the filter buffers outgoing data, it should implement the flush filter method.

Syntax

int write(FilterLayer *layer, const void *buf, int amount);

Returns

The number of bytes consumed, which might be less than the requested amount if an error occurred.

Parameters

FilterLayer *layer is the filter layer in which the filter is installed.

const void *buf is the buffer that contains the outgoing data.

int amount is the number of bytes in the buffer.

Example

int myfilter_write(FilterLayer *layer, const void *buf, int amount)
{
    return net_write(layer->lower, buf, amount);
}
See Also

flush, net_write, writev

writev

The writev filter method is called when multiple buffers of output data are to be sent. Filters that modify or consume outgoing data might implement the writev filter method.

If a filter implements the write filter method but not the writev filter method, the server automatically translates net_writev calls to net_write calls. As a result, filters that deal with the outgoing data stream do not need to implement the writev filter method. However, for performance reasons, filters that implement the write filter method should also implement the writev filter method.

Syntax

int writev(FilterLayer *layer, const struct iovec *iov, int iov_size);

Returns

The number of bytes consumed, which might be less than the requested amount if an error occurred.

Parameters

FilterLayer *layer is the filter layer the filter is installed in.

const struct iovec *iov is an array of iovec structures, each of which contains outgoing data.

int iov_size is the number of iovec structures in the iov array.

Example

int myfilter_writev(FilterLayer *layer, const struct iovec *iov, 
	int iov_size)
{
    return net_writev(layer->lower, iov, iov_size);
}

See Also

flush, net_write, write