📄 tcpsocketreceiver.cpp
字号:
/*
* ============================================================================
* Name : CTcpSocketReceiver from TcpSocketReceiver.cpp
* Part of : TcpSocket
* Created : 06.03.2006 by ToBeReplacedByAuthor
* Implementation notes:
*
* Version :
* Copyright: ToBeReplacedByCopyright
* ============================================================================
*/
// INCLUDE FILES
#include "TcpSocketReceiver.h"
// ================= MEMBER FUNCTIONS =======================
// constructor
CTcpSocketReceiver::CTcpSocketReceiver(MObserver& aObserver, RSocket& aSocket)
: CActive(CActive::EPriorityStandard), iObserver(aObserver), iSocket(aSocket),
iBuf(const_cast<TUint8*>(iBuffer.Ptr()), 4)
{
CActiveScheduler::Add(this);
}
// destructor
CTcpSocketReceiver::~CTcpSocketReceiver()
{
Cancel();
}
void CTcpSocketReceiver::Receive()
{
Cancel();
// Receive the length of the message
iBuf.Set(const_cast<TUint8*>(iBuffer.Ptr()), 0, 4);
iSocket.Read(iBuf, iStatus);
SetActive();
}
void CTcpSocketReceiver::DoCancel()
{
iSocket.CancelRead();
}
void CTcpSocketReceiver::RunL()
{
TInt err = iStatus.Int();
if(err==KErrNone)
{
if(iBuf.Size()==4)
{
TInt size = 0;
TPckg<TInt> pkg(size);
pkg.Copy(iBuf);
// Receive the message
iBuf.Set(const_cast<TUint8*>(iBuffer.Ptr()), 0, size);
iSocket.Read(iBuf, iStatus);
SetActive();
}
else
{
// Notify observer
const TUint16* ptr = reinterpret_cast<const TUint16*>(iBuf.Ptr());
TPtrC msg(ptr, iBuf.Length()/2);
iObserver.OnReceiveL(msg, err);
}
}
else
{
iObserver.OnReceiveL(KNullDesC(), err);
}
}
// End of File
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -