本文整理汇总了C++中WriteBuffer::getWriteData方法的典型用法代码示例。如果您正苦于以下问题:C++ WriteBuffer::getWriteData方法的具体用法?C++ WriteBuffer::getWriteData怎么用?C++ WriteBuffer::getWriteData使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类WriteBuffer
的用法示例。
在下文中一共展示了WriteBuffer::getWriteData方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: writeOutput
void TcpSocketRxComponent::writeOutput()
{
std::size_t size;
try
{
if(!connected_)
{
//Listen for connection if necessary
acceptor_->accept(*socket_);
connected_ = true;
}
//Get data from socket
//size = socket_->receive(boost::asio::buffer(d_buffer, x_bufferSize));
size = boost::asio::read(*socket_, boost::asio::buffer(buffer_, bufferSize_x));
}
catch(boost::system::system_error &e)
{
LOG(LERROR) << "Error listening on socket: " << e.what();
boost::this_thread::sleep(boost::posix_time::milliseconds(5000));
return;
}
//Check that we've an integer number of data types in the datagram
float f = size/(float)sizeof(T);
float intpart, rem;
rem = modf(f, &intpart);
if(rem != 0)
{
LOG(LERROR) << "Did not receive an integer number of elements. Input size = " << size;
}
int numT = (int)intpart;
//Get the output buffer
WriteBuffer< T >* outBuf = castToType<T>(outputBuffers[0]);
DataSet<T>* writeDataSet = NULL;
outBuf->getWriteData(writeDataSet, numT);
//Copy data into output
T* bufT = (T*)buffer_;
copy(bufT, bufT+numT, writeDataSet->data.begin());
//Release the buffer
outBuf->releaseWriteData(writeDataSet);
}
示例2: writeOutput
void UdpSocketRxComponent::writeOutput()
{
if(!bStopping_)
{
//Get data from socket
std::size_t size;
try
{
udp::endpoint sender_endpoint;
size = socket_->receive_from(boost::asio::buffer(buffer_, bufferSize_x), sender_endpoint);
}
catch(boost::system::system_error &e)
{
if(!bStopping_)
{
LOG(LERROR) << "Error receiving from socket: " << e.what();
}
return;
}
//Check that we've an integer number of data types in the datagram
float f = size/(float)sizeof(T);
float intpart, rem;
rem = modf(f, &intpart);
if(rem != 0)
{
LOG(LERROR) << "Did not receive an integer number of elements - data will be lost";
}
int numT = (int)intpart;
//Get the output buffer
WriteBuffer< T >* outBuf = castToType<T>(outputBuffers[0]);
DataSet<T>* writeDataSet = NULL;
outBuf->getWriteData(writeDataSet, numT);
//Copy data into output
T* bufT = (T*)buffer_;
copy(bufT, bufT+numT, writeDataSet->data.begin());
//Release the buffer
outBuf->releaseWriteData(writeDataSet);
}
}
示例3: readBlock
void FileRawReaderComponent::readBlock()
{
//Get the output buffer & work directly on it
WriteBuffer< T >* outBuf = castToType<T>(outputBuffers[0]);
DataSet<T>* writeDataSet = NULL;
outBuf->getWriteData(writeDataSet, blockSize_x);
char *bytebuf = reinterpret_cast<char*>(&writeDataSet->data[0]);
ifstream::pos_type toread = blockSize_x * sizeof(T);
//Read a block (loop if necessary)
while( toread > 0 )
{
hInFile_.read(bytebuf, toread);
toread -= hInFile_.gcount();
bytebuf += hInFile_.gcount();
if( hInFile_.eof() )
{
hInFile_.clear();
hInFile_.seekg(0, ios::beg);
}
}
if (sizeof(T) > 1)
{
//Convert endianess
if (endian_x == "native")
; // nothing to do
else if (endian_x == "little")
transform(writeDataSet->data.begin(), writeDataSet->data.end(),
writeDataSet->data.begin(), lit2sys<T> );
else if (endian_x == "big")
transform(writeDataSet->data.begin(), writeDataSet->data.end(),
writeDataSet->data.begin(), big2sys<T> );
}
outBuf->releaseWriteData(writeDataSet);
}