ObjFW  History of src/OFStreamObserver.m of 0a55edad35d3f028

History of file src/OFStreamObserver.m at check-in 0a55edad35d3f028

2014-01-28
22:50
Deleted: Rename OFStreamObserver -> OFKernelEventObserver check-in: [96e20b8093] user: js, branch: trunk, size: 0
2014-01-26
13:32
Include unistd.h in socket_helpers.h file: [f63dde5192] check-in: [32ad39007a] user: js, branch: trunk, size: 8894 [annotate] [blame] [check-ins using] [diff]
2014-01-25
19:33
Move socket includes and helpers to separate files

The new file socket.h includes all headers required for sockets on the
used platform, while the file socket_helpers.h defines the BSD API
functions to the platform specific functions if necessary.

This cleans up the classes dealing with sockets a lot and also reduces
code duplication. file: [a3d6727f88] check-in: [81d47f4398] user: js, branch: trunk, size: 8915 [annotate] [blame] [check-ins using] [diff]

2014-01-16
23:09
Add of_time_interval_t.

This is used instead for time intervals now instead of doubles. file: [8b0d12d65c] check-in: [dc31ce3d34] user: js, branch: trunk, size: 9254 [annotate] [blame] [check-ins using] [diff]

2014-01-04
00:24
Update copyright. file: [f4afa0c360] check-in: [3b97fc3cd9] user: js, branch: trunk, size: 9242 [annotate] [blame] [check-ins using] [diff]
2013-11-23
01:27
Add OF_UNRECOGNIZED_SELECTOR. file: [557367c1e5] check-in: [6e19bd47ee] user: js, branch: trunk, size: 9236 [annotate] [blame] [check-ins using] [diff]
2013-08-15
19:00
Move private methods into private headers. file: [50f0ed1166] check-in: [1d7a1cbca0] user: js, branch: trunk, size: 9377 [annotate] [blame] [check-ins using] [diff]
2013-06-13
02:03
Don't bind to port 0 on the Wii.

Instead, a decreasing variable is used now. This should be safe, as
nothing else should be binding ports while homebrew code is running. The
only problem that could arise is when code manually binds to very high
port numbers.

This also solves the problem that getsockname() is not available on the
Wii, as we know the port now anyway.

And while we're at it, this also adds struct sockaddr_storage. file: [2bcf8ed1eb] check-in: [ca113e0145] user: js, branch: trunk, size: 9311 [annotate] [blame] [check-ins using] [diff]

2013-06-11
23:33
Initial sockets support for the Wii.

Not functional yet due to bugs in the SDK.
Bugs found so far:

* Binding to port 0 fails instead of choosing a free port.
* gethostbyname() does not work for IPs.
* getsockname() is missing.
* struct sockaddr_storage is missing.

I have not decided yet whether I fix those bugs in the SDK (I already
implemented getsockname() and added struct sockaddr_stroage and it seems
to work) or if I work around them in ObjFW. This will mainly depend on
how cooperative the developers of the Wii SDK are. file: [ec4b8afafc] check-in: [ffb91daffe] user: js, branch: trunk, size: 9186 [annotate] [blame] [check-ins using] [diff]

2013-05-30
08:56
OFStreamObserver: Add missing include on Win32. file: [765c53f8f8] check-in: [3798cbd7ce] user: js, branch: trunk, size: 8740 [annotate] [blame] [check-ins using] [diff]
2013-05-22
18:42
Check for more socket-related headers / functions. file: [acce8334f0] check-in: [896084c340] user: js, branch: trunk, size: 8695 [annotate] [blame] [check-ins using] [diff]
2013-04-30
22:47
observeWithTimeout: -> observeForTimeInterval:. file: [4b5320c792] check-in: [ab9ad6e515] user: js, branch: trunk, size: 8664 [annotate] [blame] [check-ins using] [diff]
2013-03-04
17:20
Replace BOOL with bool.

The only places where BOOL is left are those where they are required by
the ABI. file: [14f367ec0c] check-in: [c5ef582958] user: js, branch: trunk, size: 8519 [annotate] [blame] [check-ins using] [diff]

2013-02-18
21:53
Rename -[OFStream pendingBytes].

