NAME¶
ixp_pending_write, ixp_pending_print, ixp_pending_vprint, ixp_pending_pushfid,
ixp_pending_clunk, ixp_pending_flush, ixp_pending_respond, IxpPending
SYNOPSIS¶
#include <ixp_srvutil.h>
void ixp_pending_write(IxpPending *pending, const char *dat, long ndat);
int ixp_pending_print(IxpPending *pending, const char *fmt, ...);
int ixp_pending_vprint(IxpPending *pending, const char *fmt, va_list ap);
void ixp_pending_pushfid(IxpPending *pending, IxpFid *fid);
bool ixp_pending_clunk(Ixp9Req *req);
void ixp_pending_flush(Ixp9Req *req);
void ixp_pending_respond(Ixp9Req *req);
typedef struct IxpPending IxpPending;
struct IxpPending {
/* Private members */
...
}
DESCRIPTION¶
These functions aid in writing virtual files used for broadcasting events or
writing data when it becomes available. When a file to be used with these
functions is opened, ixp_pending_pushfid should be called with its
IxpFid(3) as an argument. This sets the IxpFid's
pending member
to true. Thereafter, for each file with its
pending member set,
ixp_pending_respond should be called for each TRead request, ixp_pending_clunk
for each TClunk request, and ixp_pending_flush for each TFlush request.
ixp_pending_write queues the data in
dat of length
ndat to be
written to each currently pending fid in
pending. If there is a read
request pending for a given fid, the data is written immediately. Otherwise,
it is written the next time ixp_pending_respond is called. Likewise, if there
is data queued when ixp_pending_respond is called, it is written immediately,
otherwise the request is queued.
ixp_pending_print and ixp_pending_vprint call ixp_pending_write after formatting
their arguments with
ixp_vsmprint(3).
The IxpPending data structure is opaque and should be initialized zeroed before
using these functions for the first time.
RETURN VALUE¶
ixp_pending_clunk returns true if
pending has any more pending IxpFids.