本文整理汇总了C++中TQueue::Pop方法的典型用法代码示例。如果您正苦于以下问题:C++ TQueue::Pop方法的具体用法?C++ TQueue::Pop怎么用?C++ TQueue::Pop使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类TQueue
的用法示例。
在下文中一共展示了TQueue::Pop方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: ReceiveDataCallback
void DZeroCopyLoopbackDevice::ReceiveDataCallback()
{
// Copy buffer from send queue (it's like our receive hardware) to receive queue
DCommsBuf* srcBuf = iSendQueue.HeadBuffer();
if(!iReceiveQueue.IsFull() && !iSendQueue.IsEmpty())
{
// Alloc a new buffer in to which we will copy the received (sent) buffer (mimicking DMA in the non zerocopy case)
DCommsBuf newBuf;
TInt result = iLdd->Pond().Alloc(newBuf);
if(result == KErrNone)
{
// Copy our buffer and set the new buffer's properties
TInt srcPayloadLength = srcBuf->Length();
newBuf.SetOffset(0);
newBuf.SetLength(srcPayloadLength);
// Do the copy
TUint8* srcPayloadPtr = srcBuf->Ptr();
TUint8* destPayloadPtr = newBuf.Ptr();
memcpy(destPayloadPtr, srcPayloadPtr, srcPayloadLength);
// Put the new buffer in the receive queue
DCommsBuf* destBuf = iReceiveQueue.TailBuffer();
*destBuf = newBuf;
iReceiveQueue.Push();
// Drop the incoming buffer
srcBuf->Free();
// Step the queue
iSendQueue.Pop();
}
// We can now complete any outstanding request for received data - if indeed we managed to alloc a receive buffer
if(iPendingRead && !iReceiveQueue.IsEmpty())
{
iPendingRead = FALSE;
// Tell LDD we're done
iLdd->ReceiveDataComplete(KErrNone);
}
}
}
示例2: AdvanceReceiveQueue
void DZeroCopyLoopbackDevice::AdvanceReceiveQueue()
{
iReceiveQueue.Pop();
}