2 .TH conn 3 "23 May 1999" "Straylight/Edgeware" "mLib utilities library"
6 conn \- selector for nonblocking connections
9 .B "#include <mLib/conn.h>"
11 .BI "int conn_init(conn *" c ", sel_state *" s ", int " fd ,
12 .BI " struct sockaddr *" dst ", int " dsz ,
13 .BI " void (*" func ")(int " fd ", void *" p ),
16 .BI "void conn_kill(conn *" c );
21 selector manages a nonblocking connection to a remote socket. The
22 selector's state is maintained in an object of type
27 selector must be initialized. This requires a call to
29 with a fairly large number of arguments:
34 object which needs to be initialized.
37 Pointer to a multiplexor object (type
39 to which this selector should be attached. See
41 for more details about multiplexors, and how this whole system works.
44 File descriptor for the socket you want to connect. This becomes the
47 selector until the connection attempt finishes. For example, if there's
48 an error, the descriptor will be closed.
50 .BI "struct sockaddr *" dst
51 Pointer to destination socket address for the connection. Make sure
52 that the address has the right family.
55 Size of the destination socket address.
57 .BI "void (*" func ")(int " fd ", void *" p )
58 A function to call when the connection is complete. It is passed the
59 file descriptor of the connected socket, and the pointer passed
67 An arbitrary pointer whose value is passed to the handler function when
68 the connection finishes.
70 A few words are in order about
72 detailed behaviour and return value. If the it returns \-1, the
73 connection attempt has failed immediately (an error code is stored in
76 the file descriptor has been
78 and the connection function will
80 be called. If it returns zero, then there has been no immediate
81 failure; the connection function
83 have been called, if the connection succeeded immediately, but it will
84 certainly be called some time, unless the connector is killed (see
86 below). When the connection function is called, it will either be
87 passed the file descriptor of the new-connected socket (to indicate
88 success) or the value \-1 for failure; in the latter case, an
89 appropriate error code is stored in
92 If you want to cancel the connection attempt before it finishes, call
94 with the address of the selector. The file descriptor is closed, and
95 the selector becomes safe to be discarded.
101 Mark Wooding, <mdw@nsict.org>