bool TcpSession::writeMessage( const Message& msg ) { if (!isOk()) { return false; } boost::mutex::scoped_lock lock(_writeMutex); if (!checkWriteBuffer(msg)) { try { postWriteNull(); } catch (std::exception& e) { LOGE("Try to write error ==> [ %s ]", e.what()); } return false; } if ( _writeBuffer ) { writeNolock((const char*)&msg, MessageHeaderLength); writeNolock(msg._msgData, msg.messageDataLen()); return true; } LOGE("Write buffer is null"); return false; }
/** * seek to absolute position **/ ::std::streampos seekpos(::std::streampos sp, ::std::ios_base::openmode /* which */) { // flush write buffer before seeking anywhere checkWriteBuffer(); // seek off_t const off = doSeek(sp,SEEK_SET); if ( off == static_cast<off_t>(-1) ) return -1; // empty get buffer setg(buffer.end(),buffer.end(),buffer.end()); // empty put buffer setp(buffer.begin(),buffer.end()-1); // set positions readpos = off; writepos = off; return off; }