// Copyright (c) 2003-2010 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 <commdbconnpref.h>#include <es_sock.h>#include "CConnectionMonitor.h"#include "chttpnetworkconnectioninfo.h"CConnectionMonitor* CConnectionMonitor::NewL(CHttpNetworkConnection* aNetworkConn ) { CConnectionMonitor* self = NewLC( aNetworkConn ); CleanupStack::Pop( self ); return self; }CConnectionMonitor* CConnectionMonitor::NewLC( CHttpNetworkConnection* aNetworkConn ) { CConnectionMonitor* self = new (ELeave) CConnectionMonitor( aNetworkConn ); CleanupStack::PushL( self ); self->ConstructL(); return self; }CConnectionMonitor::CConnectionMonitor( CHttpNetworkConnection* aNetworkConnInfo ): CActive(CActive::EPriorityStandard) { iNetworkConnInfo = aNetworkConnInfo; CActiveScheduler::Add(this); }CConnectionMonitor::~CConnectionMonitor() { Cancel(); }RConnection CConnectionMonitor::Connection() { return iNetworkConnInfo->Connection(); }void CConnectionMonitor::ConstructL() { iNetworkConnInfo->Connection().ProgressNotification(iProgress, iStatus); SetActive(); }void CConnectionMonitor::DoCancel() { iNetworkConnInfo->Connection().CancelProgressNotification(); }void CConnectionMonitor::RunL() { switch ( iProgress().iStage ) { // Connection closed case KConnectionClosed: case KLinkLayerClosed: if (iNetworkConnInfo) { iNetworkConnInfo->HandleConnectionEvent( iProgress().iStage ); } break; case KConnectionUninitialised: break; case KStartingSelection: break; case KFinishedSelection: if (iProgress().iError == KErrNone) { // The user successfully selected an IAP to be used } else { // The user pressed e.g. "Cancel" and did not select an IAP } break; case KConnectionFailure: break; // Prepearing connection (e.g. dialing) case KPsdStartingConfiguration: case KPsdFinishedConfiguration: case KCsdFinishedDialling: case KCsdScanningScript: case KCsdGettingLoginInfo: case KCsdGotLoginInfo: break; // Creating connection (e.g. GPRS activation) case KCsdStartingConnect: case KCsdFinishedConnect: break; // Starting log in case KCsdStartingLogIn: break; // Finished login case KCsdFinishedLogIn: break; // Connection open case KConnectionOpen: case KLinkLayerOpen: break; // Connection blocked or suspended case KDataTransferTemporarilyBlocked: break; // Hangup or GRPS deactivation case KConnectionStartingClose: break; // Unhandled state default: break; } Connection().ProgressNotification(iProgress, iStatus); SetActive(); }