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 #endif
00029
00030 @class OFStream;
00031 #ifdef OF_HAVE_POLL
00032 @class OFDataArray;
00033 #endif
00034 @class OFMutableArray;
00035 @class OFMutableDictionary;
00036
00041 @protocol OFStreamObserverDelegate
00042
00048 - (void)streamDidBecomeReadyForReading: (OFStream*)stream;
00049
00055 - (void)streamDidBecomeReadyForWriting: (OFStream*)stream;
00056
00062 - (void)streamDidReceiveException: (OFStream*)stream;
00063 @end
00064
00070 @interface OFStreamObserver: OFObject
00071 {
00072 OFMutableArray *readStreams;
00073 OFMutableArray *writeStreams;
00074 id <OFStreamObserverDelegate> delegate;
00075 #ifdef OF_HAVE_POLL
00076 OFDataArray *fds;
00077 OFMutableDictionary *fdToStream;
00078 #else
00079 fd_set readfds;
00080 fd_set writefds;
00081 fd_set exceptfds;
00082 int nfds;
00083 #endif
00084 }
00085
00086 #ifdef OF_HAVE_PROPERTIES
00087 @property (retain) id <OFStreamObserverDelegate> delegate;
00088 #endif
00089
00093 + observer;
00094
00098 - (id <OFStreamObserverDelegate>)delegate;
00099
00105 - (void)setDelegate: (id <OFStreamObserverDelegate>)delegate;
00106
00117 - (void)addStreamToObserveForReading: (OFStream*)stream;
00118
00126 - (void)addStreamToObserveForWriting: (OFStream*)stream;
00127
00133 - (void)removeStreamToObserveForReading: (OFStream*)stream;
00134
00140 - (void)removeStreamToObserveForWriting: (OFStream*)stream;
00141
00145 - (void)observe;
00146
00154 - (BOOL)observeWithTimeout: (int)timeout;
00155 @end
00156
00157 @interface OFObject (OFStreamObserverDelegate) <OFStreamObserverDelegate>
00158 @end