本文整理汇总了C++中SharedBuffer::resize方法的典型用法代码示例。如果您正苦于以下问题:C++ SharedBuffer::resize方法的具体用法?C++ SharedBuffer::resize怎么用?C++ SharedBuffer::resize使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类SharedBuffer
的用法示例。
在下文中一共展示了SharedBuffer::resize方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: handleReceive
void Connection::handleReceive( const ConnectionPtr& cnx,
SharedBuffer& buffer,
bool isFirstPart,
const sys::error_code& error,
size_t size )
{
if ( error || size == 0 )
{
TRACE( "Error reading data: " << error.message() );
return;
}
if ( isFirstPart )
{
uint32_t msgSize = readMessageSize( buffer );
TRACE( "Msg size: " << msgSize << " -- Read Size: " << size );
if ( msgSize > size )
{
// Schedule a complete read
buffer.resize( msgSize );
asio::async_read( m_socket, asio::buffer( buffer.data() + size,
msgSize - size ), bind( &Connection::handleReceive, this,
cnx, buffer, false, ph::error, ph::bytes_transferred ) );
return;
}
}
TRACE( "Got the complete message" );
/// Do something....
Message msg;
readMessageWithSize( buffer, msg );
switch ( msg.type() )
{
case Message::NodeList:
{
TRACE( "Node list received: " );
m_membership.receivedNodeList( msg.nodelist() );
receiveMessage();
break;
}
case Message::Ping:
{
TRACE( "Ping msg received" );
SharedBuffer buffer;
if ( !msg.ping().has_nodelist() )
buffer = CreatePongMsg();
else
{
m_membership.receivedNodeList( msg.ping().nodelist() );
DEBUG( "Resending the node list with pong message" );
buffer = CreatePongMsg( m_membership.nodeList() );
}
asio::async_write( m_socket, buffer, bind( &Connection::handleSend,
this, cnx, ph::error, ph::bytes_transferred ) );
break;
}
default:
{
ERROR( "Invalid msg received." );
dumpBuffer( std::cerr, buffer.data(), buffer.size() );
break;
}
}
}