--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/datacommsserver/networkcontroller/src/CNetConRequestBase.cpp Thu Dec 17 09:22:25 2009 +0200
@@ -0,0 +1,262 @@
+// Copyright (c) 2003-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:
+//
+
+/**
+ @file CNetConRequestBase.cpp
+*/
+
+#include "CNetworkController.h"
+#include "CNetConRequestBase.h"
+#include "NetConPanic.h"
+#include "NetConLog.h"
+
+#include "CNetConDlgProcessor.h"
+
+CNetConRequestBase::~CNetConRequestBase()
+/**
+Destructor
+*/
+ {
+ if (iDatabase)
+ {
+ iDatabase->CancelRequestNotificationOfServiceChange(ipServiceChangeObserver);
+ delete iDatabase;
+ }
+ delete iDialogPrc;
+ }
+
+CNetConRequestBase::CNetConRequestBase(MNetConEnv* aController, MNetworkControllerObserver* aObserver, CStoreableOverrideSettings* aOverrides)
+: iController(aController), iObserver(aObserver), iOverrides(aOverrides)
+/**
+Constructor
+
+@param aDatabase, allow the requests and bearers access to the database.
+@param aDialogPrc, allow the requests access to the dialog processor.
+@param aController, For upcalls from the requests.
+@param aObserver, define the reverse API - from a Network Controller towards NIFMAN
+@param aOverrides, store and retrieve override sets to and from both streams and buffers.
+*/
+ { }
+
+void CNetConRequestBase::ConstructL()
+ {
+ iDatabase = iController->NewDatabaseL();
+ __ASSERT_DEBUG(iDatabase, NetConPanic(NetworkController::ETelBearerBadState));
+ }
+
+void CNetConRequestBase::CancelRequest()
+/**
+Cancel this request
+*/
+ {
+ // cancel any outstanding dialog processor activity
+ if (iDialogPrc)
+ {
+ iDialogPrc->CancelEverything();
+ }
+
+ // cancel any outstanding bearer availability check
+ iController->CancelBearerAvailabilityCheck();
+
+ // Cancel Service Change Notification
+ iDatabase->CancelRequestNotificationOfServiceChange(ipServiceChangeObserver);
+ }
+
+/**
+accessors
+send for customer input
+
+@return iObserver, a reverse API - from a Network Controller towards NIFMAN
+*/
+MNetworkControllerObserver* CNetConRequestBase::Observer() const
+ {
+ return iObserver;
+ }
+
+/**
+accessors
+Network controller connection overrides.
+send for customer input
+
+@return iOverrides, override sets to and from both streams and buffers.
+*/
+CStoreableOverrideSettings* CNetConRequestBase::Overrides() const
+ {
+ return iOverrides;
+ }
+
+TBool CNetConRequestBase::SelectedServiceAvailable(TUint32 aAvailableBearerSet) const
+/**
+The function checks whether the Selected Service is Available
+
+@param aAvailableBearerSet the set of available bearers
+@return ETrue if the selected service is available otherwise EFalse
+*/
+ {
+
+ TBool available(EFalse);
+
+ if (iSettings.iServiceType == TPtrC(DIAL_OUT_ISP) || iSettings.iServiceType == TPtrC(DIAL_IN_ISP))
+ {
+ // user requested a CSD type connection but is the bearer available?
+ available = (aAvailableBearerSet & KCommDbBearerCSD);
+ }
+ if (iSettings.iServiceType == TPtrC(LAN_SERVICE))
+ {
+ // user requested a CDMA type connection but is the bearer available?
+ available = (aAvailableBearerSet & KCommDbBearerLAN);
+ }
+ if (iSettings.iServiceType == TPtrC(VPN_SERVICE))
+ {
+ // user requested a Vpn service...
+ available = (aAvailableBearerSet & KCommDbBearerVirtual );
+ }
+
+ if (available)
+ {
+ LOG( NetConLog::Printf(_L("\tSelected service is available")); )
+ }
+ else
+ {
+ LOG( NetConLog::Printf(_L("\tSelected service is not available")); )
+ }
+
+ return available;
+ }
+
+void CNetConRequestBase::SelectConnection(const TConnectionPrefs& aPrefs)
+/**
+Display a dialog to the user asking them to select an IAP to connect to
+
+MNetConDialogProcAccess Interface
+
+@param aObserver the object to receive notification when the dialog box completes
+@param aPrefs the connection preferences used to select this IAP
+*/
+ {
+ const TInt err = ConstructDialogProcessor();
+ if( KErrNone != err )
+ {
+ TConnectionSettings settings;
+ MDPOSelectComplete(err, settings);
+ return;
+ }
+
+ iDialogPrc->SelectConnection(*this, aPrefs);
+ }
+
+void CNetConRequestBase::SelectConnection(const TConnectionPrefs& aPrefs, TInt aLastError)
+/**
+Display a dialog to the user asking them to select an IAP to connect to
+
+@param aObserver the object to receive notification when the dialog box completes
+@param aPrefs the connection preferences used to select this IAP
+@param aLastError if this is not the 1st connection attempt this is the error of the last attempt
+*/
+ {
+ const TInt err = ConstructDialogProcessor();
+ if( KErrNone != err )
+ {
+ TConnectionSettings settings;
+ MDPOSelectComplete(err, settings);
+ return;
+ }
+
+ iDialogPrc->SelectConnection(*this, aPrefs, aLastError);
+ }
+
+void CNetConRequestBase::SelectModemAndLocation()
+/**
+Display a dialog to the user asking the user to select a modem and location entry from CommDb
+
+@param aObserver the object to receive notification when the dialog box completes
+*/
+ {
+ const TInt err = ConstructDialogProcessor();
+ if( KErrNone != err )
+ {
+ TConnectionSettings settings;
+ MDPOSelectModemAndLocationComplete(err, settings);
+ return;
+ }
+
+ iDialogPrc->SelectModemAndLocation(*this);
+ }
+
+void CNetConRequestBase::WarnNewConnection(const TConnectionPrefs& aPrefs, const TDesC* aNewIapName, const TIspConnectionNames* aNewConnectionNames, TInt aLastError)
+/**
+Display a dialog to the user warning that a new connection is about to be attempted to the specified IAP
+
+@param aObserver the object to receive notification when the dialog box completes
+@param aPrefs the connection preferences used to select this IAP
+@param aNewIapName the name of the IAP used for the connection.
+@param aNewConnectionNames this parameter is no-longer used.
+@param aLastError if this is not the 1st connection attempt this is the error of the last attempt
+*/
+ {
+ const TInt err = ConstructDialogProcessor();
+ if( KErrNone != err )
+ {
+ MDPOWarnComplete(err, EFalse);
+ return;
+ }
+
+ iDialogPrc->WarnNewConnection(*this, aPrefs, aNewIapName, aNewConnectionNames, aLastError);
+ }
+
+void CNetConRequestBase::Reconnect()
+/**
+Display a dialog to the user asking whether to reconnect a failed connection
+
+@param aObserver the object to receive notification when the dialog box completes
+*/
+ {
+ const TInt err = ConstructDialogProcessor();
+ if( KErrNone != err )
+ {
+ MDPOReconnectComplete(err);
+ return;
+ }
+
+ iDialogPrc->Reconnect(*this);
+ }
+
+
+/**
+Ensure the request dialog processor is correctly constructed. Construct it if not.
+
+@return KErrNone on success, and error code otherwise
+*/
+TInt CNetConRequestBase::ConstructDialogProcessor()
+ {
+ if (!iDialogPrc)
+ {
+ // construct dialog processor
+ TRAPD( err, iDialogPrc = iController->NewDialogProcessorL() );
+ return err;
+ }
+ __ASSERT_DEBUG(iDialogPrc, NetConPanic(NetworkController::ETelBearerBadState));
+ return KErrNone;
+ }
+
+/**
+Return the Request's internal database access pointer
+*/
+CCommsDbAccess* CNetConRequestBase::DbAccess()
+ {
+ __ASSERT_DEBUG(iDatabase, NetConPanic(NetworkController::ETelBearerBadState));
+ return iDatabase;
+ }
+