--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/supl/locationsuplfw/gateway/src/epos_csuplsessionmanager.cpp Tue Feb 02 01:06:48 2010 +0200
@@ -0,0 +1,469 @@
+/*
+* Copyright (c) 2005-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: Session manager related routines
+*
+*/
+
+
+
+// INCLUDE FILES
+#include <e32base.h>
+#include <ecom/ecom.h>
+#include <flogger.h>
+#include "epos_csuplprotocolmanagerbase.h"
+#include "epos_msuplpacketnotifier.h"
+#include "epos_csuplcommunicationmanager.h"
+#include "epos_suplterminalqop.h"
+
+#include "epos_csuplsessionbase.h"
+#include "epos_sessionmanagerlogging.h"
+#include "epos_csuplsessionmanager.h"
+#include "epos_csuplglobal.h"
+
+//#ifdef _DEBUG
+_LIT(KTraceFileName, "SUPL_GW::epos_csuplsessionmanager.cpp");
+//#endif
+//#define DEBUG
+
+// ================= MEMBER FUNCTIONS =======================
+
+// C++ default constructor can NOT contain any code, that
+// might leave.
+//
+CSuplSessionManager::CSuplSessionManager()
+ {
+ }
+
+// EPOC default constructor
+void CSuplSessionManager::ConstructL()
+ {
+ DEBUG_TRACE("CSuplSessionManager::ConstructL", __LINE__)
+ iCommMgr = CSuplCommunicationManager::NewL();
+ iCommMgr->Initialize();
+ iConnectError=KErrNone;
+ }
+
+// Two-phased constructor
+CSuplSessionManager* CSuplSessionManager::NewL()
+ {
+ DEBUG_TRACE("CSuplSessionManager::NewL", __LINE__)
+ CSuplSessionManager* self = new (ELeave) CSuplSessionManager;
+ CleanupStack::PushL(self);
+ self->ConstructL();
+ CleanupStack::Pop(self);
+ return self;
+ }
+
+// Destructor
+CSuplSessionManager::~CSuplSessionManager()
+ {
+ DEBUG_TRACE("CSuplSessionManager::~CSuplSessionManager", __LINE__)
+ if(iProtocolMgr)
+ delete iProtocolMgr;
+ delete iCommMgr;
+ delete iEcomWatcher;
+ REComSession::FinalClose();
+ }
+
+// ------------------------------------------------------------------
+// CSuplSessionManager::DestroySession
+// DestroySession calls the Destroy Session Method in Protocol Manager
+// (other items were commented in a header).
+// ------------------------------------------------------------------
+//
+TInt CSuplSessionManager::DestroySession(CSuplSessionBase* aSuplSession)
+ {
+ // Need to change this to RemoveSuplSessionL(CSuplSessionBase* aSuplSession,TSuplReqType aReqType) once this is
+ // changed in protocol manager
+ DEBUG_TRACE("CSuplSessionManager::DestroySession", __LINE__)
+ if(iProtocolMgr)
+ return iProtocolMgr->DestroySession(aSuplSession);
+ else
+ return KErrGeneral;
+ }
+
+// ---------------------------------------------------------
+// CSuplSessionManager::CreateNewSessionL
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+CSuplSessionBase* CSuplSessionManager::CreateNewSessionL(CSUPLProtocolManagerBase::TSuplReqType aReqType, TInt aIpcSessionId, RSuplTerminalSubSession::TSuplServiceType aSuplService)
+ {
+ DEBUG_TRACE("CSuplSessionManager::CreateNewSessionL", __LINE__)
+ if(iProtocolMgr)
+ {
+ CSuplSessionBase* suplSessn=NULL;
+ TInt err = KErrNone;
+ TRAP(err, suplSessn=iProtocolMgr->CreateNewSessionL(aReqType, aIpcSessionId, aSuplService));
+ if (err != KErrNone)
+ return NULL;
+ else
+ return suplSessn;
+ }
+ else
+ return NULL;
+ }
+
+// ---------------------------------------------------------
+// CSuplSessionManager::RunSuplSessionL
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CSuplSessionManager::RunSuplSessionL(
+ CSuplSessionBase* aSuplSessn, TRequestStatus& aStatus,
+ const TDesC& aHslpAddress, TBool aFallBack, TInt aSuplSETCaps, TInt aReqId, TBool aFirstReq
+ )
+ {
+ // Need to remove this once changes are made in protocol manager
+ // TSuplSETCapabilities setCaps;
+#ifdef DEBUG
+ TBuf<255> tempBuf;
+ tempBuf.Append(_L("Server name in gateway is : "));
+ tempBuf.Append(aHslpAddress);
+ TRACETEXT(tempBuf);
+ if (aFallBack)
+ {
+ tempBuf.Copy(_L("Fallback is set as TRUE."));
+ }
+ else
+ {
+ tempBuf.Copy(_L("Fallback is set as False"));
+ }
+
+ TRACETEXT(tempBuf);
+#endif
+
+ DEBUG_TRACE("CSuplSessionManager::RunSuplSessionL", __LINE__)
+ TInt err = KErrNone;
+ if(iProtocolMgr && aSuplSessn)
+ {
+ TRAP(err,iProtocolMgr->RunSessionL(aSuplSessn, aStatus, aHslpAddress, aFallBack, aFirstReq, aSuplSETCaps, aReqId);)
+ if(err!=KErrNone)
+ {
+ TRequestStatus *status = &aStatus;
+ User::RequestComplete(status,KErrNotReady);
+ }
+ }
+ else
+ {
+ TRequestStatus *status = &aStatus;
+ User::RequestComplete(status,KErrNotReady);
+ }
+ }
+
+// ---------------------------------------------------------
+// CSuplSessionManager::RunSuplSessionL
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CSuplSessionManager::RunSuplSessionL(
+ CSuplSessionBase* aSuplSessn, TRequestStatus& aStatus,
+ const TDesC& aHslpAddress, TBool aFallBack, TInt aSuplSETCaps, TInt aReqId,TSuplTerminalQop& aQop,
+ TBool aFirstReq
+ )
+ {
+ DEBUG_TRACE("CSuplSessionManager::RunSuplSessionL with Qop", __LINE__)
+#ifdef DEBUG
+ TBuf<255> tempBuf;
+ tempBuf.Append(_L("Server name in gateway is : "));
+ tempBuf.Append(aHslpAddress);
+ TRACETEXT(tempBuf);
+ if (aFallBack)
+ {
+ tempBuf.Copy(_L("Fallback is set as TRUE."));
+ }
+ else
+ {
+ tempBuf.Copy(_L("Fallback is set as False"));
+ }
+
+ TRACETEXT(tempBuf);
+#endif
+ TInt err = KErrNone;
+ if(iProtocolMgr && aSuplSessn)
+ {
+ TRAP(err,iProtocolMgr->RunSessionL(aSuplSessn, aStatus, aHslpAddress, aFallBack, aFirstReq, aSuplSETCaps,aQop, aReqId);)
+ if(err!=KErrNone)
+ {
+ TRequestStatus *status = &aStatus;
+ User::RequestComplete(status,KErrNotReady);
+ }
+ }
+ else
+ {
+ TRequestStatus *status = &aStatus;
+ User::RequestComplete(status,KErrNotReady);
+ }
+ }
+
+// ---------------------------------------------------------
+// CSuplSessionManager::ForwardMessageL
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CSuplSessionManager::ForwardMessageL(CSuplSessionBase* aSuplSessn,TRequestStatus& iStatus,HBufC8* clientBuf)
+ {
+ DEBUG_TRACE("CSuplSessionManager::ForwardMessageL", __LINE__)
+ TRequestStatus *status = &iStatus;
+
+ if (aSuplSessn == NULL || clientBuf == NULL)
+ User::RequestComplete(status,KErrGeneral);
+ else
+ if(iProtocolMgr)
+ iProtocolMgr->HandleSuplMessageL(aSuplSessn, iStatus,clientBuf);
+ }
+
+// ---------------------------------------------------------
+// CSuplSessionManager::CancelRunSession
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CSuplSessionManager::CancelRunSession(CSuplSessionBase *aSessn)
+ {
+ DEBUG_TRACE("CSuplSessionManager::CancelRunSession", __LINE__)
+ if(iProtocolMgr && aSessn)
+ iProtocolMgr->CancelRunSession(aSessn);
+ }
+
+// ---------------------------------------------------------
+// CSuplSessionManager::InitializeL
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CSuplSessionManager::InitializeL(
+ TUid uId,TRequestStatus& aStatus,
+ MSuplEcomEventObserver& aSuplEcomEventObserver
+ )
+ {
+ DEBUG_TRACE("CSuplSessionManager::InitializeL", __LINE__)
+
+ TRAPD(err,iProtocolMgr = CSUPLProtocolManagerBase::NewL(uId));
+ if(err!=KErrNone)
+ {
+ iConnectError=err;
+ TRequestStatus *status = &aStatus;
+ User::RequestComplete(status,err);
+ }
+ else
+ {
+ iCommMgr->SetPacketReceiver(iProtocolMgr);
+ TRAPD(err1,iProtocolMgr->InitializeL(iCommMgr,aStatus));
+ if(err1!=KErrNone)
+ iConnectError=err1;
+ }
+ iEcomWatcher = CSuplEcomEventWatcher::NewL(
+ aSuplEcomEventObserver,
+ KProtocolManagerInterfaceDefinitionUid,
+ uId);
+
+ iEcomWatcher->NotifyOnPlugInUnInstallation();
+ }
+
+// ---------------------------------------------------------
+// CSuplSessionManager::GetConnectError
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+TInt CSuplSessionManager::GetConnectError()
+ {
+ DEBUG_TRACE("CSuplSessionManager::GetConnectError", __LINE__)
+ return iConnectError;
+ }
+
+// ---------------------------------------------------------
+// CSuplSessionManager::CancelInitialize
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CSuplSessionManager::CancelInitialize()
+ {
+ if(iProtocolMgr)
+ {
+ iProtocolMgr->CancelInitialize();
+ }
+ }
+
+// ---------------------------------------------------------
+// CSuplSessionManager::ProtocolHUnloaded
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CSuplSessionManager::ProtocolHUnloaded()
+ {
+ DEBUG_TRACE("CSuplSessionManager::ProtocolHUnloaded", __LINE__)
+ delete iProtocolMgr;
+ iProtocolMgr = NULL;
+ }
+
+// ---------------------------------------------------------
+// CSuplSessionManager::DeInitialize
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CSuplSessionManager::DeInitialize(TRequestStatus& aStatus)
+ {
+ DEBUG_TRACE("CSuplSessionManager::DeInitialize", __LINE__)
+ if(iProtocolMgr)
+ {
+ iProtocolMgr->DeInitialize(aStatus);
+ }
+ }
+
+// ---------------------------------------------------------
+// CSuplSessionManager::CancelDeInitialize
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CSuplSessionManager::CancelDeInitialize()
+ {
+ DEBUG_TRACE("CSuplSessionManager::CancelDeInitialize", __LINE__)
+ if(iProtocolMgr)
+ {
+ iProtocolMgr->CancelDeInitialize();
+ }
+ }
+
+// ---------------------------------------------------------
+// CSuplSessionManager::GetSUPLMessageVersionL
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+TInt CSuplSessionManager::GetSUPLMessageVersionL(TInt& aMajorVersion, const TDesC8& aReceivedMessage)
+ {
+ return iProtocolMgr->GetSUPLMessageVersionL(aMajorVersion,aReceivedMessage);
+ }
+
+// ------------------------------------------------------------------
+// CSuplSessionManager::StartTriggerSessionL
+//
+// (other items were commented in a header).
+// ------------------------------------------------------------------
+//
+void CSuplSessionManager::StartTriggerSessionL(
+ CSuplSessionBase* aSuplSession,
+ TRequestStatus& aStatus,
+ TSuplTerminalPeriodicTrigger& aPTrigger,
+ const TDesC& aHslpAddress,
+ TBool aFallBack,
+ TInt aAllowedCapabilities,
+ TInt aRequestID
+ )
+ {
+ DEBUG_TRACE("CSuplSessionManager::StartTriggerSessionL with Periodic Trigger Request", __LINE__)
+
+#ifdef DEBUG
+ TBuf<255> tempBuf;
+ tempBuf.Append(_L("Server name in gateway is : "));
+ tempBuf.Append(aHslpAddress);
+ TRACETEXT(tempBuf);
+ if (aFallBack)
+ {
+ tempBuf.Copy(_L("Fallback is set as TRUE."));
+ }
+ else
+ {
+ tempBuf.Copy(_L("Fallback is set as False"));
+ }
+
+ TRACETEXT(tempBuf);
+#endif
+
+ TInt err = KErrNone;
+ if(iProtocolMgr && aSuplSession)
+ {
+ TRAP(err,iProtocolMgr->RunSuplTriggerSessionL(
+ aSuplSession,
+ aStatus,
+ aPTrigger,
+ aHslpAddress,
+ aFallBack,
+ aAllowedCapabilities,
+ aRequestID );
+ )
+
+ if(err!=KErrNone)
+ {
+ TRequestStatus *status = &aStatus;
+ User::RequestComplete(status,KErrNotReady);
+ }
+ }
+ else
+ {
+ TRequestStatus *status = &aStatus;
+ User::RequestComplete(status,KErrNotReady);
+ }
+ }
+
+// ---------------------------------------------------------
+// CSuplSessionManager::CancelTriggerringSession
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CSuplSessionManager::CancelTriggerringSession(CSuplSessionBase *aSessn)
+ {
+ DEBUG_TRACE("CSuplSessionManager::CancelTriggerringSession", __LINE__)
+ if(iProtocolMgr && aSessn)
+ iProtocolMgr->CancelSuplTriggerSession(aSessn);
+ }
+
+// ---------------------------------------------------------
+// CSuplSessionManager::NotifyTriggerFired
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CSuplSessionManager::NotifyTriggerFired(
+ CSuplSessionBase *aSessn,
+ TRequestStatus& aStatus,
+ TSuplTriggerFireInfo& aFireInfo
+ )
+ {
+ DEBUG_TRACE("CSuplSessionManager::StartTriggerSessionL with Periodic Trigger Request", __LINE__)
+
+ TInt err = KErrNone;
+ if(iProtocolMgr && aSessn)
+ {
+ TRAP(err,iProtocolMgr->NotifyTriggerFiredL(
+ aSessn,
+ aStatus,
+ aFireInfo);
+ )
+
+ if(err!=KErrNone)
+ {
+ TRequestStatus *status = &aStatus;
+ User::RequestComplete(status,err);
+ }
+ }
+ else
+ {
+ TRequestStatus *status = &aStatus;
+ User::RequestComplete(status,KErrNotReady);
+ }
+ }
+
+// End of File