It is now called -[numberOfBytesInReadBuffer].

Additionally, this commit renames OFStream's _cache to _readBuffer. file: [6df17e709d] check-in: [efe7be259d] user: js, branch: trunk, size: 8511 [annotate] [blame] [check-ins using] [diff]

2013-02-12
18:22
Prefix all ivars with an underscore. file: [67edca5fb3] check-in: [e40729d406] user: js, branch: trunk, size: 8498 [annotate] [blame] [check-ins using] [diff]
2013-01-12
20:53
Clean up the feature #ifdef mess. file: [b6d33523f1] check-in: [b8ce2359f3] user: js, branch: trunk, size: 8724 [annotate] [blame] [check-ins using] [diff]
20:21
Fix --disable-threads. file: [b904df7bb8] check-in: [85b8efadbc] user: js, branch: trunk, size: 8659 [annotate] [blame] [check-ins using] [diff]
2013-01-09
22:24
Update copyright. file: [f1fb6806e0] check-in: [813c00ccf0] user: js, branch: trunk, size: 8409 [annotate] [blame] [check-ins using] [diff]
2012-12-22
15:37
Add -[doesNotRecognizeSelector:]. file: [77de7642b5] check-in: [917ce5754c] user: js, branch: trunk, size: 8403 [annotate] [blame] [check-ins using] [diff]
2012-12-20
16:42
Remove dummy implementations for formal protocols. file: [df859b9099] check-in: [89177dcd09] user: js, branch: trunk, size: 8645 [annotate] [blame] [check-ins using] [diff]
2012-12-15
17:52
OFDataArray: Improve API. file: [0c778cd456] check-in: [c85ff8d35a] user: js, branch: trunk, size: 8815 [annotate] [blame] [check-ins using] [diff]
2012-10-26
11:04
Split OFThread.m into multiple files.

It was time to finally have one file per class. file: [f18e106529] check-in: [0a55edad35] user: js, branch: trunk, size: 8821 [annotate] [blame] [check-ins using] [diff]

2012-10-09
15:07
Make use of instancetype. file: [44c71d7505] check-in: [fb515e8e24] user: js, branch: trunk, size: 8796 [annotate] [blame] [check-ins using] [diff]
2012-09-17
15:48
Add -[asyncReadIntoBuffer:exactLength:block:]. file: [62e60a6cd0] check-in: [be6adc6e06] user: js, branch: trunk, size: 8782 [annotate] [blame] [check-ins using] [diff]
2012-09-16
15:27
Prefix all private methods with OF_. file: [4eb84860f4] check-in: [c137da5e5b] user: js, branch: trunk, size: 8783 [annotate] [blame] [check-ins using] [diff]
2012-09-12
17:27
Split -[OFStream fileDescriptor].

It is now -[fileDescriptorForReading] and -[fileDescriptorForWriting].
The split was necessary as some stream types (e.g. OFProcess) don't have
a single file descriptor, but two. This allows to use those stream types
with OFStreamObserver as well. file: [41b087a39c] check-in: [440e95fd4a] user: js, branch: trunk, size: 8761 [annotate] [blame] [check-ins using] [diff]

06:00
OFStreamObserver: Add -[cancel]. file: [2620dc6f33] check-in: [acb6598856] user: js, branch: trunk, size: 8721 [annotate] [blame] [check-ins using] [diff]
06:00
OFStreamObserver: Take a double as timeout. file: [f07f85b2a0] check-in: [3c99aa51da] user: js, branch: trunk, size: 8843 [annotate] [blame] [check-ins using] [diff]
2012-08-10
20:08
Directly use the runtime's autorelease pools.

This greatly improves performance, as it gets rid of the overhead of
OFAutoreleasePool. file: [44b77ee334] check-in: [1255f3a11a] user: js, branch: trunk, size: 8840 [annotate] [blame] [check-ins using] [diff]

2012-07-16
23:49
Add OF_ENSURE.

This is to be used when the condition includes a statement that needs to
be executed, as with assert, this would not be executed anymore when
NDEBUG is defined. file: [46e892e905] check-in: [417b213d41] user: js, branch: trunk, size: 8879 [annotate] [blame] [check-ins using] [diff]

