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 vt‐
       srvhello.  The framework below takes care of this detail automatically;
       vtsrvhello  is  provided for programs that do not use the functions be‐
       low.

       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  re‐
       quest  from any client connected to the service srv.  Hello and goodbye
       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 re‐
       jects 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)