@@ -41,11 +41,11 @@ #import "OFTimer+Private.h" #import "OFDate.h" #import "OFObserveFailedException.h" -const of_run_loop_mode_t of_run_loop_mode_default = @"of_run_loop_mode_default"; +const OFRunLoopMode OFDefaultRunLoopMode = @"OFDefaultRunLoopMode"; static OFRunLoop *mainRunLoop = nil; @interface OFRunLoopState: OFObject #ifdef OF_HAVE_SOCKETS @@ -88,11 +88,11 @@ @interface OFRunLoopReadQueueItem: OFRunLoopQueueItem { @public # ifdef OF_HAVE_BLOCKS - of_stream_async_read_block_t _block; + OFStreamAsyncReadBlock _block; # endif void *_buffer; size_t _length; } @end @@ -99,11 +99,11 @@ @interface OFRunLoopExactReadQueueItem: OFRunLoopQueueItem { @public # ifdef OF_HAVE_BLOCKS - of_stream_async_read_block_t _block; + OFStreamAsyncReadBlock _block; # endif void *_buffer; size_t _exactLength, _readLength; } @end @@ -110,21 +110,21 @@ @interface OFRunLoopReadLineQueueItem: OFRunLoopQueueItem { @public # ifdef OF_HAVE_BLOCKS - of_stream_async_read_line_block_t _block; + OFStreamAsyncReadLineBlock _block; # endif - of_string_encoding_t _encoding; + OFStringEncoding _encoding; } @end @interface OFRunLoopWriteDataQueueItem: OFRunLoopQueueItem { @public # ifdef OF_HAVE_BLOCKS - of_stream_async_write_data_block_t _block; + OFStreamAsyncWriteDataBlock _block; # endif OFData *_data; size_t _writtenLength; } @end @@ -131,14 +131,14 @@ @interface OFRunLoopWriteStringQueueItem: OFRunLoopQueueItem { @public # ifdef OF_HAVE_BLOCKS - of_stream_async_write_string_block_t _block; + OFStreamAsyncWriteStringBlock _block; # endif OFString *_string; - of_string_encoding_t _encoding; + OFStringEncoding _encoding; size_t _writtenLength; } @end # if !defined(OF_WII) && !defined(OF_NINTENDO_3DS) @@ -157,11 +157,11 @@ @interface OFRunLoopDatagramReceiveQueueItem: OFRunLoopQueueItem { @public # ifdef OF_HAVE_BLOCKS - of_datagram_socket_async_receive_block_t _block; + OFDatagramSocketAsyncReceiveBlock _block; # endif void *_buffer; size_t _length; } @end @@ -168,22 +168,22 @@ @interface OFRunLoopDatagramSendQueueItem: OFRunLoopQueueItem { @public # ifdef OF_HAVE_BLOCKS - of_datagram_socket_async_send_data_block_t _block; + OFDatagramSocketAsyncSendDataBlock _block; # endif OFData *_data; - of_socket_address_t _receiver; + OFSocketAddress _receiver; } @end @interface OFRunLoopPacketReceiveQueueItem: OFRunLoopQueueItem { @public # ifdef OF_HAVE_BLOCKS - of_sequenced_packet_socket_async_receive_block_t _block; + OFSequencedPacketSocketAsyncReceiveBlock _block; # endif void *_buffer; size_t _length; } @end @@ -190,11 +190,11 @@ @interface OFRunLoopPacketSendQueueItem: OFRunLoopQueueItem { @public # ifdef OF_HAVE_BLOCKS - of_sequenced_packet_socket_async_send_data_block_t _block; + OFSequencedPacketSocketAsyncSendDataBlock _block; # endif OFData *_data; } @end #endif @@ -274,27 +274,28 @@ assert(queue != nil); @try { if (![queue.firstObject handleObject: object]) { - of_list_object_t *listObject = queue.firstListObject; + OFListItem listItem = queue.firstListItem; /* * The handler might have called -[cancelAsyncRequests] * so that our queue is now empty, in which case we * should do nothing. */ - if (listObject != NULL) { + if (listItem != NULL) { /* * Make sure we keep the target until after we * are done removing the object. The reason for * this is that the target might call * -[cancelAsyncRequests] in its dealloc. */ - [[listObject->object retain] autorelease]; + [[OFListItemObject(listItem) retain] + autorelease]; - [queue removeListObject: listObject]; + [queue removeListItem: listItem]; if (queue.count == 0) { [_kernelEventObserver removeObjectForReading: object]; [_readQueues @@ -317,27 +318,28 @@ assert(queue != nil); @try { if (![queue.firstObject handleObject: object]) { - of_list_object_t *listObject = queue.firstListObject; + OFListItem listItem = queue.firstListItem; /* * The handler might have called -[cancelAsyncRequests] * so that our queue is now empty, in which case we * should do nothing. */ - if (listObject != NULL) { + if (listItem != NULL) { /* * Make sure we keep the target until after we * are done removing the object. The reason for * this is that the target might call * -[cancelAsyncRequests] in its dealloc. */ - [[listObject->object retain] autorelease]; + [[OFListItemObject(listItem) retain] + autorelease]; - [queue removeListObject: listObject]; + [queue removeListItem: listItem]; if (queue.count == 0) { [_kernelEventObserver removeObjectForWriting: object]; [_writeQueues @@ -752,19 +754,18 @@ } # ifdef OF_HAVE_BLOCKS if (_block != NULL) { if ([object isKindOfClass: [OFStreamSocket class]]) - return ((of_stream_socket_async_accept_block_t) - _block)(acceptedSocket, exception); + return ((OFStreamSocketAsyncAcceptBlock)_block)( + acceptedSocket, exception); else if ([object isKindOfClass: [OFSequencedPacketSocket class]]) - return - ((of_sequenced_packet_socket_async_accept_block_t) + return ((OFSequencedPacketSocketAsyncAcceptBlock) _block)(acceptedSocket, exception); else - OF_ENSURE(0); + OFEnsure(0); } else { # endif if (![_delegate respondsToSelector: @selector(socket:didAcceptSocket:exception:)]) return false; @@ -789,11 +790,11 @@ @implementation OFRunLoopDatagramReceiveQueueItem - (bool)handleObject: (id)object { size_t length; - of_socket_address_t address; + OFSocketAddress address; id exception = nil; @try { length = [object receiveIntoBuffer: _buffer length: _length @@ -1015,11 +1016,11 @@ { mainRunLoop = [runLoop retain]; } static OFRunLoopState * -stateForMode(OFRunLoop *self, of_run_loop_mode_t mode, bool create) +stateForMode(OFRunLoop *self, OFRunLoopMode mode, bool create) { OFRunLoopState *state; #ifdef OF_HAVE_THREADS [self->_statesMutex lock]; @@ -1086,13 +1087,13 @@ + (void)of_addAsyncReadForStream: (OFStream *) stream buffer: (void *)buffer length: (size_t)length - mode: (of_run_loop_mode_t)mode + mode: (OFRunLoopMode)mode # ifdef OF_HAVE_BLOCKS - block: (of_stream_async_read_block_t)block + block: (OFStreamAsyncReadBlock)block # endif delegate: (id )delegate { NEW_READ(OFRunLoopReadQueueItem, stream, mode) @@ -1108,13 +1109,13 @@ + (void)of_addAsyncReadForStream: (OFStream *) stream buffer: (void *)buffer exactLength: (size_t)exactLength - mode: (of_run_loop_mode_t)mode + mode: (OFRunLoopMode)mode # ifdef OF_HAVE_BLOCKS - block: (of_stream_async_read_block_t)block + block: (OFStreamAsyncReadBlock)block # endif delegate: (id )delegate { NEW_READ(OFRunLoopExactReadQueueItem, stream, mode) @@ -1128,14 +1129,14 @@ QUEUE_ITEM } + (void)of_addAsyncReadLineForStream: (OFStream *) stream - encoding: (of_string_encoding_t)encoding - mode: (of_run_loop_mode_t)mode + encoding: (OFStringEncoding)encoding + mode: (OFRunLoopMode)mode # ifdef OF_HAVE_BLOCKS - block: (of_stream_async_read_line_block_t)block + block: (OFStreamAsyncReadLineBlock)block # endif delegate: (id )delegate { NEW_READ(OFRunLoopReadLineQueueItem, stream, mode) @@ -1149,13 +1150,13 @@ } + (void)of_addAsyncWriteForStream: (OFStream *) stream data: (OFData *)data - mode: (of_run_loop_mode_t)mode + mode: (OFRunLoopMode)mode # ifdef OF_HAVE_BLOCKS - block: (of_stream_async_write_data_block_t)block + block: (OFStreamAsyncWriteDataBlock)block # endif delegate: (id )delegate { NEW_WRITE(OFRunLoopWriteDataQueueItem, stream, mode) @@ -1169,14 +1170,14 @@ } + (void)of_addAsyncWriteForStream: (OFStream *) stream string: (OFString *)string - encoding: (of_string_encoding_t)encoding - mode: (of_run_loop_mode_t)mode + encoding: (OFStringEncoding)encoding + mode: (OFRunLoopMode)mode # ifdef OF_HAVE_BLOCKS - block: (of_stream_async_write_string_block_t)block + block: (OFStreamAsyncWriteStringBlock)block # endif delegate: (id )delegate { NEW_WRITE(OFRunLoopWriteStringQueueItem, stream, mode) @@ -1190,11 +1191,11 @@ QUEUE_ITEM } # if !defined(OF_WII) && !defined(OF_NINTENDO_3DS) + (void)of_addAsyncConnectForSocket: (id)sock - mode: (of_run_loop_mode_t)mode + mode: (OFRunLoopMode)mode delegate: (id )delegate { NEW_WRITE(OFRunLoopConnectQueueItem, sock, mode) queueItem->_delegate = [delegate retain]; @@ -1202,11 +1203,11 @@ QUEUE_ITEM } # endif + (void)of_addAsyncAcceptForSocket: (id)sock - mode: (of_run_loop_mode_t)mode + mode: (OFRunLoopMode)mode block: (id)block delegate: (id)delegate { NEW_READ(OFRunLoopAcceptQueueItem, sock, mode) @@ -1219,13 +1220,13 @@ } + (void)of_addAsyncReceiveForDatagramSocket: (OFDatagramSocket *)sock buffer: (void *)buffer length: (size_t)length - mode: (of_run_loop_mode_t)mode + mode: (OFRunLoopMode)mode # ifdef OF_HAVE_BLOCKS - block: (of_datagram_socket_async_receive_block_t)block + block: (OFDatagramSocketAsyncReceiveBlock)block # endif delegate: (id )delegate { NEW_READ(OFRunLoopDatagramReceiveQueueItem, sock, mode) @@ -1239,14 +1240,14 @@ QUEUE_ITEM } + (void)of_addAsyncSendForDatagramSocket: (OFDatagramSocket *)sock data: (OFData *)data - receiver: (const of_socket_address_t *)receiver - mode: (of_run_loop_mode_t)mode + receiver: (const OFSocketAddress *)receiver + mode: (OFRunLoopMode)mode # ifdef OF_HAVE_BLOCKS - block: (of_datagram_socket_async_send_data_block_t)block + block: (OFDatagramSocketAsyncSendDataBlock)block # endif delegate: (id )delegate { NEW_WRITE(OFRunLoopDatagramSendQueueItem, sock, mode) @@ -1262,13 +1263,13 @@ + (void)of_addAsyncReceiveForSequencedPacketSocket: (OFSequencedPacketSocket *) sock buffer: (void *)buffer length: (size_t)length - mode: (of_run_loop_mode_t)mode + mode: (OFRunLoopMode)mode # ifdef OF_HAVE_BLOCKS - block: (of_sequenced_packet_socket_async_receive_block_t)block + block: (OFSequencedPacketSocketAsyncReceiveBlock)block # endif delegate: (id )delegate { NEW_READ(OFRunLoopPacketReceiveQueueItem, sock, mode) @@ -1282,13 +1283,13 @@ QUEUE_ITEM } + (void)of_addAsyncSendForSequencedPacketSocket: (OFSequencedPacketSocket *)sock data: (OFData *)data - mode: (of_run_loop_mode_t)mode + mode: (OFRunLoopMode)mode # ifdef OF_HAVE_BLOCKS - block: (of_sequenced_packet_socket_async_send_data_block_t)block + block: (OFSequencedPacketSocketAsyncSendDataBlock)block # endif delegate: (id )delegate { NEW_WRITE(OFRunLoopPacketSendQueueItem, sock, mode) @@ -1302,12 +1303,11 @@ } # undef NEW_READ # undef NEW_WRITE # undef QUEUE_ITEM -+ (void)of_cancelAsyncRequestsForObject: (id)object - mode: (of_run_loop_mode_t)mode ++ (void)of_cancelAsyncRequestsForObject: (id)object mode: (OFRunLoopMode)mode { void *pool = objc_autoreleasePoolPush(); OFRunLoop *runLoop = [self currentRunLoop]; OFRunLoopState *state = stateForMode(runLoop, mode, false); OFList *queue; @@ -1354,12 +1354,11 @@ _states = [[OFMutableDictionary alloc] init]; state = [[OFRunLoopState alloc] init]; @try { - [_states setObject: state - forKey: of_run_loop_mode_default]; + [_states setObject: state forKey: OFDefaultRunLoopMode]; } @finally { [state release]; } #ifdef OF_HAVE_THREADS @@ -1383,14 +1382,14 @@ [super dealloc]; } - (void)addTimer: (OFTimer *)timer { - [self addTimer: timer forMode: of_run_loop_mode_default]; + [self addTimer: timer forMode: OFDefaultRunLoopMode]; } -- (void)addTimer: (OFTimer *)timer forMode: (of_run_loop_mode_t)mode +- (void)addTimer: (OFTimer *)timer forMode: (OFRunLoopMode)mode { OFRunLoopState *state = stateForMode(self, mode, true); #ifdef OF_HAVE_THREADS [state->_timersQueueMutex lock]; @@ -1410,11 +1409,11 @@ #elif defined(OF_HAVE_THREADS) [state->_condition signal]; #endif } -- (void)of_removeTimer: (OFTimer *)timer forMode: (of_run_loop_mode_t)mode +- (void)of_removeTimer: (OFTimer *)timer forMode: (OFRunLoopMode)mode { OFRunLoopState *state = stateForMode(self, mode, false); if (state == nil) return; @@ -1421,16 +1420,14 @@ #ifdef OF_HAVE_THREADS [state->_timersQueueMutex lock]; @try { #endif - of_list_object_t *iter; - - for (iter = state->_timersQueue.firstListObject; iter != NULL; - iter = iter->next) { - if ([iter->object isEqual: timer]) { - [state->_timersQueue removeListObject: iter]; + for (OFListItem iter = state->_timersQueue.firstListItem; + iter != NULL; iter = OFListItemNext(iter)) { + if ([OFListItemObject(iter) isEqual: timer]) { + [state->_timersQueue removeListItem: iter]; break; } } #ifdef OF_HAVE_THREADS } @finally { @@ -1441,17 +1438,17 @@ #ifdef OF_AMIGAOS - (void)addExecSignal: (ULONG)signal target: (id)target selector: (SEL)selector { [self addExecSignal: signal - forMode: of_run_loop_mode_default + forMode: OFDefaultRunLoopMode target: target selector: selector]; } - (void)addExecSignal: (ULONG)signal - forMode: (of_run_loop_mode_t)mode + forMode: (OFRunLoopMode)mode target: (id)target selector: (SEL)selector { OFRunLoopState *state = stateForMode(self, mode, true); @@ -1484,17 +1481,17 @@ - (void)removeExecSignal: (ULONG)signal target: (id)target selector: (SEL)selector { [self removeExecSignal: signal - forMode: of_run_loop_mode_default + forMode: OFDefaultRunLoopMode target: target selector: selector]; } - (void)removeExecSignal: (ULONG)signal - forMode: (of_run_loop_mode_t)mode + forMode: (OFRunLoopMode)mode target: (id)target selector: (SEL)selector { OFRunLoopState *state = stateForMode(self, mode, false); @@ -1554,17 +1551,17 @@ { _stop = false; while (!_stop && (deadline == nil || deadline.timeIntervalSinceNow >= 0)) - [self runMode: of_run_loop_mode_default beforeDate: deadline]; + [self runMode: OFDefaultRunLoopMode beforeDate: deadline]; } -- (void)runMode: (of_run_loop_mode_t)mode beforeDate: (OFDate *)deadline +- (void)runMode: (OFRunLoopMode)mode beforeDate: (OFDate *)deadline { void *pool = objc_autoreleasePoolPush(); - of_run_loop_mode_t previousMode = _currentMode; + OFRunLoopMode previousMode = _currentMode; OFRunLoopState *state = stateForMode(self, mode, false); if (state == nil) return; @@ -1580,20 +1577,21 @@ #ifdef OF_HAVE_THREADS [state->_timersQueueMutex lock]; @try { #endif - of_list_object_t *listObject = - state->_timersQueue.firstListObject; + OFListItem listItem = + state->_timersQueue.firstListItem; - if (listObject != NULL && [listObject->object - fireDate].timeIntervalSinceNow <= 0) { - timer = [[listObject->object + if (listItem != NULL && + [OFListItemObject(listItem) fireDate] + .timeIntervalSinceNow <= 0) { + timer = [[OFListItemObject(listItem) retain] autorelease]; [state->_timersQueue - removeListObject: listObject]; + removeListItem: listItem]; [timer of_setInRunLoop: nil mode: nil]; } else break; #ifdef OF_HAVE_THREADS @@ -1620,11 +1618,11 @@ } #endif /* Watch for I/O events until the next timer is due */ if (nextTimer != nil || deadline != nil) { - of_time_interval_t timeout; + OFTimeInterval timeout; if (nextTimer != nil && deadline == nil) timeout = nextTimer.timeIntervalSinceNow; else if (nextTimer == nil && deadline != nil) timeout = deadline.timeIntervalSinceNow; @@ -1694,12 +1692,11 @@ } } - (void)stop { - OFRunLoopState *state = - stateForMode(self, of_run_loop_mode_default, false); + OFRunLoopState *state = stateForMode(self, OFDefaultRunLoopMode, false); _stop = true; if (state == nil) return;