Differences From Artifact [eb360b3361]:
- File
src/OFKernelEventObserver+Private.h
— part of check-in
[7ae17af9f0]
at
2016-03-20 11:57:06
on branch trunk
— Never block when the read buffer is non-empty
This was broken by 88f2f03. The problem only existed when something was
in the read buffer, but not processed completely, as after processing
the read buffer, it would go on to wait for data - but since not the
entire read buffer had been processed, it meant there was still data
left there that needed to be handled first. (user: js, size: 730) [annotate] [blame] [check-ins using]
To Artifact [115d733df8]:
- File
src/OFKernelEventObserver+Private.h
— part of check-in
[45518ae7b7]
at
2016-03-20 14:07:47
on branch trunk
— Use the locked queue for kqueue and epoll as well
_readObjects must only be changed from the thread running the observer
and not from a thread adding or removing objects to observe. This is
already handled by the locked queue used by poll and select, so the best
way to solve this is to use the locked queue for kqueue and epoll as
well. (user: js, size: 1053) [annotate] [blame] [check-ins using]
︙ | ︙ | |||
15 16 17 18 19 20 21 22 23 24 25 | */ #import "OFKernelEventObserver.h" OF_ASSUME_NONNULL_BEGIN @interface OFKernelEventObserver () - (bool)OF_processReadBuffers; @end OF_ASSUME_NONNULL_END | > > > > > | 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | */ #import "OFKernelEventObserver.h" OF_ASSUME_NONNULL_BEGIN @interface OFKernelEventObserver () - (void)OF_addObjectForReading: (id <OFReadyForReadingObserving>)object; - (void)OF_addObjectForWriting: (id <OFReadyForWritingObserving>)object; - (void)OF_removeObjectForReading: (id <OFReadyForReadingObserving>)object; - (void)OF_removeObjectForWriting: (id <OFReadyForWritingObserving>)object; - (void)OF_processQueue; - (bool)OF_processReadBuffers; @end OF_ASSUME_NONNULL_END |