#include <ExternalWriteStream.h>
Inheritance diagram for Core::ExternalWriteStream:
Public Member Functions | |
ExternalWriteStream (IOAccessor *accessor) | |
virtual String * | className (void) const |
Answer receiver class name. | |
virtual void | flush (void) |
virtual Object * | next (void) |
virtual void | nextPut (Object *object) |
virtual void | nextPut (const char object) |
virtual long | size (void) |
virtual long | position (void) |
virtual void | position (long position) |
virtual long | writePosition (void) |
virtual bool | atEnd (void) |
virtual bool | isReadable (void) |
virtual bool | isWritable (void) |
virtual void | closeConnection (void) |
virtual bool | nextBuffer (void) |
|
Definition at line 36 of file ExternalWriteStream.cc. 00037 : ExternalStream(accessor) 00038 { 00039 /* Does nothing */ 00040 }
|
|
Reimplemented from Core::ExternalStream. Definition at line 101 of file ExternalWriteStream.cc. 00102 { 00103 return true; 00104 }
|
|
Answer receiver class name. Because there isn't any standard way to obtain class name this method comes to place. Every class should rewrite this method but many didn't (yet). Reimplemented from Core::ExternalStream. Definition at line 43 of file ExternalWriteStream.cc. 00044 { 00045 return new String("ExternalWriteStream"); 00046 }
|
|
Reimplemented from Core::ExternalStream. Definition at line 117 of file ExternalWriteStream.cc. References Core::PositionableStream::_position, Core::IOAccessor::close(), flush(), Core::ExternalStream::io_accessor, Core::Object::printString(), Core::PositionableStream::read_limit, and Core::PositionableStream::write_limit. 00118 { 00119 try { 00120 flush(); 00121 io_accessor->close(); 00122 } 00123 catch (Error *ex) { 00124 fprintf(stderr, "ExternalWriteStream: error occured %s\n", ex->printString()->asCString()); 00125 } 00126 _position = read_limit = 0; 00127 write_limit = -1; 00128 }
|
|
Reimplemented from Core::Stream. Definition at line 49 of file ExternalWriteStream.cc. References Core::PositionableStream::_position, Core::IOBuffer::buffer(), Core::IOBuffer::bufferChanged(), Core::PositionableStream::collection, Core::IOBuffer::firstDataPosition(), Core::IOBuffer::flushBufferUpTo(), Core::ExternalStream::io_buffer, Core::SequenceableCollection::size(), and Core::PositionableStream::write_limit. Referenced by closeConnection(), Core::ExternalReadAppendStream::flush(), nextBuffer(), nextPut(), and size(). 00050 { 00051 if (write_limit == -1 || _position < 1) return; 00052 io_buffer->bufferChanged(); 00053 io_buffer->flushBufferUpTo(_position); 00054 collection = io_buffer->buffer(); 00055 _position = io_buffer->firstDataPosition(); 00056 write_limit = collection->size(); 00057 }
|
|
Reimplemented from Core::Stream. Definition at line 106 of file ExternalWriteStream.cc. 00107 { 00108 return false; 00109 }
|
|
Reimplemented from Core::Stream. Definition at line 111 of file ExternalWriteStream.cc. 00112 { 00113 return true; 00114 }
|
|
Reimplemented from Core::PositionableStream. Definition at line 59 of file ExternalWriteStream.cc. References nil, and Core::Object::shouldNotImplement(). 00060 { 00061 shouldNotImplement(new String(__PRETTY_FUNCTION__)); 00062 return nil; 00063 }
|
|
Reimplemented from Core::ExternalStream. Definition at line 130 of file ExternalWriteStream.cc. References flush(). 00131 { 00132 flush(); 00133 return true; 00134 }
|
|
Reimplemented from Core::Stream. Definition at line 46 of file ExternalWriteStream.h. References Core::Stream::nextPut(). 00047 { ExternalStream::nextPut(object); }
|
|
Reimplemented from Core::Stream. Definition at line 65 of file ExternalWriteStream.cc. References Core::PositionableStream::_position, Core::PositionableStream::collection, flush(), Core::ExternalStream::io_buffer, Core::IOBuffer::lastWriteablePosition(), Core::SequenceableCollection::put(), and Core::PositionableStream::write_limit. Referenced by Core::ExternalReadAppendStream::nextPut(). 00066 { 00067 if (_position >= write_limit) { 00068 if (write_limit == -1) { 00069 write_limit = io_buffer->lastWriteablePosition(); 00070 if (_position >= write_limit) flush(); 00071 } else 00072 flush(); 00073 } 00074 collection->put(_position++, object); 00075 }
|
|
Reimplemented from Core::PositionableStream. Definition at line 89 of file ExternalWriteStream.cc. References Core::Object::error(). 00090 { 00091 error(new String("ExternalWriteStreams cannot be positioned."), 00092 new String(__PRETTY_FUNCTION__)); 00093 }
|
|
Reimplemented from Core::PositionableStream. Definition at line 84 of file ExternalWriteStream.cc. References writePosition(). 00085 { 00086 return writePosition(); 00087 }
|
|
Definition at line 77 of file ExternalWriteStream.cc. References Core::IOAccessor::dataSize(), flush(), and Core::ExternalStream::io_accessor. 00078 { 00079 flush(); 00080 return io_accessor->dataSize(); 00081 }
|
|
Definition at line 95 of file ExternalWriteStream.cc. References Core::PositionableStream::_position, Core::IOAccessor::dataSize(), and Core::ExternalStream::io_accessor. Referenced by position(), and Core::ExternalReadAppendStream::writePosition(). 00096 { 00097 return io_accessor->dataSize() + _position; 00098 }
|