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

📄 gdploop.cpp

📁 Symbian C++ scmp.zip
💻 CPP
字号:
// gdploop.cpp
//
// Copyright (c) 2000 Symbian Ltd.  All rights reserved.
//

#include "gdploop.h"
#include <ImplementationProxy.h>
#include <ecom.h>

// game datagram protocol - loopback

CGdpLoopback::CGdpLoopback()
	{
	}

CGdpLoopback::~CGdpLoopback()
	{
	delete iBuffer;
	delete iAsyncSendComplete;
	delete iAsyncInformHandler;
	REComSession::DestroyedImplementation(iDtor_ID_Key);
	}

void CGdpLoopback::OpenL(MGdpPacketHandler* aHandler) // start up, and set handler for packets received
	{
	iHandler=aHandler;
	iAsyncSendComplete = new (ELeave) CAsyncCallBack(TCallBack(DelayedSendComplete, this), EPriorityLow);
	iAsyncInformHandler = new (ELeave) CAsyncCallBack(TCallBack(DelayedInformHandler, this), EPriorityLow);	
	}

void CGdpLoopback::SendL(const TDesC8& /*aToAddress*/, const TDesC8& aData) // send packet
	{
	delete iBuffer;
	iBuffer = NULL;
	iBuffer = aData.AllocL();
	iAsyncSendComplete->CallBack();
	}

TInt CGdpLoopback::ReceiveAll() // do a pull if necessary
	{
	return KErrNone;
	}

TInt CGdpLoopback::GetMaxPacketLength() const
	{
	return KMaxTInt;
	}

TInt CGdpLoopback::IsNetworked() const
	{
	return EFalse;
	}
	
TInt CGdpLoopback::DelayedSendComplete(TAny* aObject)
	{
	((CGdpLoopback*)aObject)->DoSendComplete(); 
	return KErrNone;
	}
	
void CGdpLoopback::DoSendComplete()
	{
	iHandler->SendComplete(KErrNone);
	iAsyncInformHandler->CallBack();
	}


TInt CGdpLoopback::DelayedInformHandler(TAny* aObject)
	{
	((CGdpLoopback*)aObject)->DoInformHandler(); 
	return KErrNone;
	}
	
void CGdpLoopback::DoInformHandler()
	{
	_LIT8(KNullAddress,"");
	iHandler->GdpHandleL(KNullAddress, *iBuffer); 
	}


CGdpSession* CGdpLoopback::NewL()
	{
	return new (ELeave) CGdpLoopback();
	}

// Define the interface UIDs
const TImplementationProxy ImplementationTable[] =
    {
    {{0x101f8b53}, CGdpLoopback::NewL},
    };

EXPORT_C const TImplementationProxy* ImplementationGroupProxy(TInt& aTableCount)
    {
    aTableCount = sizeof(ImplementationTable) / sizeof(TImplementationProxy);

    return ImplementationTable;
    }

TInt E32Dll(TDllReason)
	{
	return KErrNone;
	}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -