Blame


1 be7cbb4e 2005-07-12 devnull .TH VENTI-CONN 3
2 be7cbb4e 2005-07-12 devnull .SH NAME
3 be7cbb4e 2005-07-12 devnull VtConn, vtconn, vtdial, vtfreeconn, vtsend, vtrecv, vtversion,
4 be7cbb4e 2005-07-12 devnull vtdebug, vthangup \- Venti network connections
5 be7cbb4e 2005-07-12 devnull .SH SYNOPSIS
6 be7cbb4e 2005-07-12 devnull .PP
7 be7cbb4e 2005-07-12 devnull .ft L
8 be7cbb4e 2005-07-12 devnull #include <u.h>
9 be7cbb4e 2005-07-12 devnull .br
10 be7cbb4e 2005-07-12 devnull #include <libc.h>
11 be7cbb4e 2005-07-12 devnull .br
12 be7cbb4e 2005-07-12 devnull #include <venti.h>
13 be7cbb4e 2005-07-12 devnull .PP
14 be7cbb4e 2005-07-12 devnull .ft L
15 be7cbb4e 2005-07-12 devnull .nf
16 be7cbb4e 2005-07-12 devnull .ta +\w'\fL 'u
17 be7cbb4e 2005-07-12 devnull typedef struct VtConn {
18 be7cbb4e 2005-07-12 devnull int debug;
19 be7cbb4e 2005-07-12 devnull char *version;
20 be7cbb4e 2005-07-12 devnull char *uid;
21 be7cbb4e 2005-07-12 devnull char *sid;
22 be7cbb4e 2005-07-12 devnull char addr[256];
23 be7cbb4e 2005-07-12 devnull ...
24 be7cbb4e 2005-07-12 devnull } VtConn;
25 be7cbb4e 2005-07-12 devnull .PP
26 be7cbb4e 2005-07-12 devnull .ta \w'\fLextern int 'u
27 be7cbb4e 2005-07-12 devnull .B
28 be7cbb4e 2005-07-12 devnull VtConn* vtconn(int infd, int outfd)
29 be7cbb4e 2005-07-12 devnull .PP
30 be7cbb4e 2005-07-12 devnull .B
31 be7cbb4e 2005-07-12 devnull VtConn* vtdial(char *addr)
32 be7cbb4e 2005-07-12 devnull .PP
33 be7cbb4e 2005-07-12 devnull .B
34 be7cbb4e 2005-07-12 devnull int vtversion(VtConn *z)
35 be7cbb4e 2005-07-12 devnull .PP
36 be7cbb4e 2005-07-12 devnull .B
37 be7cbb4e 2005-07-12 devnull int vtsend(VtConn *z, Packet *p)
38 be7cbb4e 2005-07-12 devnull .PP
39 be7cbb4e 2005-07-12 devnull .B
40 be7cbb4e 2005-07-12 devnull Packet* vtrecv(VtConn *z)
41 be7cbb4e 2005-07-12 devnull .PP
42 be7cbb4e 2005-07-12 devnull .B
43 be7cbb4e 2005-07-12 devnull void vtrecvproc(void *z)
44 be7cbb4e 2005-07-12 devnull .PP
45 be7cbb4e 2005-07-12 devnull .B
46 be7cbb4e 2005-07-12 devnull void vtsendproc(void *z)
47 be7cbb4e 2005-07-12 devnull .PP
48 be7cbb4e 2005-07-12 devnull .B
49 be7cbb4e 2005-07-12 devnull void vtdebug(VtConn *z, char *fmt, ...)
50 be7cbb4e 2005-07-12 devnull .PP
51 be7cbb4e 2005-07-12 devnull .B
52 be7cbb4e 2005-07-12 devnull void vthangup(VtConn *z)
53 be7cbb4e 2005-07-12 devnull .PP
54 be7cbb4e 2005-07-12 devnull .B
55 be7cbb4e 2005-07-12 devnull void vtfreeconn(VtConn *z)
56 be7cbb4e 2005-07-12 devnull .PP
57 be7cbb4e 2005-07-12 devnull .B
58 be7cbb4e 2005-07-12 devnull extern int chattyventi; /* default 0 */
59 be7cbb4e 2005-07-12 devnull .SH DESCRIPTION
60 be7cbb4e 2005-07-12 devnull A
61 be7cbb4e 2005-07-12 devnull .B VtConn
62 be7cbb4e 2005-07-12 devnull structure represents a connection to a Venti server
63 be7cbb4e 2005-07-12 devnull (when used by a client) or to a client (when used by a server).
64 be7cbb4e 2005-07-12 devnull .PP
65 be7cbb4e 2005-07-12 devnull .I Vtconn
66 be7cbb4e 2005-07-12 devnull initializes a new connection structure using file descriptors
67 be7cbb4e 2005-07-12 devnull .I infd
68 be7cbb4e 2005-07-12 devnull and
69 be7cbb4e 2005-07-12 devnull .I outfd
70 be7cbb4e 2005-07-12 devnull (which may be the same)
71 be7cbb4e 2005-07-12 devnull for reading and writing.
72 be7cbb4e 2005-07-12 devnull .I Vtdial
73 be7cbb4e 2005-07-12 devnull dials the given network address
74 be7cbb4e 2005-07-12 devnull (see
75 be7cbb4e 2005-07-12 devnull .IR dial (3))
76 be7cbb4e 2005-07-12 devnull and returns a corresponding connection.
77 be7cbb4e 2005-07-12 devnull It returns nil if the connection cannot be established.
78 be7cbb4e 2005-07-12 devnull .PP
79 be7cbb4e 2005-07-12 devnull .I Vtversion
80 be7cbb4e 2005-07-12 devnull exchanges version information with the remote side
81 be7cbb4e 2005-07-12 devnull as described in
82 be7cbb4e 2005-07-12 devnull .IR venti (7).
83 be7cbb4e 2005-07-12 devnull The negotiated version is stored in
84 be7cbb4e 2005-07-12 devnull .IB z -> version \fR.
85 be7cbb4e 2005-07-12 devnull .PP
86 be7cbb4e 2005-07-12 devnull .I Vtsend
87 be7cbb4e 2005-07-12 devnull writes a packet
88 be7cbb4e 2005-07-12 devnull (see
89 be7cbb4e 2005-07-12 devnull .IR venti-packet (3))
90 be7cbb4e 2005-07-12 devnull on the connection
91 be7cbb4e 2005-07-12 devnull .IR z .
92 be7cbb4e 2005-07-12 devnull The packet
93 be7cbb4e 2005-07-12 devnull .IR p
94 be7cbb4e 2005-07-12 devnull should be a formatted Venti message as might
95 be7cbb4e 2005-07-12 devnull be returned by
96 be7cbb4e 2005-07-12 devnull .IR vtfcallpack ;
97 be7cbb4e 2005-07-12 devnull .I vtsend
98 be7cbb4e 2005-07-12 devnull will add the two-byte length field
99 be7cbb4e 2005-07-12 devnull (see
100 be7cbb4e 2005-07-12 devnull .IR venti (7))
101 be7cbb4e 2005-07-12 devnull at the begnning.
102 be7cbb4e 2005-07-12 devnull .I Vtsend
103 be7cbb4e 2005-07-12 devnull frees
104 be7cbb4e 2005-07-12 devnull .IR p ,
105 be7cbb4e 2005-07-12 devnull even on error.
106 be7cbb4e 2005-07-12 devnull .PP
107 be7cbb4e 2005-07-12 devnull .I Vtrecv
108 be7cbb4e 2005-07-12 devnull reads a packet from the connection
109 be7cbb4e 2005-07-12 devnull .IR z .
110 be7cbb4e 2005-07-12 devnull Analogous to
111 be7cbb4e 2005-07-12 devnull .IR vtsend ,
112 be7cbb4e 2005-07-12 devnull the data read from the connection must start with
113 be7cbb4e 2005-07-12 devnull a two-byte length, but the returned packet will omit them.
114 be7cbb4e 2005-07-12 devnull .PP
115 be7cbb4e 2005-07-12 devnull By default,
116 be7cbb4e 2005-07-12 devnull .I vtsend
117 be7cbb4e 2005-07-12 devnull and
118 be7cbb4e 2005-07-12 devnull .I vtrecv
119 be7cbb4e 2005-07-12 devnull block until the packet can be written or read from the network.
120 be7cbb4e 2005-07-12 devnull In a threaded program
121 be7cbb4e 2005-07-12 devnull (see
122 be7cbb4e 2005-07-12 devnull .IR thread (3)),
123 be7cbb4e 2005-07-12 devnull this may not be desirable.
124 be7cbb4e 2005-07-12 devnull If the caller arranges for
125 be7cbb4e 2005-07-12 devnull .IR vtsendproc
126 be7cbb4e 2005-07-12 devnull and
127 be7cbb4e 2005-07-12 devnull .IR vtrecvproc
128 be7cbb4e 2005-07-12 devnull to run in their own procs
129 be7cbb4e 2005-07-12 devnull (typically by calling
130 be7cbb4e 2005-07-12 devnull .IR proccreate ),
131 be7cbb4e 2005-07-12 devnull then
132 be7cbb4e 2005-07-12 devnull .I vtsend
133 be7cbb4e 2005-07-12 devnull and
134 be7cbb4e 2005-07-12 devnull .I vtrecv
135 be7cbb4e 2005-07-12 devnull will yield the proc in which they are run
136 be7cbb4e 2005-07-12 devnull to other threads when waiting on the network.
137 be7cbb4e 2005-07-12 devnull The
138 be7cbb4e 2005-07-12 devnull .B void*
139 be7cbb4e 2005-07-12 devnull argument to
140 be7cbb4e 2005-07-12 devnull .I vtsendproc
141 be7cbb4e 2005-07-12 devnull and
142 be7cbb4e 2005-07-12 devnull .I vtrecvproc
143 be7cbb4e 2005-07-12 devnull must be the connection structure
144 be7cbb4e 2005-07-12 devnull .IR z .
145 be7cbb4e 2005-07-12 devnull .PP
146 be7cbb4e 2005-07-12 devnull .I Vtdebug
147 be7cbb4e 2005-07-12 devnull prints the formatted message to standard error
148 be7cbb4e 2005-07-12 devnull when
149 be7cbb4e 2005-07-12 devnull .IB z -> debug
150 be7cbb4e 2005-07-12 devnull is set. Otherwise it is a no-op.
151 be7cbb4e 2005-07-12 devnull .PP
152 be7cbb4e 2005-07-12 devnull .I Vthangup
153 be7cbb4e 2005-07-12 devnull hangs up a connection.
154 be7cbb4e 2005-07-12 devnull It closes the associated file descriptors
155 be7cbb4e 2005-07-12 devnull and shuts down send and receive procs if they have been
156 be7cbb4e 2005-07-12 devnull started.
157 be7cbb4e 2005-07-12 devnull Future calls to
158 be7cbb4e 2005-07-12 devnull .IR vtrecv
159 be7cbb4e 2005-07-12 devnull or
160 be7cbb4e 2005-07-12 devnull .IR vtsend
161 be7cbb4e 2005-07-12 devnull will return errors.
162 be7cbb4e 2005-07-12 devnull Additional calls to
163 be7cbb4e 2005-07-12 devnull .I vthangup
164 be7cbb4e 2005-07-12 devnull will have no effect.
165 be7cbb4e 2005-07-12 devnull .PP
166 be7cbb4e 2005-07-12 devnull .I Vtfreeconn
167 be7cbb4e 2005-07-12 devnull frees the connection structure, hanging it up first
168 be7cbb4e 2005-07-12 devnull if necessary.
169 be7cbb4e 2005-07-12 devnull .PP
170 be7cbb4e 2005-07-12 devnull If the global variable
171 be7cbb4e 2005-07-12 devnull .I chattyventi
172 be7cbb4e 2005-07-12 devnull is set, the library prints all Venti RPCs to standard error
173 be7cbb4e 2005-07-12 devnull as they are sent or received.
174 be7cbb4e 2005-07-12 devnull .SH SOURCE
175 be7cbb4e 2005-07-12 devnull .B \*9/src/libventi
176 be7cbb4e 2005-07-12 devnull .SH SEE ALSO
177 be7cbb4e 2005-07-12 devnull .IR venti (1),
178 be7cbb4e 2005-07-12 devnull .IR venti (3),
179 be7cbb4e 2005-07-12 devnull .IR venti-client (3),
180 be7cbb4e 2005-07-12 devnull .IR venti-packet (3),
181 be7cbb4e 2005-07-12 devnull .IR venti-server (3),
182 be7cbb4e 2005-07-12 devnull .IR venti (7)
183 be7cbb4e 2005-07-12 devnull .SH DIAGNOSTICS
184 be7cbb4e 2005-07-12 devnull Routines that return pointers return nil on error.
185 be7cbb4e 2005-07-12 devnull Routines returning integers return 0 on success, \-1 on error.
186 be7cbb4e 2005-07-12 devnull All routines set
187 be7cbb4e 2005-07-12 devnull .I errstr
188 be7cbb4e 2005-07-12 devnull on error.