Differences From Artifact [6992f1ccb5]:
- File
src/OFStream.m
— part of check-in
[440e95fd4a]
at
2012-09-12 17:27:53
on branch trunk
— 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. (user: js, size: 26949) [annotate] [blame] [check-ins using]
To Artifact [f58d32520c]:
- File src/OFStream.m — part of check-in [a2b309b38a] at 2012-09-14 05:20:07 on branch trunk — Implement async reading (into buffers and lines). (user: js, size: 27621) [annotate] [blame] [check-ins using]
︙ | ︙ | |||
30 31 32 33 34 35 36 37 38 39 40 41 42 43 | #ifndef _WIN32 # include <signal.h> #endif #import "OFStream.h" #import "OFString.h" #import "OFDataArray.h" #import "OFInvalidArgumentException.h" #import "OFInvalidFormatException.h" #import "OFNotImplementedException.h" #import "OFSetOptionFailedException.h" #import "macros.h" | > | 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | #ifndef _WIN32 # include <signal.h> #endif #import "OFStream.h" #import "OFString.h" #import "OFDataArray.h" #import "OFRunLoop.h" #import "OFInvalidArgumentException.h" #import "OFInvalidFormatException.h" #import "OFNotImplementedException.h" #import "OFSetOptionFailedException.h" #import "macros.h" |
︙ | ︙ | |||
128 129 130 131 132 133 134 135 136 137 138 139 140 141 | [self freeMemory: cache]; cache = tmp; cacheLength -= length; return length; } } - (void)readIntoBuffer: (void*)buffer exactLength: (size_t)length { size_t readLength = 0; while (readLength < length) | > > > > > > > > > > | 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 | [self freeMemory: cache]; cache = tmp; cacheLength -= length; return length; } } - (void)asyncReadWithBuffer: (void*)buffer length: (size_t)length block: (of_stream_async_read_block_t)block { [OFRunLoop _addAsyncReadForStream: self buffer: buffer length: length block: block]; } - (void)readIntoBuffer: (void*)buffer exactLength: (size_t)length { size_t readLength = 0; while (readLength < length) |
︙ | ︙ | |||
668 669 670 671 672 673 674 675 676 677 678 679 680 681 | while ((line = [self tryReadLineWithEncoding: encoding]) == nil) if ([self isAtEndOfStream]) return nil; return line; } - (OFString*)tryReadLine { return [self tryReadLineWithEncoding: OF_STRING_ENCODING_UTF_8]; } - (OFString*)tryReadTillDelimiter: (OFString*)delimiter | > > > > > > > > > > > > > > > > | 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 | while ((line = [self tryReadLineWithEncoding: encoding]) == nil) if ([self isAtEndOfStream]) return nil; return line; } #ifdef OF_HAVE_BLOCKS - (void)asyncReadLineWithBlock: (of_stream_async_read_line_block_t)block { return [self asyncReadLineWithEncoding: OF_STRING_ENCODING_UTF_8 block: block]; } - (void)asyncReadLineWithEncoding: (of_string_encoding_t)encoding block: (of_stream_async_read_line_block_t)block { [OFRunLoop _addAsyncReadLineForStream: self encoding: encoding block: block]; } #endif - (OFString*)tryReadLine { return [self tryReadLineWithEncoding: OF_STRING_ENCODING_UTF_8]; } - (OFString*)tryReadTillDelimiter: (OFString*)delimiter |
︙ | ︙ |