a IOHandler with buffer support the buffer is only for read(). write() is not supported the public functions of this class are *not* thread safe! More...
#include <buffered_io_handler.h>
Public Member Functions | |
| BufferedIOHandler (zmm::Ref< IOHandler > underlyingHandler, size_t bufSize, size_t maxChunkSize, size_t initialFillSize) | |
| get an instance of a BufferedIOHandler | |
| virtual void | open (enum UpnpOpenFileMode mode) |
| Opens a data for the web server. | |
| virtual void | close () |
| Close/free previously opened/initialized data. | |
| virtual int | read (char *buf, size_t length) |
| Reads previously opened/initialized data sequentially. | |
| virtual void | seek (off_t offset, int whence) |
| Performs a seek on an open/initialized data. | |
| virtual int | write (char *buf, size_t length) |
| Writes to previously opened/initialized data sequentially. | |
| void | retain () |
| void | release () |
| int | getRefCount () |
Static Public Member Functions | |
| static void * | operator new (size_t size) |
| static void | operator delete (void *ptr) |
Protected Member Functions | |
| void | startBufferThread () |
| void | stopBufferThread () |
Static Protected Member Functions | |
| static void * | staticThreadProc (void *arg) |
Protected Attributes | |
| size_t | bufSize |
| size_t | initialFillSize |
| char * | buffer |
| bool | isOpen |
| bool | eof |
| bool | readError |
| bool | waitForInitialFillSize |
| bool | signalAfterEveryRead |
| bool | checkSocket |
| bool | empty |
| size_t | a |
| size_t | b |
| off_t | posRead |
| bool | seekEnabled |
| bool | doSeek |
| off_t | seekOffset |
| int | seekWhence |
| pthread_t | bufferThread |
| bool | threadShutdown |
| zmm::Ref< Cond > | cond |
| zmm::Ref< Mutex > | mutex |
| mt_atomic_t | _ref_count |
Private Member Functions | |
| virtual void | threadProc () |
Private Attributes | |
| zmm::Ref< IOHandler > | underlyingHandler |
| size_t | maxChunkSize |
a IOHandler with buffer support the buffer is only for read(). write() is not supported the public functions of this class are *not* thread safe!
Definition at line 42 of file buffered_io_handler.h.
| BufferedIOHandler::BufferedIOHandler | ( | zmm::Ref< IOHandler > | underlyingHandler, | |
| size_t | bufSize, | |||
| size_t | maxChunkSize, | |||
| size_t | initialFillSize | |||
| ) |
get an instance of a BufferedIOHandler
| underlyingHandler | the IOHandler from which the buffer should read | |
| bufSize | the size of the buffer in bytes | |
| maxChunkSize | the maximum size of the chunks which are read by the buffer | |
| initialFillSize | the number of bytes which have to be in the buffer before the first read at the very beginning or after a seek returns; 0 disables the delay |
Definition at line 41 of file buffered_io_handler.cc.
References _, _Exception, and nil.
| void BufferedIOHandler::close | ( | ) | [virtual] |
Close/free previously opened/initialized data.
Reimplemented from IOHandlerBufferHelper.
Definition at line 61 of file buffered_io_handler.cc.
References underlyingHandler.
| int Object::getRefCount | ( | ) | [inherited] |
Definition at line 78 of file object.cc.
References zmm::Object::_ref_count, and atomic_get().
| virtual void BufferedIOHandler::open | ( | enum UpnpOpenFileMode | mode | ) | [virtual] |
Opens a data for the web server.
| mode | in which the data will be opened (we only support UPNP_READ) |
Reimplemented from IOHandlerBufferHelper.
| void Object::operator delete | ( | void * | ptr | ) | [static, inherited] |
| void * Object::operator new | ( | size_t | size | ) | [static, inherited] |
| virtual int IOHandlerBufferHelper::read | ( | char * | buf, | |
| size_t | length | |||
| ) | [virtual, inherited] |
Reads previously opened/initialized data sequentially.
| buf | This buffer will be filled by our read functions. | |
| length | Number of bytes to read. |
Reimplemented from IOHandler.
| void Object::release | ( | ) | [inherited] |
Definition at line 66 of file object.cc.
References zmm::Object::_ref_count, atomic_dec(), and zmm::Object::mutex.
Referenced by zmm::ArrayBase::clear(), zmm::String::operator=(), DSOHash< zmm::Array< CacheObject > >::releaseData(), DSBHash< VT >::releaseData(), DSOHash< zmm::Array< CacheObject > >::remove(), zmm::ArrayBase::remove(), zmm::ArrayBase::removeUnordered(), zmm::ArrayBase::set(), zmm::ArrayBase::~ArrayBase(), DSOHash< zmm::Array< CacheObject > >::~DSOHash(), zmm::ObjectQueue< AutoscanDirectory >::~ObjectQueue(), zmm::ObjectStack< Element >::~ObjectStack(), and zmm::String::~String().
| void Object::retain | ( | ) | [inherited] |
Definition at line 58 of file object.cc.
References zmm::Object::_ref_count, atomic_inc(), and zmm::Object::mutex.
Referenced by zmm::ArrayBase::append(), zmm::ObjectQueue< AutoscanDirectory >::enqueue(), zmm::ArrayBase::insert(), zmm::String::operator=(), zmm::ObjectStack< Element >::push(), DSOHash< zmm::Array< CacheObject > >::put(), DSBHash< VT >::put(), zmm::ArrayBase::set(), and zmm::String::String().
| virtual void IOHandlerBufferHelper::seek | ( | off_t | offset, | |
| int | whence | |||
| ) | [virtual, inherited] |
Performs a seek on an open/initialized data.
| offset | Number of bytes to move in the buffer. For seeking forwards positive values are used, for seeking backwards - negative. Offset must be positive if origin is set to SEEK_SET | |
| whence | The position to move relative to. SEEK_CUR to move relative to current position, SEEK_END to move relative to the end of file, SEEK_SET to specify an absolute offset. |
Reimplemented from IOHandler.
| void IOHandlerBufferHelper::startBufferThread | ( | ) | [protected, inherited] |
Definition at line 201 of file io_handler_buffer_helper.cc.
References IOHandlerBufferHelper::bufferThread, NULL, and IOHandlerBufferHelper::staticThreadProc().
| void * IOHandlerBufferHelper::staticThreadProc | ( | void * | arg | ) | [static, protected, inherited] |
Definition at line 222 of file io_handler_buffer_helper.cc.
References log_debug, NULL, and IOHandlerBufferHelper::threadProc().
Referenced by IOHandlerBufferHelper::startBufferThread().
| void IOHandlerBufferHelper::stopBufferThread | ( | ) | [protected, inherited] |
Definition at line 211 of file io_handler_buffer_helper.cc.
References AUTOLOCK, AUTOUNLOCK, IOHandlerBufferHelper::bufferThread, IOHandlerBufferHelper::cond, IOHandlerBufferHelper::mutex, NULL, and IOHandlerBufferHelper::threadShutdown.
Referenced by IOHandlerBufferHelper::close().
| void BufferedIOHandler::threadProc | ( | ) | [private, virtual] |
Implements IOHandlerBufferHelper.
Definition at line 68 of file buffered_io_handler.cc.
References IOHandlerBufferHelper::a, AUTOLOCK, AUTORELOCK, AUTOUNLOCK, IOHandlerBufferHelper::b, IOHandlerBufferHelper::buffer, IOHandlerBufferHelper::bufSize, zmm::String::c_str(), CHECK_SOCKET, IOHandlerBufferHelper::checkSocket, IOHandlerBufferHelper::cond, IOHandlerBufferHelper::doSeek, IOHandlerBufferHelper::empty, IOHandlerBufferHelper::eof, getDeltaMillis(), zmm::Exception::getMessage(), getTimespecNow(), IOHandlerBufferHelper::initialFillSize, log_debug, log_error, maxChunkSize, IOHandlerBufferHelper::mutex, IOHandlerBufferHelper::posRead, zmm::Exception::printStackTrace(), IOHandlerBufferHelper::readError, IOHandlerBufferHelper::seekOffset, IOHandlerBufferHelper::seekWhence, IOHandlerBufferHelper::threadShutdown, underlyingHandler, and IOHandlerBufferHelper::waitForInitialFillSize.
| virtual int IOHandler::write | ( | char * | buf, | |
| size_t | length | |||
| ) | [virtual, inherited] |
Writes to previously opened/initialized data sequentially.
| buf | Data to be written. | |
| length | Number of bytes to write. |
mt_atomic_t zmm::Object::_ref_count [protected, inherited] |
Definition at line 54 of file object.h.
Referenced by zmm::Object::getRefCount(), zmm::Object::Object(), zmm::Object::release(), and zmm::Object::retain().
size_t IOHandlerBufferHelper::a [protected, inherited] |
Definition at line 77 of file io_handler_buffer_helper.h.
Referenced by IOHandlerBufferHelper::IOHandlerBufferHelper(), and threadProc().
size_t IOHandlerBufferHelper::b [protected, inherited] |
Definition at line 78 of file io_handler_buffer_helper.h.
Referenced by IOHandlerBufferHelper::IOHandlerBufferHelper(), and threadProc().
char* IOHandlerBufferHelper::buffer [protected, inherited] |
Definition at line 67 of file io_handler_buffer_helper.h.
Referenced by IOHandlerBufferHelper::close(), IOHandlerBufferHelper::IOHandlerBufferHelper(), and threadProc().
pthread_t IOHandlerBufferHelper::bufferThread [protected, inherited] |
Definition at line 93 of file io_handler_buffer_helper.h.
Referenced by IOHandlerBufferHelper::startBufferThread(), and IOHandlerBufferHelper::stopBufferThread().
size_t IOHandlerBufferHelper::bufSize [protected, inherited] |
Definition at line 65 of file io_handler_buffer_helper.h.
Referenced by threadProc().
bool IOHandlerBufferHelper::checkSocket [protected, inherited] |
Definition at line 73 of file io_handler_buffer_helper.h.
Referenced by IOHandlerBufferHelper::IOHandlerBufferHelper(), and threadProc().
zmm::Ref<Cond> IOHandlerBufferHelper::cond [protected, inherited] |
Definition at line 95 of file io_handler_buffer_helper.h.
Referenced by IOHandlerBufferHelper::IOHandlerBufferHelper(), IOHandlerBufferHelper::stopBufferThread(), and threadProc().
bool IOHandlerBufferHelper::doSeek [protected, inherited] |
Definition at line 83 of file io_handler_buffer_helper.h.
Referenced by IOHandlerBufferHelper::IOHandlerBufferHelper(), and threadProc().
bool IOHandlerBufferHelper::empty [protected, inherited] |
Definition at line 76 of file io_handler_buffer_helper.h.
Referenced by IOHandlerBufferHelper::IOHandlerBufferHelper(), and threadProc().
bool IOHandlerBufferHelper::eof [protected, inherited] |
Definition at line 69 of file io_handler_buffer_helper.h.
Referenced by IOHandlerBufferHelper::IOHandlerBufferHelper(), and threadProc().
size_t IOHandlerBufferHelper::initialFillSize [protected, inherited] |
Definition at line 66 of file io_handler_buffer_helper.h.
Referenced by threadProc().
bool IOHandlerBufferHelper::isOpen [protected, inherited] |
Definition at line 68 of file io_handler_buffer_helper.h.
Referenced by IOHandlerBufferHelper::close(), IOHandlerBufferHelper::IOHandlerBufferHelper(), and IOHandlerBufferHelper::~IOHandlerBufferHelper().
size_t BufferedIOHandler::maxChunkSize [private] |
Definition at line 60 of file buffered_io_handler.h.
Referenced by threadProc().
zmm::Ref<Mutex> IOHandlerBufferHelper::mutex [protected, inherited] |
Reimplemented from zmm::Object.
Definition at line 96 of file io_handler_buffer_helper.h.
Referenced by IOHandlerBufferHelper::IOHandlerBufferHelper(), IOHandlerBufferHelper::stopBufferThread(), and threadProc().
off_t IOHandlerBufferHelper::posRead [protected, inherited] |
Definition at line 79 of file io_handler_buffer_helper.h.
Referenced by IOHandlerBufferHelper::IOHandlerBufferHelper(), and threadProc().
bool IOHandlerBufferHelper::readError [protected, inherited] |
Definition at line 70 of file io_handler_buffer_helper.h.
Referenced by IOHandlerBufferHelper::IOHandlerBufferHelper(), and threadProc().
bool IOHandlerBufferHelper::seekEnabled [protected, inherited] |
Definition at line 82 of file io_handler_buffer_helper.h.
Referenced by IOHandlerBufferHelper::IOHandlerBufferHelper().
off_t IOHandlerBufferHelper::seekOffset [protected, inherited] |
Definition at line 84 of file io_handler_buffer_helper.h.
Referenced by threadProc().
int IOHandlerBufferHelper::seekWhence [protected, inherited] |
Definition at line 85 of file io_handler_buffer_helper.h.
Referenced by threadProc().
bool IOHandlerBufferHelper::signalAfterEveryRead [protected, inherited] |
Definition at line 72 of file io_handler_buffer_helper.h.
Referenced by IOHandlerBufferHelper::IOHandlerBufferHelper().
bool IOHandlerBufferHelper::threadShutdown [protected, inherited] |
Definition at line 94 of file io_handler_buffer_helper.h.
Referenced by IOHandlerBufferHelper::IOHandlerBufferHelper(), IOHandlerBufferHelper::stopBufferThread(), and threadProc().
Definition at line 59 of file buffered_io_handler.h.
Referenced by close(), and threadProc().
bool IOHandlerBufferHelper::waitForInitialFillSize [protected, inherited] |
Definition at line 71 of file io_handler_buffer_helper.h.
Referenced by IOHandlerBufferHelper::IOHandlerBufferHelper(), and threadProc().
1.6.1