| #import <Foundation/Foundation.h> |
| |
| @interface RingBuffer : NSObject { |
| NSMutableData *buffer; |
| SInt32 position; |
| SInt32 tail; |
| } |
| @property (nonatomic, readonly) UInt32 freeSpace; |
| |
| - (id)initWithData:(NSMutableData*)data; |
| |
| // Returns false if there is not enough free space in buffer |
| - (BOOL)appendByte:(uint8_t)byte; |
| |
| // Returns number of bytes written |
| - (SInt32)appendData:(const NSData*)value offset:(SInt32)offset length:(SInt32)length; |
| |
| // Returns number of bytes written |
| - (SInt32)flushToOutputStream:(NSOutputStream*)stream; |
| |
| @end |