gdploop.cpp

来自「Symbian C++ scmp.zip」· C++ 代码 · 共 102 行

CPP
102
字号
// 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 + =
减小字号Ctrl + -
显示快捷键?