2012-07-12
01:28
Don't access isa directly. file: [6213636312] check-in: [8892ae9fcc] user: js, branch: trunk, size: 8834 [annotate] [blame] [check-ins using] [diff]
2012-06-10
13:28
More API improvements. file: [aaaee883eb] check-in: [11d3d69a22] user: js, branch: trunk, size: 8753 [annotate] [blame] [check-ins using] [diff]
2012-06-06
13:47
Slightly change the memory management API.

Also fix a bug where OFBigDataArray would waste memory. file: [75b0a6497b] check-in: [f7576a66ce] user: js, branch: trunk, size: 8761 [annotate] [blame] [check-ins using] [diff]

13:09
Rework OFDataArray API.

Also adds more checks. file: [9591f1939e] check-in: [d5ddb2cb48] user: js, branch: trunk, size: 8755 [annotate] [blame] [check-ins using] [diff]

2012-03-12
11:54
OFArray: +[arrayWithCArray:length:] -> +[arrayWithObjects:count:].

This is required for the new array literals. file: [89d321be6d] check-in: [008be86a16] user: js, branch: trunk, size: 8770 [annotate] [blame] [check-ins using] [diff]

2012-01-05
00:56
Update copyright. file: [ff67a9acd7] check-in: [ce70e17b38] user: js, branch: trunk, size: 8762 [annotate] [blame] [check-ins using] [diff]
2011-10-24
18:28
Don't retain delegates to prevent reference cycles. file: [b9eb3c11d8] check-in: [87cd99ff88] user: js, branch: trunk, size: 8756 [annotate] [blame] [check-ins using] [diff]
2011-09-22
23:25
Exceptions are now autoreleased.

This is safe as an "exception loop" can't happen, since if allocating
an exception fails, it throws an OFAllocFailedException which is
preallocated and can always be thrown.

So, the worst case would be that an autorelease of an exception fails,
triggering an OFOutOfMemoryException for which there is no memory,
resulting in an OFAllocFailedException to be thrown. file: [fa968ce497] check-in: [e1e7ffa903] user: js, branch: trunk, size: 8827 [annotate] [blame] [check-ins using] [diff]

01:11
Add support for kqueue. file: [c099293000] check-in: [4f6270da38] user: js, branch: trunk, size: 8778 [annotate] [blame] [check-ins using] [diff]
2011-09-20
18:40
OFStreamObserver improvements.

* Make it possible to close a stream before the add/remove queue has
been processed.
* The actual implementations don't need to handle OFStreams now, but
get the file descriptor instead.
* Use an OFMutex instead of @synchronized. file: [2c9b5a07cf] check-in: [47caef4f8a] user: js, branch: trunk, size: 8571 [annotate] [blame] [check-ins using] [diff]

2011-09-19
16:34
Rename -[allocMemoryForNItems:withSize:] and friends.
It is now -[allocMemoryForNItems:ofSize:].
file: [58de981563] check-in: [f173477bef] user: js, branch: trunk, size: 8424 [annotate] [blame] [check-ins using] [diff]
16:22
Make using -[tryReadLine] + OFStreamObserver safe.

This makes it impossible for the developer to accidentally create a DoS.
When data has been received after calling -[tryReadLine] and the string
is still incomplete, -[streamIsReadyForReading:] will not be called
anymore until new data has been received, thus preventing spinning in a
loop. file: [332048c7be] check-in: [535c2d5d9b] user: js, branch: trunk, size: 8431 [annotate] [blame] [check-ins using] [diff]

12:44
Nicer OFStreamObserver API. file: [26a8940bc6] check-in: [c279948fb8] user: js, branch: trunk, size: 8386 [annotate] [blame] [check-ins using] [diff]
12:07
Improve OFStreamObserver. file: [547cd504c0] check-in: [d3f6cf9293] user: js, branch: trunk, size: 8547 [annotate] [blame] [check-ins using] [diff]
2011-09-17
20:22
Rename OFStream{Poll,Select}Observer to OFStreamObserver_{poll,select}. file: [d7d6c24d1c] check-in: [4d2f08f6fe] user: js, branch: trunk, size: 6227 [annotate] [blame] [check-ins using] [diff]
2011-09-10
19:37
Make OFStreamObserver an abstract class. file: [317abd8f85] check-in: [b1ffd7732a] user: js, branch: trunk, size: 6223 [annotate] [blame] [check-ins using] [diff]
18:36
Remove -[finalize] as ARC will be implemented instead of a GC. file: [154bacad74] check-in: [972a3ee40d] user: js, branch: trunk, size: 12401 [annotate] [blame] [check-ins using] [diff]
2011-07-17
01:55
Define __NO_EXT_QNX in files using unistd.h or fcntl.h.

