| tventi-client.3 - plan9port - [fork] Plan 9 from user space | |
| git clone git://src.adamsgaard.dk/plan9port | |
| Log | |
| Files | |
| Refs | |
| README | |
| LICENSE | |
| --- | |
| tventi-client.3 (3343B) | |
| --- | |
| 1 .TH VENTI-CLIENT 3 | |
| 2 .SH NAME | |
| 3 vtconnect, vthello, vtread, vtwrite, vtreadpacket, vtwritepacket, vtsync… | |
| 4 .SH SYNOPSIS | |
| 5 .ft L | |
| 6 #include <u.h> | |
| 7 .br | |
| 8 #include <libc.h> | |
| 9 .br | |
| 10 #include <venti.h> | |
| 11 .ta +\w'\fLPacket* 'u +\w'\fLxxxxxxxx'u | |
| 12 .PP | |
| 13 .B | |
| 14 Packet* vtrpc(VtConn *z, Packet *p) | |
| 15 .PP | |
| 16 .B | |
| 17 int vthello(VtConn *z) | |
| 18 .PP | |
| 19 .B | |
| 20 int vtconnect(VtConn *z) | |
| 21 .PP | |
| 22 .B | |
| 23 int vtread(VtConn *z, uchar score[VtScoreSize], | |
| 24 .br | |
| 25 .B | |
| 26 uint type, uchar *buf, int n) | |
| 27 .PP | |
| 28 .B | |
| 29 int vtwrite(VtConn *z, uchar score[VtScoreSize], | |
| 30 .br | |
| 31 .B | |
| 32 uint type, uchar *buf, int n) | |
| 33 .PP | |
| 34 .B | |
| 35 Packet* vtreadpacket(VtConn *z, uchar score[VtScoreSize], | |
| 36 .br | |
| 37 .B | |
| 38 uint type, int n) | |
| 39 .PP | |
| 40 .B | |
| 41 int vtwritepacket(VtConn *z, uchar score[VtScoreSize], | |
| 42 .br | |
| 43 .B | |
| 44 uint type, Packet *p) | |
| 45 .PP | |
| 46 .B | |
| 47 int vtsync(VtConn *z) | |
| 48 .PP | |
| 49 .B | |
| 50 int vtping(VtConn *z) | |
| 51 .PP | |
| 52 .B | |
| 53 extern int ventidoublechecksha1; /* default 1 */ | |
| 54 .SH DESCRIPTION | |
| 55 These routines execute the client side of the | |
| 56 .MR venti (7) | |
| 57 protocol. | |
| 58 .PP | |
| 59 .I Vtrpc | |
| 60 executes a single Venti RPC transaction, sending the request | |
| 61 packet | |
| 62 .IR p | |
| 63 and then waiting for and returning the response packet. | |
| 64 .I Vtrpc | |
| 65 will set the tag in the packet. | |
| 66 .I Vtrpc | |
| 67 frees | |
| 68 .IR p , | |
| 69 even on error. | |
| 70 .I Vtrpc | |
| 71 is typically called only indirectly, via the functions below. | |
| 72 .PP | |
| 73 .I Vthello | |
| 74 executes a | |
| 75 .B hello | |
| 76 transaction, setting | |
| 77 .IB z ->sid | |
| 78 to the name used by the server. | |
| 79 .I Vthello | |
| 80 is typically called only indirectly, via | |
| 81 .IR vtconnect . | |
| 82 .PP | |
| 83 .I Vtconnect | |
| 84 calls | |
| 85 .I vtversion | |
| 86 (see | |
| 87 .MR venti-conn (3) ) | |
| 88 and | |
| 89 .IR vthello , | |
| 90 in that order, returning success only | |
| 91 if both succeed. | |
| 92 This sequence (calling | |
| 93 .I vtversion | |
| 94 and then | |
| 95 .IR vthello ) | |
| 96 must be done before the functions below can be called. | |
| 97 .PP | |
| 98 .I Vtread | |
| 99 reads the block with the given | |
| 100 .I score | |
| 101 and | |
| 102 .I type | |
| 103 from the server, | |
| 104 stores the returned data | |
| 105 in memory at | |
| 106 .IR buf , | |
| 107 and returns the number of bytes read. | |
| 108 If the server's block has size larger than | |
| 109 .IR n , | |
| 110 .I vtread | |
| 111 does not modify | |
| 112 .I buf | |
| 113 and | |
| 114 returns an error. | |
| 115 .PP | |
| 116 .I Vtwrite | |
| 117 writes the | |
| 118 .I n | |
| 119 bytes in | |
| 120 .I buf | |
| 121 as a block of the given | |
| 122 .IR type , | |
| 123 setting | |
| 124 .IR score . | |
| 125 .PP | |
| 126 .I Vtreadpacket | |
| 127 and | |
| 128 .I vtwritepacket | |
| 129 are like | |
| 130 .I vtread | |
| 131 and | |
| 132 .I vtwrite | |
| 133 but return or accept the block contents in the | |
| 134 form of a | |
| 135 .BR Packet . | |
| 136 They avoid making a copy of the data. | |
| 137 .PP | |
| 138 .I Vtsync | |
| 139 causes the server to flush all pending write requests | |
| 140 to disk before returning. | |
| 141 .PP | |
| 142 .I Vtping | |
| 143 executes a ping transaction with the server. | |
| 144 .PP | |
| 145 By default, | |
| 146 .I vtread | |
| 147 and | |
| 148 .I vtreadpacket | |
| 149 check that the SHA1 hash of the returned data | |
| 150 matches the requested | |
| 151 .IR score , | |
| 152 and | |
| 153 .I vtwrite | |
| 154 and | |
| 155 .I vtwritepacket | |
| 156 check that the returned | |
| 157 .I score | |
| 158 matches the SHA1 hash of the written data. | |
| 159 Setting | |
| 160 .I ventidoublechecksha1 | |
| 161 to zero disables these extra checks, | |
| 162 mainly for benchmarking purposes. | |
| 163 Doing so in production code is not recommended. | |
| 164 .PP | |
| 165 These functions can be called from multiple threads | |
| 166 or procs simultaneously to issue requests | |
| 167 in parallel. | |
| 168 Programs that issue requests from multiple threads | |
| 169 in the same proc should start separate procs running | |
| 170 .I vtsendproc | |
| 171 and | |
| 172 .I vtrecvproc | |
| 173 as described in | |
| 174 .MR venti-conn (3) . | |
| 175 .SH SOURCE | |
| 176 .B \*9/src/libventi | |
| 177 .SH SEE ALSO | |
| 178 .MR venti (3) , | |
| 179 .MR venti-conn (3) , | |
| 180 .MR venti-packet (3) , | |
| 181 .MR venti (7) | |
| 182 .SH DIAGNOSTICS | |
| 183 .I Vtrpc | |
| 184 and | |
| 185 .I vtpacket | |
| 186 return nil on error. | |
| 187 The other routines return \-1 on error. | |
| 188 .PP | |
| 189 .I Vtwrite | |
| 190 returns 0 on success: there are no partial writes. |