00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #if !defined(OF_HAVE_POLL) && defined(OF_HAVE_SYS_SELECT_H)
00018 # include <sys/select.h>
00019 #endif
00020
00021 #import "OFObject.h"
00022
00023 #ifdef _WIN32
00024 # ifndef _WIN32_WINNT
00025 # define _WIN32_WINNT 0x0501
00026 # endif
00027 # include <windows.h>
00028 # include <ws2tcpip.h>
00029 #endif
00030
00031 @class OFStream;
00032 #ifdef OF_HAVE_POLL
00033 @class OFDataArray;
00034 #endif
00035 @class OFMutableArray;
00036 @class OFMutableDictionary;
00037
00042 #ifndef OF_STREAM_OBSERVER_M
00043 @protocol OFStreamObserverDelegate <OFObject>
00044 #else
00045 @protocol OFStreamObserverDelegate
00046 #endif
00047 #ifdef OF_HAVE_OPTIONAL_PROTOCOLS
00048 @optional
00049 #endif
00050
00055 - (void)streamDidBecomeReadyForReading: (OFStream*)stream;
00056
00062 - (void)streamDidBecomeReadyForWriting: (OFStream*)stream;
00063
00069 - (void)streamDidReceiveException: (OFStream*)stream;
00070 @end
00071
00077 @interface OFStreamObserver: OFObject
00078 {
00079 OFMutableArray *readStreams;
00080 OFMutableArray *writeStreams;
00081 OFMutableArray *queue, *queueInfo;
00082 id <OFStreamObserverDelegate> delegate;
00083 #ifdef OF_HAVE_POLL
00084 OFDataArray *fds;
00085 OFMutableDictionary *fdToStream;
00086 #else
00087 fd_set readfds;
00088 fd_set writefds;
00089 fd_set exceptfds;
00090 int nfds;
00091 #endif
00092 int cancelFd[2];
00093 #ifdef _WIN32
00094 struct sockaddr_in cancelAddr;
00095 #endif
00096 }
00097
00098 #ifdef OF_HAVE_PROPERTIES
00099 @property (retain) id <OFStreamObserverDelegate> delegate;
00100 #endif
00101
00105 + observer;
00106
00110 - (id <OFStreamObserverDelegate>)delegate;
00111
00117 - (void)setDelegate: (id <OFStreamObserverDelegate>)delegate;
00118
00132 - (void)addStreamToObserveForReading: (OFStream*)stream;
00133
00144 - (void)addStreamToObserveForWriting: (OFStream*)stream;
00145
00154 - (void)removeStreamToObserveForReading: (OFStream*)stream;
00155
00164 - (void)removeStreamToObserveForWriting: (OFStream*)stream;
00165
00169 - (void)observe;
00170
00178 - (BOOL)observeWithTimeout: (int)timeout;
00179 @end
00180
00181 @interface OFObject (OFStreamObserverDelegate) <OFStreamObserverDelegate>
00182 @end