Without this, the headers try to declare functions that use __block as
an argument name and thus fail to compile when using -fblocks. file: [fbacb17597] check-in: [59e52af26d] user: js, branch: 0.5, size: 11957 [annotate] [blame] [check-ins using] [diff]

01:55
Define __NO_EXT_QNX in files using unistd.h or fcntl.h.

Without this, the headers try to declare functions that use __block as
an argument name and thus fail to compile when using -fblocks. file: [741b860b9a] check-in: [da2701ad14] user: js, branch: trunk, size: 12485 [annotate] [blame] [check-ins using] [diff]

2011-06-07
14:10
Small changes to OF_SETTER/OF_GETTER. file: [0c469136e4] check-in: [ff3d9a9225] user: js, branch: 0.5, size: 11936 [annotate] [blame] [check-ins using] [diff]
14:10
Small changes to OF_SETTER/OF_GETTER. file: [7f19030bfc] check-in: [9e2ea02a08] user: js, branch: trunk, size: 12464 [annotate] [blame] [check-ins using] [diff]
2011-04-24
21:50
Add -[finalize] to all classes which would require it once we have GC. file: [4fa877dddd] check-in: [07b3d0e8de] user: js, branch: trunk, size: 12495 [annotate] [blame] [check-ins using] [diff]
2011-04-22
22:46
More style improvements. file: [5e763c88de] check-in: [c9c78d86d3] user: js, branch: trunk, size: 12411 [annotate] [blame] [check-ins using] [diff]
21:08
More style improvements. file: [94e7d25075] check-in: [fb95acc8ab] user: js, branch: trunk, size: 12387 [annotate] [blame] [check-ins using] [diff]
20:43
OFStreamObserver: Don't ignore the timeout when using select(). file: [4bdac00ac8] check-in: [e7bb41764c] user: js, branch: 0.5, size: 11967 [annotate] [blame] [check-ins using] [diff]
2011-04-06
20:07
Port recent OFStreamObserver changes to Win32. file: [90468a0a65] check-in: [a10390bfd6] user: js, branch: trunk, size: 11898 [annotate] [blame] [check-ins using] [diff]
19:53
Don't compare to FD_SETSIZE.

FD_SETSIZE is _NOT_ the number of the last fd, but the maximum number of
fds to observe! file: [b5be6cde87] check-in: [57f51f7341] user: js, branch: trunk, size: 10176 [annotate] [blame] [check-ins using] [diff]

2011-04-04
23:32
Check the value of read/write in OFStreamObserver.

Some systems like Ubuntu have libc headers which specify an attribute
that the compiler should issue a warning if the return value is ignored. file: [c4fa7336ee] check-in: [8349bc4bbe] user: js, branch: trunk, size: 10328 [annotate] [blame] [check-ins using] [diff]

2011-04-03
19:52
Add -[pendingBytes] to OFStream.

This way, the method to determine whether OFStreamSocket should
call the delegate can be overriden by subclasses, for example
for SSL sockets. file: [b3c7d0cf87] check-in: [f4151a36e3] user: js, branch: trunk, size: 10274 [annotate] [blame] [check-ins using] [diff]

19:25
OPEN_MAX is not available on every system. file: [68c03424f8] check-in: [6d9854419c] user: js, branch: trunk, size: 10270 [annotate] [blame] [check-ins using] [diff]
2011-04-02
02:29
Fix small bugs introduced by the last commit. file: [9e9e13990f] check-in: [321274075d] user: js, branch: trunk, size: 10245 [annotate] [blame] [check-ins using] [diff]
2011-04-01
22:14
Cancel the currently blocking -[observe] when the stream set is changed.

