X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~mdw/git/mLib/blobdiff_plain/08da152ecf0c34dbb9fbfa9e863f1057c092e860..471f9daa24ee9251730e234fe92ad65c1fa9dff3:/man/conn.3 diff --git a/man/conn.3 b/man/conn.3 index ca4eaa9..3ecc43f 100644 --- a/man/conn.3 +++ b/man/conn.3 @@ -1,17 +1,17 @@ .\" -*-nroff-*- -.TH conn 3 "23 May 1999" mLib +.TH conn 3 "23 May 1999" "Straylight/Edgeware" "mLib utilities library" .\" @conn_init .\" @conn_kill .SH NAME conn \- selector for nonblocking connections .SH SYNOPSIS .nf -.B "#include +.B "#include " -.BI "void conn_init(conn *" c ", sel_state *" s ", int " fd , -.BI " struct sockaddr *" dst ", int " dsz , -.BI " void (*" func ")(int " fd ", void *" p ), -.BI " void *" p ); +.BI "int conn_init(conn *" c ", sel_state *" s ", int " fd , +.BI " struct sockaddr *" dst ", int " dsz , +.BI " void (*" func ")(int " fd ", void *" p ), +.BI " void *" p ); .BI "void conn_kill(conn *" c ); .fi @@ -28,48 +28,67 @@ selector must be initialized. This requires a call to .B conn_init with a fairly large number of arguments: .TP -.I c +.BI "conn *" c Pointer to .B conn object which needs to be initialized. .TP -.I s +.BI "sel_state *" s Pointer to a multiplexor object (type .BR sel_state ) to which this selector should be attached. See .BR sel (3) for more details about multiplexors, and how this whole system works. .TP -.I fd +.BI "int " fd File descriptor for the socket you want to connect. This becomes the `property' of the .B conn selector until the connection attempt finishes. For example, if there's an error, the descriptor will be closed. .TP -.I dst +.BI "struct sockaddr *" dst Pointer to destination socket address for the connection. Make sure that the address has the right family. .TP -.I dsz +.BI "int " dsz Size of the destination socket address. .TP -.I func +.BI "void (*" func ")(int " fd ", void *" p ) A function to call when the connection is complete. It is passed the file descriptor of the connected socket, and the pointer passed to .B conn_init as the .I p -argument. If the connection failed, a file descriptor value of \-1 is -passed, and the global -.B errno -value is set appropriately. +argument. .TP -.I p +.BI "void *" p An arbitrary pointer whose value is passed to the handler function when the connection finishes. .PP +A few words are in order about +.BR conn_init 's +detailed behaviour and return value. If the it returns \-1, the +connection attempt has failed immediately (an error code is stored in +the global variable +.BR errno ), +the file descriptor has been +.IR closed , +and the connection function will +.I not +be called. If it returns zero, then there has been no immediate +failure; the connection function +.I might +have been called, if the connection succeeded immediately, but it will +certainly be called some time, unless the connector is killed (see +.B conn_kill +below). When the connection function is called, it will either be +passed the file descriptor of the new-connected socket (to indicate +success) or the value \-1 for failure; in the latter case, an +appropriate error code is stored in +.BR errno . +.PP If you want to cancel the connection attempt before it finishes, call .B conn_kill with the address of the selector. The file descriptor is closed, and