void ViBufferStream::insert(qint64 position, const char *data, int length) { QMutexLocker streamLocker(&mStreamMutex); mBuffer->insert(position, data, length); streamLocker.unlock(); inserted(position, length); }
int ViBufferStream::read(char *data, int length) { QMutexLocker streamLocker(&mStreamMutex); QMutexLocker bufferLocker(mBufferMutex); length = mDevice->read(data, length); return length; }
void ViBufferStream::insert(qint64 position, const ViBufferChunk &chunk) { QMutexLocker streamLocker(&mStreamMutex); mBuffer->insert(position, chunk); streamLocker.unlock(); inserted(position, chunk.size()); }
int ViBufferStream::write(const char *data, int length) { QMutexLocker streamLocker(&mStreamMutex); QMutexLocker bufferLocker(mBufferMutex); int written = mDevice->write(data, length); bufferLocker.unlock(); mBuffer->change(); return written; }
void ViBufferStream::remove(qint64 position, int length) { QMutexLocker streamLocker(&mStreamMutex); if(mBuffer->remove(position, length)) { streamLocker.unlock(); removed(position, length); } }
XnStatus XnServerSession::OnPropertyChanged(const XnProperty* pProp) { XnStatus nRetVal = XN_STATUS_OK; XnAutoCSLocker streamLocker(m_hStreamsLock); SessionStream* pStream = NULL; nRetVal = FindStreamByServerName(pProp->GetModule(), &pStream); XN_IS_STATUS_OK(nRetVal); // send message m_pLogger->DumpMessage("PropChange", 0, m_nID, pProp->GetName()); XnAutoCSLocker commLocker(m_hCommLock); switch (pProp->GetType()) { case XN_PROPERTY_TYPE_INTEGER: { XnActualIntProperty* pActualProp = (XnActualIntProperty*)pProp; nRetVal = m_privateOutgoingPacker.WriteProperty(pStream->strClientStreamName, pProp->GetName(), pActualProp->GetValue()); XN_IS_STATUS_OK(nRetVal); break; } case XN_PROPERTY_TYPE_REAL: { XnActualRealProperty* pActualProp = (XnActualRealProperty*)pProp; nRetVal = m_privateOutgoingPacker.WriteProperty(pStream->strClientStreamName, pProp->GetName(), pActualProp->GetValue()); XN_IS_STATUS_OK(nRetVal); break; } case XN_PROPERTY_TYPE_STRING: { XnActualStringProperty* pActualProp = (XnActualStringProperty*)pProp; nRetVal = m_privateOutgoingPacker.WriteProperty(pStream->strClientStreamName, pProp->GetName(), pActualProp->GetValue()); XN_IS_STATUS_OK(nRetVal); break; } case XN_PROPERTY_TYPE_GENERAL: { XnActualGeneralProperty* pActualProp = (XnActualGeneralProperty*)pProp; nRetVal = m_privateOutgoingPacker.WriteProperty(pStream->strClientStreamName, pProp->GetName(), pActualProp->GetValue()); XN_IS_STATUS_OK(nRetVal); break; } default: XN_LOG_WARNING_RETURN(XN_STATUS_ERROR, XN_MASK_SENSOR_SERVER, "Unknown property type: %d", pProp->GetType()); } return (XN_STATUS_OK); }
ViBuffer* ViBufferStream::buffer() { QMutexLocker streamLocker(&mStreamMutex); return mBuffer; }
bool ViBufferStream::atEnd() { QMutexLocker streamLocker(&mStreamMutex); return mDevice->pos() >= (mBuffer->size() - 1); }
bool ViBufferStream::setPosition(qint64 position) { QMutexLocker streamLocker(&mStreamMutex); return mDevice->seek(position); }
qint64 ViBufferStream::position() { QMutexLocker streamLocker(&mStreamMutex); return mDevice->pos(); }
int ViBufferStream::size() { QMutexLocker streamLocker(&mStreamMutex); return mBuffer->size(); }