Got rid of some trivial warnings (nested comments and tokens after #endif).
// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
// All rights reserved.
// This component and the accompanying materials are made available
// under the terms of "Eclipse Public License v1.0"
// which accompanies this distribution, and is available
// at the URL "http://www.eclipse.org/legal/epl-v10.html".
//
// Initial Contributors:
// Nokia Corporation - initial contribution.
//
// Contributors:
//
// Description: Extra test interface to the NetProtocolProxy. It allows the test
// to be asynchronous and continue to run other events whilst waiting for a message
// from the NG. The test is notified when a message arrives (or if it times out)
//
//
#include "clbstestngmessagehandler.h"
/** 2nd Phase constructor
*/
CLbsTestNgMessageHandler* CLbsTestNgMessageHandler::NewL(MLbsTestNgMessageHandler& aObserver, TInt aPmId)
{
CLbsTestNgMessageHandler* self = new (ELeave) CLbsTestNgMessageHandler(aObserver, aPmId);
CleanupStack::PushL(self);
self->ConstructL();
CleanupStack::Pop(self);
return self;
}
CLbsTestNgMessageHandler::~CLbsTestNgMessageHandler()
{
Cancel();
iRequestTimeout.Close();
delete iProxy;
}
void CLbsTestNgMessageHandler::ConstructL()
{
iProxy = CNetProtocolProxy::NewL(iPmId);
}
CLbsTestNgMessageHandler::CLbsTestNgMessageHandler(MLbsTestNgMessageHandler& aObserver, TInt aPmId)
:CActive(CActive::EPriorityStandard),
iObserver(aObserver),
iPmId(aPmId)
{
CActiveScheduler::Add(this);
}
/* AO RunL method, called when either:
* - Message received from the NG
* - Timeout occurs (-1000)
* The message type is returned back to the test. It then decides whether it should set itself
* listening again for another message
*/
void CLbsTestNgMessageHandler::RunL()
{
//Callback the test, to let it know a message has been received. The iStatus contains the ID of the message received
iObserver.OnHandleNGMessage(iPmId, iStatus.Int());
//Check to see whether any requests were made when we were busy completing this request
if((iRequestTimeout.Count() > 0) && (iStatus.Int() != -1000))
{
//Set us off listening again, with the stored timeout value
WaitForResponseL(iRequestTimeout[0]);
//This request has been satisfied, remove the timeout value from the array
iRequestTimeout.Remove(0);
}
}
void CLbsTestNgMessageHandler::DoCancel()
{
//Cancel waiting for a message
iProxy->CancelWait();
}
TInt CLbsTestNgMessageHandler::RunError(TInt /*aError*/)
{
return KErrNone;
}
/* Sets the NetProtocolProxy off listening for a new message from the NG. This function
* does not block, but asynchronously waits for a new message to arrive. It can be called
* even when already active, it will remember that a request was made and will re-request
* as soon as the first request finishes.
* NOTE: If this is called when we are already active, the timeout is not started straightway,
* but is stored. As such, the timeout value will be larger than specified.
*
* @param aTimeOut Specifies the time that should be spent waiting for the message to arrive
*/
void CLbsTestNgMessageHandler::WaitForResponseL(TInt aTimeOut)
{
if(!IsActive())
{
iProxy->WaitForResponseL(aTimeOut, iStatus);
SetActive();
}
else
{
//Remember that a sequence requested we listen for a message when we were busy
iRequestTimeout.Append(aTimeOut);
}
}
/* Gives direct access to the NetProtocolProxy which allows the test to directly send messages
* and access elements of the message. It should not be used for waiting for a message (use
* WaitForResponseL from this class)
*/
CNetProtocolProxy* CLbsTestNgMessageHandler::ProtocolProxy()
{
return iProxy;
}
/** Returns the PM ID of the PM that this Network proxy is talking to.
*/
TInt CLbsTestNgMessageHandler::GetPmId()
{
return iPmId;
}