diff -r 9f5ae1728557 -r db3f5fa34ec7 messagingfw/wappushfw/pushwatcher/src/ConnMan.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/messagingfw/wappushfw/pushwatcher/src/ConnMan.cpp Wed Nov 03 22:41:46 2010 +0530 @@ -0,0 +1,150 @@ +// Copyright (c) 2000-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: +// + +#include +#include +#include "ConnMan.h" + +// Comment out the following define to use PPP - crashes program in WINS if +// either RAS is not set up or theres no means of connecting to a phone! + +#define __USE_REAL_PPP_CONNECTION + +/** + * Factory construction method + * Use this method to allocate and construct a new CConnectionManager object + * @param aLog + * in: a interface for run-time logging + * @return CConnectionManager* - pointer to newly instantiated object + */ +CConnectionManager* CConnectionManager::NewL(MWapPushLog& aLog) + { + CConnectionManager* self = new (ELeave) CConnectionManager(aLog); + CleanupStack::PushL(self); + self->ConstructL(); + CleanupStack::Pop(); //self + return self; + } + + +/** + * Constructor + * @param aLog a interface for run-time logging + */ +CConnectionManager::CConnectionManager(MWapPushLog& aLog) : + CActive(CActive::EPriorityStandard), + iLog(aLog), + iConnectionExists(EFalse) + { + } + +/** + * Destructor. Deletes the queue of CO Watchers, and + * closes the PPP connection. + */ +CConnectionManager::~CConnectionManager() + { + __LOG_DEBUG("CConnectionManager destructor called"); + + Cancel(); + delete iCLUnsecWatcher; + delete iCLSecureWatcher; + } + +/** + * Secondary constructor for the connection manager. + * Creates connectionless watchers (unsecure & secure). + */ +void CConnectionManager::ConstructL() + { + __LOG_DEBUG("CConnectionManager::NewL called"); + + CActiveScheduler::Add(this); + + // Create and start CL watchers + iCLUnsecWatcher = CCLUnsecureWatcher::NewL(iLog,*this); + TRAPD(error, iCLSecureWatcher = CCLSecureWatcher::NewL(iLog, *this)); + + // Secure Watcher should not leave if it is not supported in Wap Stack + // as we want push watcher to start. + if (error != KErrNotSupported) + { + User::LeaveIfError(error); + } + } + + +/** + * The Connection Manager is an Active Object. It is managing other AO's. However, + * it is not waiting for an event to complete. RunL() should never get called. + * + */ +void CConnectionManager::RunL() + { + __ASSERT_DEBUG(0, User::Invariant()); + User::Panic(_L("WapPush Connection Manager"), KErrNotSupported); + } + + +/** + * If RunL() leaves, this function gets called to handle the leave. + * @param TInt aError + * in: errror code for the event which generated the leave + * @return TInt error code for the function + */ +TInt CConnectionManager::RunError(TInt aError) + { + User::Panic(_L("Untrapped RunError"),aError); + return(KErrNone); + } + + +/** + * Cancel any active aynchronous request this object has made. + */ +void CConnectionManager::DoCancel() + { + iCLUnsecWatcher->Cancel(); + iCLSecureWatcher->Cancel(); + } + + +/** + * Request that a new connection-orientated connection is created. + * This will be called by the SIA content type handler, passing in + * a connection point + * @param TPushConnPoint aConnPoint + * in: structur containing connection point information + */ +void CConnectionManager::CMOpenConnectionL(TPushConnPoint& /*aConnPoint*/) + { + __LOG_DEBUG("CConnectionManager: CMOpenCOConnectionL called") + // Do nothing as we do not support CO Push + + } + +/** + * Signal that the connection-orientated watcher has completed + * Remove the watcher from the list. + * If there are no more CO watchers, close PPP connection + * @param aCOWatcher completed watcher + * @param aError completion error code + */ +void CConnectionManager::CMWatcherComplete(CCOWatcherBase& /*aCOWatcher*/, TInt /*aError*/) + { + __LOG_DEBUG("ConnMan: CMWatcherComplete"); + } + +