glenda.party
term% ls -F
term% cat index.txt
VENTI-SERVER(2)               System Calls Manual              VENTI-SERVER(2)



NAME
       vtsrvhello, vtlisten, vtgetreq, vtrespond - Venti server

SYNOPSIS
       #include <u.h>
       #include <libc.h>
       #include <venti.h>

       typedef struct VtReq
       {
              VtFcall tx;
              VtFcall rx;
              ...
       } VtReq;

       int    vtsrvhello(VtConn *z)

       VtSrv* vtlisten(char *addr)

       VtReq* vtgetreq(VtSrv *srv)

       void   vtrespond(VtReq *req)

DESCRIPTION
       These routines execute the server side of the venti(6) protocol.

       Vtsrvhello  executes  the server side of the initial hello transaction.
       It sets z->uid with the user name claimed by the other side.  Each  new
       connection   must   be   initialized  by  running  vtversion  and  then
       vtsrvhello.  The framework below takes care of  this  detail  automati‐
       cally;  vtsrvhello  is  provided for programs that do not use the func‐
       tions below.

       Vtlisten, vtgetreq, and vtrespond provide a simple framework for  writ‐
       ing Venti servers.

       Vtlisten announces at the network address addr, returning a fresh VtSrv
       structure representing the service.

       Vtgetreq waits for and returns the next  read,  write,  sync,  or  ping
       request  from any client connected to the service srv.  Hello and good‐
       bye messages are handled internally and not  returned  to  the  client.
       The  interface  does not distinguish between the different clients that
       may be connected at any given time.  The request can be found in the tx
       field of the returned VtReq.

       Once  a  request  has  been  served and a response stored in r->rx, the
       server should call vtrespond to send the response to the client.  Vtre‐
       spond  frees  the  structure  r  as  well as the packets r->tx.data and
       r->rx.data.

EXAMPLE
       /sys/src/cmd/venti contains two simple Venti servers ro.c and devnull.c
       written  using  these  routines.   Ro  is  a  read-only Venti proxy (it
       rejects write requests).   Devnull  is  a  dangerous  write-only  Venti
       server:  it  discards all blocks written to it and returns error on all
       reads.

SOURCE
       /sys/src/libventi

SEE ALSO
       venti(2), venti-conn(2), venti-packet(2), venti(6), venti(8)



                                                               VENTI-SERVER(2)