+/*!
+ * @protocol ITInetSocketDelegate
+ * @abstract Delegate methods for ITInetSocket
+ * @discussion ITInetSockets use these methods to communicate with their delegates
+ */
+@protocol ITInetSocketDelegate
+/*!
+ * @method dataReceived:
+ * @abstract Alerts the delegate of data.
+ * @discussion The delegate should check [sender readPipe] to get the data.
+ * @param sender The socket that the messages came from.
+ */
+- (void) dataReceived:(in ITInetSocket *)sender;
+/*!
+ * @method errorOccured:during:onSocket:
+ * @abstract Alerts the delegate of an error condition.
+ * @discussion The delegate can try retryCondition.
+ * @param err The error class.
+ * @param state What the socket was doing when the error occured.
+ * @param sender The socket the error occured on.
+ */
+- (void) errorOccured:(ITInetSocketError)err during:(ITInetSocketState)state onSocket:(in ITInetSocket*)sender;
+/*!
+ * @method finishedConnecting:
+ * @abstract Alerts the delegate of a successful connection attempt.
+ * @discussion The delegate should send whatever initial data is required for the protocol (nickname for IRC, etc.)
+ * @param sender The socket that established the connection.
+ */
+- (void) finishedConnecting:(in ITInetSocket *)sender;
+@end
+
+/*!
+ * @class ITInetSocket
+ * @abstract An Internet socket class.
+ * @discussion ITInetSocket is an Internet socket class supporting IPv6 and Rendezvous.
+ */
+@interface ITInetSocket : NSObject {
+ @public
+ /*!
+ * @var sockfd
+ * @abstract KLWONZ
+ */
+ int sockfd;
+ int port;
+ unsigned short bufs;
+ volatile int dieflag;
+ volatile int actionflag;
+ id <ITInetSocketDelegate,NSObject> delegate;
+ struct addrinfo *ai, *ai_cur;
+ ITByteStream *readPipe, *writePipe;
+ ITInetSocketState state;
+ NSArray *sarr;