diff -r 000000000000 -r 667063e416a2 supl/locationomasuplprotocolhandler/protocolhandlerver1/src/epos_comasuplposrequestor.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/supl/locationomasuplprotocolhandler/protocolhandlerver1/src/epos_comasuplposrequestor.cpp Tue Feb 02 01:06:48 2010 +0200 @@ -0,0 +1,342 @@ +/* +* Copyright (c) 2002-2005 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: Class for doing asynchronous service for POS +* +*/ + + + +#include +#include +#include +#include +#include + +#include "epos_comasuplstate.h" +#include "epos_comasuplposrequestor.h" +#include "epos_comasuplstate.h" +#include "epos_comasupltrace.h" + +_LIT(KTraceFileName,"SUPL_OMA_PH::EPos_COMASuplPOSRequestor.cpp"); + +// ============================ MEMBER FUNCTIONS =============================== + +// ----------------------------------------------------------------------------- +// COMASuplPOSRequestor::COMASuplAOOperation +// C++ constructor can NOT contain any code, that might leave. +// ----------------------------------------------------------------------------- +// +COMASuplPOSRequestor::COMASuplPOSRequestor(MOMASuplMsgStateObserver* aObserver, //MOMASuplPOSObserver* aObserver, + COMASuplPosSessionBase* aPOSSession): + CActive( EPriorityStandard), + iObserver(aObserver),iPOSSession(aPOSSession) + { + + } + +// ----------------------------------------------------------------------------- +// COMASuplPOSRequestor::ConstructL +// Symbian 2nd phase constructor can leave. +// ----------------------------------------------------------------------------- +// +void COMASuplPOSRequestor::ConstructL() + { + iTrace = COMASuplTrace::NewL(); + iTrace->Trace(_L("COMASuplPOSRequestor::ConstructL"), KTraceFileName, __LINE__); + CActiveScheduler::Add( this ); + iPOSSessionRequestType = EPOS_IDEAL; + } + +// ----------------------------------------------------------------------------- +// COMASuplPOSRequestor::CreateListL +// ----------------------------------------------------------------------------- +// +void COMASuplPOSRequestor::CreateListL() + { + DestroyList(); //Safe side + iTrace->Trace(_L("COMASuplPOSRequestor::CreateListL"), KTraceFileName, __LINE__); + iOMASuplInfoRequestList = COMASuplInfoRequestList::NewL(); + } + +// ----------------------------------------------------------------------------- +// COMASuplPOSRequestor::DestroyList +// ----------------------------------------------------------------------------- +// +void COMASuplPOSRequestor::DestroyList() + { + iTrace->Trace(_L("COMASuplPOSRequestor::DestroyList"), KTraceFileName, __LINE__); + if(iOMASuplInfoRequestList) + { + delete iOMASuplInfoRequestList; + iOMASuplInfoRequestList = NULL; + + } + } + +// ----------------------------------------------------------------------------- +// COMASuplPOSRequestor::NewL +// Two-phased constructor. +// ----------------------------------------------------------------------------- +// +COMASuplPOSRequestor* COMASuplPOSRequestor::NewL(MOMASuplMsgStateObserver* aObserver,COMASuplPosSessionBase* aPOSSession) + { + COMASuplPOSRequestor* self = new ( ELeave ) COMASuplPOSRequestor(aObserver,aPOSSession); + CleanupStack::PushL( self ); + self->ConstructL(); + CleanupStack::Pop(self); + return self; + } + +// ----------------------------------------------------------------------------- +// COMASuplPOSRequestor::~COMASuplPOSRequestor +// ----------------------------------------------------------------------------- +// +COMASuplPOSRequestor::~COMASuplPOSRequestor() + { + Cancel(); + DestroyList(); + + if(iTrace) + iTrace->Trace(_L("COMASuplPOSRequestor::~COMASuplPOSRequestor"), KTraceFileName, __LINE__); + + delete iTrace; + } + +// ----------------------------------------------------------------------------- +// COMASuplPOSRequestor::RunL +// ----------------------------------------------------------------------------- +// +void COMASuplPOSRequestor::RunL() +{ + if(!iPOSSession || !iObserver ) + return; + + //if(iStatus == KErrNone) + { + switch(iPOSSessionRequestType) + { + case EPOS_GET_POSITION: + { + iPOSSessionRequestType = EPOS_IDEAL; + iTrace->Trace(_L("Request Completed for EPOS_GET_POSITION..."), KTraceFileName, __LINE__); + iObserver->GetPositionComplete(iStatus.Int()); + break; + } + case EPOS_GET_SUPL_INFO: + case EPOS_SESSION_INITIALIZE: + { + iPOSSessionRequestType = EPOS_IDEAL; + iTrace->Trace(_L("Request Completed for POS_GET_SUPL_INFO / POS_SESSION_INITIALIZE..."), KTraceFileName, __LINE__); + iObserver->OperationCompleteL(iStatus.Int()); + break; + } + case EPOS_IDEAL: + default: + { + break; + } + } + } +} +// ----------------------------------------------------------------------------- +// COMASuplPOSRequestor::SetObserver +// ----------------------------------------------------------------------------- +// +void COMASuplPOSRequestor::SetObserver(MOMASuplMsgStateObserver* aObserver) + { + iObserver = aObserver; + } + +// ----------------------------------------------------------------------------- +// COMASuplPOSRequestor::RunError +// ----------------------------------------------------------------------------- +// +TInt COMASuplPOSRequestor::RunError(TInt /* aError */) + { + return KErrNone; + } + +// ----------------------------------------------------------------------------- +// COMASuplPOSRequestor::DoCancel +// ----------------------------------------------------------------------------- +// +void COMASuplPOSRequestor::DoCancel() + { + CancelRequest(); + } + +// ----------------------------------------------------------------------------- +// COMASuplPOSRequestor::GetSuplInfoL +// ----------------------------------------------------------------------------- +// +TInt COMASuplPOSRequestor::GetSuplInfoL() + { + if(iPOSSession) + { + iTrace->Trace(_L("COMASuplPOSRequestor::GetSuplInfoL"), KTraceFileName, __LINE__); + iPOSSessionRequestType = EPOS_GET_SUPL_INFO; + TRAPD(err,iPOSSession->GetSuplInfoL(iOMASuplInfoRequestList,iStatus)); + if(err != KErrNone) + { + iTrace->Trace(_L("COMASuplPOSRequestor::GetSuplInfoL Leaved "), KTraceFileName, __LINE__); + return KErrCompletion; + } + else + { + iTrace->Trace(_L("COMASuplPOSRequestor::GetSuplInfoL returned successfully "), KTraceFileName, __LINE__); + SetActive(); + return KErrNone; + } + } + else + { + return KErrNotSupported; + } + + } + +// ----------------------------------------------------------------------------- +// COMASuplPOSRequestor::GetSuplInfoL +// ----------------------------------------------------------------------------- +// +TInt COMASuplPOSRequestor::GetPositionL(COMASuplPosition* aPosition) + { + + if(iPOSSession) + { + iTrace->Trace(_L("COMASuplPOSRequestor::GetPositionL"), KTraceFileName, __LINE__); + iPOSSessionRequestType = EPOS_GET_POSITION; + TRAPD(err,iPOSSession->GetPositionL(iStatus,aPosition)); + if(err != KErrNone) + { + iTrace->Trace(_L("COMASuplPOSRequestor::GetPositionL Leaved "), KTraceFileName, __LINE__); + return KErrCompletion; + } + else + { + SetActive(); + return KErrNone; + } + } + else + { + return KErrNotSupported; + } + } + +// ----------------------------------------------------------------------------- +// COMASuplPOSRequestor::CancelRequest +// Cancels any outstanding request +// ----------------------------------------------------------------------------- +// +void COMASuplPOSRequestor::CancelRequest() +{ + + if(!iPOSSession) + { + return; + } + + switch(iPOSSessionRequestType) + { + case EPOS_GET_POSITION: + { + iTrace->Trace(_L("COMASuplPOSRequestor::CancelRequest EPOS_GET_POSITION "), KTraceFileName, __LINE__); + iPOSSession->CancelGetPosition(); + break; + } + case EPOS_GET_SUPL_INFO: + { + iTrace->Trace(_L("COMASuplPOSRequestor::CancelRequest EPOS_GET_SUPL_INFO "), KTraceFileName, __LINE__); + iPOSSession->CancelSuplInfoRequest(); + break; + } + case EPOS_SESSION_INITIALIZE: + { + iTrace->Trace(_L("COMASuplPOSRequestor::CancelRequest EPOS_SESSION_INITIALIZE "), KTraceFileName, __LINE__); + iPOSSession->CancelInitialize(); + break; + } + case EPOS_IDEAL: + default: + { + break; + } + } +} + +// ----------------------------------------------------------------------------- +// COMASuplPOSRequestor::GetOMASuplInfoRequestList +// returns SUPLInfoRequest List +// ----------------------------------------------------------------------------- +// +COMASuplInfoRequestList* COMASuplPOSRequestor::GetOMASuplInfoRequestList() + { + return iOMASuplInfoRequestList; + } + +// ----------------------------------------------------------------------------- +// COMASuplPOSRequestor::AppendInfoRequest +// Append InfoRequest List in COMASuplInfoRequestList +// ----------------------------------------------------------------------------- +// +void COMASuplPOSRequestor::AppendInfoRequest(COMASuplInfoRequest* aSuplInfoRequest) + { + iOMASuplInfoRequestList->Append(aSuplInfoRequest); + } + +// ----------------------------------------------------------------------------- +// COMASuplPOSRequestor::InitilizePOSSessionL +// +// ----------------------------------------------------------------------------- +// +TInt COMASuplPOSRequestor::InitilizePOSSessionL(TInt aRequestId) + { + Cancel(); + iPOSSessionRequestType = EPOS_SESSION_INITIALIZE; + TRAPD(err,iPOSSession->InitializeL(aRequestId,iStatus)); + if(err != KErrNone) + { + iTrace->Trace(_L("COMASuplPOSRequestor::InitilizePOSSessionL "), KTraceFileName, __LINE__); + return err; + } + else + { + SetActive(); + return KErrNone; + } + } + +// ----------------------------------------------------------------------------- +// COMASuplPOSRequestor::SetPosMethodAndAllowedCapabilities +// +// ----------------------------------------------------------------------------- +// +void COMASuplPOSRequestor::SetPosMethodAndAllowedCapabilities(TOMASuplAllowedCapabilities& aPOSAllowedCapabilities, + COMASuplPosSessionBase::TOMASuplPositioningMethod aPOSPositioningMethod) + { + iPOSSession->SetPosMethodAndAllowedCapabilities(aPOSAllowedCapabilities,aPOSPositioningMethod); + } +// ----------------------------------------------------------------------------- +// COMASuplPOSRequestor::SetSLPAddressUsed +// +// ----------------------------------------------------------------------------- +// +void COMASuplPOSRequestor::SetSLPAddressUsed(const TDesC& aServerAddress) + { + iPOSSession->SetSLPAddressUsed(aServerAddress); + } +// End of File + +