NAME
Reqqueue, reqqueuecreate, reqqueuepush, reqqueueflush – deferred processing of 9P requests

SYNOPSIS
#include <u.h>
#include <libc.h>
#include <fcall.h>
#include <thread.h>
#include <9p.h>

struct Reqqueue
{
...
};

Reqqueue*     reqqueuecreate(void);
void         reqqueuepush(Reqqueue *q, Req *r, void (*f)(Req *));
void         reqqueueflush(Reqqueue *q, Req *r);
void         reqqueuefree(Reqqueue *q);

DESCRIPTION
Reqqueue provides routines for deferred processing of 9p request in multithreaded 9p servers.

The reqqueuecreate function spawns a process for handling requests returning a pointer to the Reqqueue structure allocated.

To schedule a request to be processed on a queue, reqqueuepush is called with request r and its handler function f.

A previously submitted request can be flushed from a queue by reqqueueflush which will remove the request immediately if processing has not started. If processing has been started, the process will be interrupted.

Reqqueuefree frees a queue. No new requests should be sent to the queue and it will be freed once all requests in it have been processed.

SOURCE
/sys/src/lib9p/queue.c

SEE ALSO
9p(2)