Lines Matching refs:auto_clnt
159 AUTO_CLNT *auto_clnt = (AUTO_CLNT *) context; in auto_clnt_event() local
165 if (auto_clnt->vstream == 0) in auto_clnt_event()
168 auto_clnt_close(auto_clnt); in auto_clnt_event()
193 static void auto_clnt_open(AUTO_CLNT *auto_clnt) in auto_clnt_open() argument
201 if (auto_clnt->vstream) in auto_clnt_open()
213 fd = auto_clnt->connect(auto_clnt->endpoint, BLOCKING, auto_clnt->timeout); in auto_clnt_open()
215 msg_warn("connect to %s: %m", auto_clnt->endpoint); in auto_clnt_open()
218 msg_info("%s: connected to %s", myname, auto_clnt->endpoint); in auto_clnt_open()
219 auto_clnt->vstream = vstream_fdopen(fd, O_RDWR); in auto_clnt_open()
220 vstream_control(auto_clnt->vstream, in auto_clnt_open()
221 CA_VSTREAM_CTL_PATH(auto_clnt->endpoint), in auto_clnt_open()
222 CA_VSTREAM_CTL_TIMEOUT(auto_clnt->timeout), in auto_clnt_open()
226 if (auto_clnt->vstream != 0) { in auto_clnt_open()
227 close_on_exec(vstream_fileno(auto_clnt->vstream), CLOSE_ON_EXEC); in auto_clnt_open()
228 event_enable_read(vstream_fileno(auto_clnt->vstream), auto_clnt_event, in auto_clnt_open()
229 (void *) auto_clnt); in auto_clnt_open()
230 if (auto_clnt->max_idle > 0) in auto_clnt_open()
231 event_request_timer(auto_clnt_event, (void *) auto_clnt, in auto_clnt_open()
232 auto_clnt->max_idle); in auto_clnt_open()
233 if (auto_clnt->max_ttl > 0) in auto_clnt_open()
234 event_request_timer(auto_clnt_ttl_event, (void *) auto_clnt, in auto_clnt_open()
235 auto_clnt->max_ttl); in auto_clnt_open()
241 static void auto_clnt_close(AUTO_CLNT *auto_clnt) in auto_clnt_close() argument
248 if (auto_clnt->vstream == 0) in auto_clnt_close()
256 myname, VSTREAM_PATH(auto_clnt->vstream)); in auto_clnt_close()
257 event_disable_readwrite(vstream_fileno(auto_clnt->vstream)); in auto_clnt_close()
258 event_cancel_timer(auto_clnt_event, (void *) auto_clnt); in auto_clnt_close()
259 event_cancel_timer(auto_clnt_ttl_event, (void *) auto_clnt); in auto_clnt_close()
260 (void) vstream_fclose(auto_clnt->vstream); in auto_clnt_close()
261 auto_clnt->vstream = 0; in auto_clnt_close()
266 void auto_clnt_recover(AUTO_CLNT *auto_clnt) in auto_clnt_recover() argument
272 if (auto_clnt->vstream) in auto_clnt_recover()
273 auto_clnt_close(auto_clnt); in auto_clnt_recover()
278 VSTREAM *auto_clnt_access(AUTO_CLNT *auto_clnt) in auto_clnt_access() argument
287 if (auto_clnt->vstream == 0) { in auto_clnt_access()
288 auto_clnt_open(auto_clnt); in auto_clnt_access()
289 handshake = (auto_clnt->vstream ? auto_clnt->handshake : 0); in auto_clnt_access()
291 if (auto_clnt->max_idle > 0) in auto_clnt_access()
292 event_request_timer(auto_clnt_event, (void *) auto_clnt, in auto_clnt_access()
293 auto_clnt->max_idle); in auto_clnt_access()
296 if (handshake != 0 && handshake(auto_clnt->vstream) != 0) in auto_clnt_access()
298 return (auto_clnt->vstream); in auto_clnt_access()
309 AUTO_CLNT *auto_clnt; in auto_clnt_create() local
319 auto_clnt = (AUTO_CLNT *) mymalloc(sizeof(*auto_clnt)); in auto_clnt_create()
320 auto_clnt->vstream = 0; in auto_clnt_create()
321 auto_clnt->endpoint = mystrdup(endpoint); in auto_clnt_create()
322 auto_clnt->timeout = timeout; in auto_clnt_create()
323 auto_clnt->max_idle = max_idle; in auto_clnt_create()
324 auto_clnt->max_ttl = max_ttl; in auto_clnt_create()
325 auto_clnt->handshake = 0; in auto_clnt_create()
327 auto_clnt->connect = inet_connect; in auto_clnt_create()
329 auto_clnt->connect = LOCAL_CONNECT; in auto_clnt_create()
331 auto_clnt->connect = unix_connect; in auto_clnt_create()
337 return (auto_clnt); in auto_clnt_create()
342 const char *auto_clnt_name(AUTO_CLNT *auto_clnt) in auto_clnt_name() argument
344 return (auto_clnt->endpoint); in auto_clnt_name()
349 void auto_clnt_free(AUTO_CLNT *auto_clnt) in auto_clnt_free() argument
351 if (auto_clnt->vstream) in auto_clnt_free()
352 auto_clnt_close(auto_clnt); in auto_clnt_free()
353 myfree(auto_clnt->endpoint); in auto_clnt_free()
354 myfree((void *) auto_clnt); in auto_clnt_free()