ObjFW  Diff

Differences From Artifact [57b253b8a0]:

  • File src/OFKernelEventObserver.m — part of check-in [f9ceddcb7d] at 2015-04-26 10:42:58 on branch trunk — OFKernelEventObserver: Keep FD -> object mapping

    Removing the FD from the FD -> object mapping results in
    OF_processReadBuffers passing nil to objectIsReadyForReading: if there's
    still something in the read buffer.

    Additionally, this also broke when observing the same object for reading
    and writing and then removing it for either reading or writing. (user: js, size: 9210) [annotate] [blame] [check-ins using]

To Artifact [566a494d67]:


34
35
36
37
38
39
40



41
42
43
44
45
46
47
# import "OFMutex.h"
#endif
#import "OFDate.h"

#ifdef HAVE_KQUEUE
# import "OFKernelEventObserver_kqueue.h"
#endif



#if defined(HAVE_POLL_H) || defined(__wii__)
# import "OFKernelEventObserver_poll.h"
#endif
#if defined(HAVE_SYS_SELECT_H) || defined(_WIN32)
# import "OFKernelEventObserver_select.h"
#endif








>
>
>







34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
# import "OFMutex.h"
#endif
#import "OFDate.h"

#ifdef HAVE_KQUEUE
# import "OFKernelEventObserver_kqueue.h"
#endif
#ifdef HAVE_EPOLL
# import "OFKernelEventObserver_epoll.h"
#endif
#if defined(HAVE_POLL_H) || defined(__wii__)
# import "OFKernelEventObserver_poll.h"
#endif
#if defined(HAVE_SYS_SELECT_H) || defined(_WIN32)
# import "OFKernelEventObserver_select.h"
#endif

72
73
74
75
76
77
78
79
80
81
82

83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99



100
101
102
103
104
105
106
107
108
109
110
}

+ (instancetype)observer
{
	return [[[self alloc] init] autorelease];
}

#if defined(HAVE_KQUEUE)
+ alloc
{
	if (self == [OFKernelEventObserver class])

		return [OFKernelEventObserver_kqueue alloc];

	return [super alloc];
}
#elif defined(HAVE_POLL_H) || defined(__wii__)
+ alloc
{
	if (self == [OFKernelEventObserver class])
		return [OFKernelEventObserver_poll alloc];

	return [super alloc];
}
#elif defined(HAVE_SYS_SELECT_H) || defined(_WIN32)
+ alloc
{
	if (self == [OFKernelEventObserver class])
		return [OFKernelEventObserver_select alloc];




	return [super alloc];
}
#endif

- init
{
	self = [super init];

	@try {
#if !defined(OF_HAVE_PIPE) && !defined(__wii__)







<



>

|
|
<

<
<
<

<
<
<

<
<
<

>
>
>



<







75
76
77
78
79
80
81

82
83
84
85
86
87
88

89



90



91



92
93
94
95
96
97
98

99
100
101
102
103
104
105
}

+ (instancetype)observer
{
	return [[[self alloc] init] autorelease];
}


+ alloc
{
	if (self == [OFKernelEventObserver class])
#if defined(HAVE_KQUEUE)
		return [OFKernelEventObserver_kqueue alloc];
#elif defined(HAVE_EPOLL)
		return [OFKernelEventObserver_epoll alloc];

#elif defined(HAVE_POLL_H) || defined(__wii__)



		return [OFKernelEventObserver_poll alloc];



#elif defined(HAVE_SYS_SELECT_H) || defined(_WIN32)



		return [OFKernelEventObserver_select alloc];
#else
# error No kqueue / epoll / poll / select found!
#endif

	return [super alloc];
}


- init
{
	self = [super init];

	@try {
#if !defined(OF_HAVE_PIPE) && !defined(__wii__)