Samond Classes Library 1.2.0-RELEASE build 166
SCStream.h
Go to the documentation of this file.
1 //
2 // SCStream.h
3 // scl
4 //
5 // Created by Viacheslav Smolensky on 02.03.12.
6 // Copyright (c) 2007 - 2017 by Samond Development Corporation. All rights reserved.
7 //
8 
24 #import <Foundation/Foundation.h>
25 #import <scl/SCTypes.h>
26 #import <scl/SCObject.h>
27 #import <scl/SCStreamException.h>
28 #import <scl/SCSystemException.h>
29 #import <scl/SCStreaming.h>
30 
31 #pragma mark -
32 #pragma mark Константы класса
33 
37 #define SCStreamClass @"SCStream"
38 #define SC_STREAM_MAX_STRING_LENGTH 4096
40 
42 #pragma mark -
43 #pragma mark Типы данных для поддержки потоков
44 
63 
69 
75 };
76 
88 
103 
109 
115 
121 
127 
133 
139 
145 
151 
157 
163 
169 };
170 
182 
183 @protocol SCStreamDelegate;
184 
185 #pragma mark -
186 
242 @interface SCStream : SCObject {
243  SCStreamErrorHandling fErrorHandling; // Режим обработки ошибок
244  SCStreamStatus fStatus; // Состяние потока
245  NSString *fName; // Имя потока
246  BOOL fOpened; // Флаг открытия потока
247  id fObject; // Указатель на текущий загружаемый объект
248  SCStreamException *fStreamException; // Указатель на последнюю ошибку в работе потока
249  SCSystemException *fSystemException; // Указатель на последнюю системную ошибку
250  id<SCStreamDelegate> fDelegate; // Объект обработки событий
251  SCULong fTotalRead; // Общее количество прочитанных символов
252  SCULong fTotalWrite; // Общее количество записанных символов
253  SCULong fLastRead; // Количество прочитанных символов во время последней операции чтения
254  SCULong fLastWrite; // Количество записанных символов во время последней операции записи
255 }
256 #pragma mark -
257 #pragma mark Свойства экземпляра класса
258 
269 @property (nonatomic, assign, getter=errorHandling, setter=setErrorHandling:) SCStreamErrorHandling errorHandling;
270 
275 @property (nonatomic, assign, readonly, getter=status) SCStreamStatus status;
276 
281 @property (nonatomic, retain, readonly, getter=name) NSString *name;
282 
287 @property (nonatomic, assign, readonly, getter=opened) BOOL opened;
288 
293 @property (nonatomic, assign, readonly, getter=readable) BOOL readable;
294 
299 @property (nonatomic, assign, readonly, getter=writable) BOOL writable;
300 
305 @property (nonatomic, assign, readonly, getter=readOnly) BOOL readOnly;
306 
311 @property (nonatomic, assign, readonly, getter=writeOnly) BOOL writeOnly;
312 
317 @property (nonatomic, assign, readonly, getter=readWrite) BOOL readWrite;
318 
323 @property (retain, readonly, getter=object) id object;
324 
329 @property (nonatomic, assign, readonly, getter=streamException) SCStreamException *streamException;
330 
335 @property (nonatomic, assign, readonly, getter=systemException) SCSystemException *systemException;
336 
341 @property (nonatomic, assign, getter=delegate, setter=setDelegate:) id<SCStreamDelegate> delegate;
342 
362 @property (nonatomic, assign, readonly, getter=eof) BOOL eof;
363 
375 @property (nonatomic, assign, readonly, getter=totalRead) SCULong totalRead;
376 
381 @property (nonatomic, assign, readonly, getter=totalWrite) SCULong totalWrite;
382 
387 @property (nonatomic, assign, readonly, getter=lastRead) SCULong lastRead;
388 
393 @property (nonatomic, assign, readonly, getter=lastWrite) SCULong lastWrite;
394 
397 #pragma mark -
398 #pragma mark Доступ к свойствам экземпляра класса
399 - (SCStreamErrorHandling)errorHandling;
400 - (SCStreamStatus)status;
401 - (NSString *)name;
402 - (BOOL)opened;
403 - (BOOL)readable;
404 - (BOOL)writable;
405 - (BOOL)readOnly;
406 - (BOOL)writeOnly;
407 - (BOOL)readWrite;
408 - (id)object;
409 - (SCStreamException *)streamException;
410 - (SCSystemException *)systemException;
411 - (id<SCStreamDelegate>)delegate;
412 - (void)setErrorHandling:(SCStreamErrorHandling)mode;
413 - (void)setDelegate:(id<SCStreamDelegate>)delegate;
414 
415 #pragma mark -
416 #pragma mark Инициализация потоков
417 - (id)init;
418 
419 #pragma mark -
420 #pragma mark Чтение данных из потока
421 - (SCUSize)readBytes:(SCUSize)count toBuffer:(void *)buffer;
422 - (id<SCStreaming>)readObject;
423 - (SCByte)readByte;
424 - (SCUByte)readUByte;
425 - (SCShort)readShort;
426 - (SCUShort)readUShort;
427 - (SCInteger)readInteger;
428 - (SCUInteger)readUInteger;
429 - (SCLong)readLong;
430 - (SCULong)readULong;
431 - (char)readChar;
432 - (unichar)readUnichar;
433 - (const char *)readCharString;
434 - (BOOL)readBool;
435 - (SCFloat)readFloat;
436 - (SCDouble)readDouble;
437 - (SCUSize)readToByte:(SCByte *)buffer;
438 - (SCUSize)readToUByte:(SCUByte *)buffer;
439 - (SCUSize)readToShort:(SCShort *)buffer;
440 - (SCUSize)readToUShort:(SCUShort *)buffer;
441 - (SCUSize)readToInteger:(SCInteger *)buffer;
442 - (SCUSize)readToUInteger:(SCUInteger *)buffer;
443 - (SCUSize)readToLong:(SCULong *)buffer;
444 - (SCUSize)readToULong:(SCULong *)buffer;
445 - (SCUSize)readToChar:(char *)buffer;
446 - (SCUSize)readToUnichar:(unichar *)buffer;
447 - (SCUSize)readToCharString:(char *)buffer max:(SCUSize)max;
448 - (SCUSize)readToBool:(BOOL *)buffer;
449 - (SCUSize)readToFloat:(SCFloat *)buffer;
450 - (SCUSize)readToDouble:(SCDouble *)buffer;
451 
452 #pragma mark -
453 #pragma mark Запись данных в поток
454 - (SCUSize)writeBytes:(SCUSize)count fromBuffer:(const void *)buffer;
455 - (void)writeObject:(id<SCStreaming>)object;
456 - (void)writeByte:(SCByte)variable;
457 - (void)writeUByte:(SCUByte)variable;
458 - (void)writeShort:(SCShort)variable;
459 - (void)writeUShort:(SCUShort)variable;
460 - (void)writeInteger:(SCInteger)variable;
461 - (void)writeUInteger:(SCUInteger)variable;
462 - (void)writeLong:(SCLong)variable;
463 - (void)writeULong:(SCULong)variable;
464 - (void)writeChar:(char)variable;
465 - (void)writeUnichar:(unichar)variable;
466 - (void)writeCharString:(const char *)variable;
467 - (void)writeBool:(BOOL)variable;
468 - (void)writeFloat:(SCFloat)variable;
469 - (void)writeDouble:(SCDouble)variable;
470 
471 #pragma mark -
472 #pragma mark Поддержка текстовых файлов
473 - (NSString *)readStringWithEncoding:(NSStringEncoding)encoding max:(SCUInteger)max;
474 - (NSString *)readStringWithEncoding:(NSStringEncoding)encoding;
475 - (NSString *)readStringWithMax:(SCUInteger)max;
476 - (NSString *)readString;
477 - (void)writeString:(NSString *)string encoding:(NSStringEncoding)encoding;
478 - (void)writeString:(NSString *)string;
479 
480 #pragma mark -
481 #pragma mark Позиционирование в потоках
482 - (BOOL)eof;
483 
484 #pragma mark -
485 #pragma mark Доступ к статистическим данным
486 - (SCULong)totalRead;
487 - (SCULong)totalWrite;
488 - (SCULong)lastRead;
489 - (SCULong)lastWrite;
490 - (void)resetStats;
491 
492 @end
uint64_t SCULong
Definition: SCTypes.h:78
int16_t SCShort
Definition: SCTypes.h:42
SCULong lastWrite
Definition: SCStream.h:393
Definition: SCStream.h:102
int64_t SCLong
Definition: SCTypes.h:54
BOOL readable
Definition: SCStream.h:293
Definition: SCStream.h:132
_SCStreamErrorHandling
Definition: SCStream.h:57
Definition: SCStream.h:138
Definition: SCStream.h:62
NSString * name
Definition: SCStream.h:281
SCStreamErrorHandling errorHandling
Definition: SCStream.h:269
int32_t SCInteger
Definition: SCTypes.h:48
SCStreamStatus status
Definition: SCStream.h:275
Definition: SCStream.h:156
SCULong totalWrite
Definition: SCStream.h:381
id< SCStreamDelegate > delegate
Definition: SCStream.h:341
uint32_t SCUInteger
Definition: SCTypes.h:72
Definition: SCStream.h:68
BOOL writable
Definition: SCStream.h:299
Definition: SCStream.h:144
_SCStreamStatus
Definition: SCStream.h:97
Definition: SCStream.h:162
int8_t SCByte
Definition: SCTypes.h:36
SCULong totalRead
Definition: SCStream.h:375
Streams events handling class.
Definition: SCStreamDelegate.h:51
SCSystemException * systemException
Definition: SCStream.h:335
uint16_t SCUShort
Definition: SCTypes.h:66
SCInteger SCStreamStatus
Stream status type.
Definition: SCStream.h:181
enum _SCStreamErrorHandling SCStreamErrorHandling
Stream error handling type.
Definition: SCStream.h:87
Parent class of all library classes.
Definition: SCObject.h:57
uint8_t SCUByte
Definition: SCTypes.h:60
id object
Definition: SCStream.h:323
Definition: SCStream.h:126
Definition: SCStream.h:108
Definition: SCStream.h:114
System error exception class.
Definition: SCSystemException.h:85
Definition: SCStream.h:74
size_t SCUSize
Definition: SCTypes.h:221
float_t SCFloat
Definition: SCTypes.h:84
Definition: SCStream.h:120
BOOL writeOnly
Definition: SCStream.h:311
Streams communications protocol.
Definition: SCStreaming.h:40
BOOL eof
Definition: SCStream.h:362
Exception class SCStreamException.
Definition: SCStreamException.h:163
SCStreamException * streamException
Definition: SCStream.h:329
Definition: SCStream.h:168
Definition: SCStream.h:150
BOOL readWrite
Definition: SCStream.h:317
BOOL readOnly
Definition: SCStream.h:305
SCULong lastRead
Definition: SCStream.h:387
double_t SCDouble
Definition: SCTypes.h:90
Abstract parent class of the stream classes hierarchy.
Definition: SCStream.h:242
BOOL opened
Definition: SCStream.h:287