@@ -196,16 +196,11 @@ [queueFDs addItem: &fd]; } @finally { [mutex unlock]; } -#ifndef _WIN32 - OF_ENSURE(write(cancelFD[1], "", 1) > 0); -#else - OF_ENSURE(sendto(cancelFD[1], "", 1, 0, (struct sockaddr*)&cancelAddr, - sizeof(cancelAddr)) > 0); -#endif + [self cancel]; } - (void)addStreamForWriting: (OFStream*)stream { [mutex lock]; @@ -218,16 +213,11 @@ [queueFDs addItem: &fd]; } @finally { [mutex unlock]; } -#ifndef _WIN32 - OF_ENSURE(write(cancelFD[1], "", 1) > 0); -#else - OF_ENSURE(sendto(cancelFD[1], "", 1, 0, (struct sockaddr*)&cancelAddr, - sizeof(cancelAddr)) > 0); -#endif + [self cancel]; } - (void)removeStreamForReading: (OFStream*)stream { [mutex lock]; @@ -373,10 +363,20 @@ - (BOOL)observeWithTimeout: (double)timeout { @throw [OFNotImplementedException exceptionWithClass: [self class] selector: _cmd]; } + +- (void)cancel +{ +#ifndef _WIN32 + OF_ENSURE(write(cancelFD[1], "", 1) > 0); +#else + OF_ENSURE(sendto(cancelFD[1], "", 1, 0, (struct sockaddr*)&cancelAddr, + sizeof(cancelAddr)) > 0); +#endif +} - (BOOL)_processCache { OFStream **objects = [readStreams objects]; size_t i, count = [readStreams count];