+ ev_io recv_event,
+ send_event,
+ conn_event;
+ StrBuf *ErrMsg; /* if we fail to connect, or lookup, error goes here. */
+
+ /* read/send related... */
+ StrBuf *IOBuf;
+ IOBuffer SendBuf,
+ RecvBuf;
+
+ /* Citadel application callbacks... */
+ IO_CallBack ReadDone, /* Theres new data to read... */
+ SendDone, /* we may send more data */
+ Terminate, /* shutting down... */
+ Timeout, /* Timeout handler; may also be connection timeout */
+ ConnFail, /* What to do when one connection failed? */
+ CustomDNS; /* If the application wants to do custom dns functionality like cycle through different MX-Records */
+
+ IO_LineReaderCallback LineReader; /* if we have linereaders, maybe we want to read more lines before the real application logic is called? */
+
+ /* Custom data; its expected to contain AsyncIO so we can save malloc()s... */
+ DeleteHashDataFunc DeleteData; /* so if we have to destroy you, what to do... */
+ void *Data; /* application specific data */