📄 listenbuffer.cpp
字号:
/*
============================================================================
Name : ListenBuffer.cpp
Author :
Version :
Copyright : Your copyright notice
Description : CListenBuffer implementation
============================================================================
*/
#include "ListenBuffer.h"
#include "SIPEngine.h"
CListenBuffer* CListenBuffer::NewL()
{
CListenBuffer* self = NewLC();
CleanupStack::Pop(self);
return self;
}
CListenBuffer* CListenBuffer::NewLC()
{
CListenBuffer* self = new (ELeave) CListenBuffer();
CleanupStack::PushL(self);
self->ConstructL();
return self;
}
CListenBuffer::CListenBuffer() : CActive(EPriorityStandard) // Standard priority
{
}
void CListenBuffer::ConstructL()
{
User::LeaveIfError(iTimer.CreateLocal()); // Initialize timer
CActiveScheduler::Add(this); // Add to scheduler
}
CListenBuffer::~CListenBuffer()
{
Cancel(); // Cancel any request, if outstanding
// Delete instance variables if any
iTimer.Close();
}
void CListenBuffer::DoCancel()
{
iTimer.Cancel();
}
void CListenBuffer::StartL(TTimeIntervalMicroSeconds32 aDelay, int aProtocol,
int aLocalPort, char *aRemoteAddress,
int aRemotePort, HBufC8 *aBuffer)
{
Cancel(); // Cancel any request, just to be sure
iState = EUninitialized;
iProtocol = aProtocol;
iRemoteAddress = aRemoteAddress;
iRemotePort = aRemotePort;
iLocalPort = aLocalPort;
iBuffer = aBuffer;
iTimer.After(iStatus, aDelay); // Set for later
SetActive(); // Tell scheduler a request is active
}
void CListenBuffer::RunL()
{
if (iState == EUninitialized) {
// Do something the first time RunL() is called
iState = EInitialized;
} else if (iState != EError) {
// 监听接收消息缓冲区,如果有消息,开始执行。
if (iBuffer->Length() > 0)
{
iBuffer->Des().Zero();
}
}
iTimer.After(iStatus, 1000000); // Set for 1 sec later
SetActive(); // Tell scheduler a request is active
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -