⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tcpsocketreceiver.cpp

📁 《基于Symbian OS的手机开发与应用实践》这本书的配套源码。
💻 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 + -