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; }
const void * JSONProtocol::remainingBufferPtr() { if(isReadComplete()) { return impl_->remainingBufferPtr(); } return BaseProtocol::remainingBufferPtr(); }
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); }
size_t JSONProtocol::remainingBufferSize() { if(isReadComplete()) { return impl_->remainingBufferSize(); } return BaseProtocol::remainingBufferSize(); }