Beispiel #1
0
	bool processRead(boost::shared_ptr<BaseVirtualTransport> transport) {
		if(owner_->callParentProcessRead(transport) == false)
			return false;
		
		_makeStream();
		try {
			do {
#define JSON_STREAM_SIZE	1024
				size_t nread = JSON_STREAM_SIZE;
				const void *buffer = transport->peek(nread);
				if(nread <= 0)
					break;
				stream_->push(buffer, nread);
				transport->throwAway(nread - remainStreamPos_);

				if(isReadComplete()) {
					return true;
				}
			} while(1); 
		} catch (SocketException &e) {
			(void)e;
		} catch (ProtocolException &e) {
			(void)e;
		}
		return false;
	}
Beispiel #2
0
const void * JSONProtocol::remainingBufferPtr() { 
	if(isReadComplete())
	{
		return impl_->remainingBufferPtr();
	}
	return BaseProtocol::remainingBufferPtr();
}
Beispiel #3
0
LLVFile::~LLVFile()
{
    if (!isReadComplete())
    {
        if (mHandle != LLVFSThread::nullHandle())
        {
            if (!(mMode & LLVFile::WRITE))
            {
                //llwarns << "Destroying LLVFile with pending async read/write, aborting..." << llendl;
                sVFSThread->setFlags(mHandle, LLVFSThread::FLAG_AUTO_COMPLETE | LLVFSThread::FLAG_ABORT);
            }
            else // WRITE
            {
                sVFSThread->setFlags(mHandle, LLVFSThread::FLAG_AUTO_COMPLETE);
            }
        }
    }
    mVFS->decLock(mFileID, mFileType, VFSLOCK_OPEN);
}
Beispiel #4
0
size_t JSONProtocol::remainingBufferSize() {
	if(isReadComplete()) {
		return impl_->remainingBufferSize();
	}
	return BaseProtocol::remainingBufferSize();
}