Not working on win32 yet, it will be ported to it later as it's not that
easy there, since select() can only observe sockets. file: [864995cc48] check-in: [a61ab37726] user: js, branch: trunk, size: 10141 [annotate] [blame] [check-ins using] [diff]

17:10
Call -[releaseObjects] after calling the delegate. file: [95f2f3be53] check-in: [61cad3ee76] user: js, branch: trunk, size: 9508 [annotate] [blame] [check-ins using] [diff]
16:54
Make OFStreamObserver thread-safe.

It does not cancel the currently running -[observe] yet when changing
the set of streams to observe. file: [bf14750714] check-in: [35aab77af3] user: js, branch: trunk, size: 9282 [annotate] [blame] [check-ins using] [diff]

16:06
Check nfds against OPEN_MAX before calling poll. file: [3eaeff6179] check-in: [52102a2906] user: js, branch: trunk, size: 7433 [annotate] [blame] [check-ins using] [diff]
2011-03-24
19:42
Get rid of OFExceptions.h. file: [ec16112800] check-in: [cda44767f4] user: js, branch: trunk, size: 7431 [annotate] [blame] [check-ins using] [diff]
2011-03-23
01:06
Make more use of the OFObject protocol. file: [a1bab4dfc6] check-in: [23acf38456] user: js, branch: trunk, size: 7421 [annotate] [blame] [check-ins using] [diff]
2011-03-22
00:55
Add -Wshorten-64-to-32. file: [624d0c1dc4] check-in: [6d4dfb5bc7] user: js, branch: trunk, size: 7391 [annotate] [blame] [check-ins using] [diff]
2011-01-01
20:19
Change license. file: [3ce8ac4b7d] check-in: [da6b3d26cb] user: js, branch: trunk, size: 7294 [annotate] [blame] [check-ins using] [diff]
2010-11-28
16:02
Rename +[streamObserver] to +[observer] in OFStreamObserver. file: [07095552b1] check-in: [4d013fb14a] user: js, branch: trunk, size: 7038 [annotate] [blame] [check-ins using] [diff]
2010-11-06
13:36
Correctly use FD_COPY. file: [b89b86c6f6] check-in: [1fceb27c0e] user: js, branch: trunk, size: 7044 [annotate] [blame] [check-ins using] [diff]
13:34
Handle stream exceptions in OFStreamObserver. file: [2971c119f2] check-in: [b7767021ca] user: js, branch: trunk, size: 7038 [annotate] [blame] [check-ins using] [diff]
2010-10-25
23:03
Clean up a lot of code (mostly init methods) and fix a missing rethrow. file: [269a665b2b] check-in: [8a7ca573c4] user: js, branch: trunk, size: 6567 [annotate] [blame] [check-ins using] [diff]
2010-10-24
12:54
Add -[streamDidReceiveException:] to OFStreamObserverDelegate. file: [3a6498e60a] check-in: [b5da54000d] user: js, branch: trunk, size: 6577 [annotate] [blame] [check-ins using] [diff]
2010-10-07
21:25
Fix a typo in OFStreamObserver, affecting it only when using select(). file: [18e0a8da0a] check-in: [1f02ada35e] user: js, branch: trunk, size: 6199 [annotate] [blame] [check-ins using] [diff]
2010-09-19
02:52
Improve OFStreamObserver.

It also looks at the cache of each stream now and does not block if
there is still data in the cache. file: [2babecb315] check-in: [b554732eae] user: js, branch: trunk, size: 6198 [annotate] [blame] [check-ins using] [diff]

2010-09-05
23:19
Replace OFObject* with id in many places.

We assume now that every object understands retain, release, etc. so
that we can weaken the type from OFObject* to id. This makes it
possible to use different root object classes. file: [7ad4630322] check-in: [e2b06423e0] user: js, branch: trunk, size: 5626 [annotate] [blame] [check-ins using] [diff]

2010-07-07
20:48
Added: Rename OFSocketObserver to OFStreamObserver and make it more general. file: [282f7af8d3] check-in: [52dcb22b8c] user: js, branch: trunk, size: 5624 [annotate] [blame] [check-ins using]