datacommsserver/networkcontroller/src/CReconnectRequest.cpp
changeset 0 dfb7c4ff071f
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/datacommsserver/networkcontroller/src/CReconnectRequest.cpp	Thu Dec 17 09:22:25 2009 +0200
@@ -0,0 +1,158 @@
+// 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 CReconnectRequest.cpp
+*/
+
+#include "CReconnectRequest.h"
+#include <comms-infras/nifagt.h>
+#include "CNetworkController.h"
+#include "NetConPanic.h"
+#include "NetConLog.h"
+
+CReconnectRequest* CReconnectRequest::NewL(MNetConEnv* aController, MNetworkControllerObserver* aObserver, CNifAgentBase* aAgent, CStoreableOverrideSettings* aOverrides)
+/**
+static newL function allocates memory to an object of class CReconnectRequest
+
+@param aController, Used to inform the CNetworkController of state changes such as a request or a bearer availability check completing.
+@param aObserver, request the selection
+@param aAgent, the agent who's connection failed
+@param aOverrides, store and retrieve override sets to and from both streams and buffers.
+@return a  pointer to class CReconnectRequest
+@exception leaves if memory allocation fails.
+*/
+	{
+	CReconnectRequest* self = new(ELeave) CReconnectRequest(aController, aObserver, aAgent, aOverrides);
+	CleanupStack::PushL(self);
+	self->ConstructL();
+	CleanupStack::Pop(); // self
+	return self;
+	}
+
+CReconnectRequest::CReconnectRequest(MNetConEnv* aController, MNetworkControllerObserver* aObserver, CNifAgentBase* aAgent, CStoreableOverrideSettings* aOverrides)
+: CNetConRequestBase(aController, aObserver, aOverrides), iAgent(aAgent)
+/**
+Constructor
+*/
+	{ }
+
+void CReconnectRequest::ConstructL()
+	{
+	CNetConRequestBase::ConstructL();
+	}
+
+CReconnectRequest::~CReconnectRequest()
+/**
+Destuctor
+*/
+	{ }
+
+void CReconnectRequest::StartRequest()
+/**
+start processing this request
+*/
+	{
+	LOG( NetConLog::Printf(_L("\tRequest type = Reconnect")); )
+
+	// set overrides for this request in the databse
+	TRAPD(err, iDatabase->SetOverridesL(iOverrides);
+               iDatabase->RequestNotificationOfServiceChangeL(ipServiceChangeObserver));
+
+	if(err!=KErrNone)
+		{
+		RequestComplete(err);
+		return;
+		}
+
+	TRAP(err, StartReconnectL());
+	if(err!=KErrNone)
+		{
+		RequestComplete(err);
+		}
+	}
+
+void CReconnectRequest::RequestComplete(TInt aError)
+/**
+Force premature completion of a request with a given error
+*/
+	{
+
+	LOG( NetConLog::Printf(_L("\tRequest Complete with error %d"), aError); )
+
+	iController->RequestComplete(this, aError);
+	}
+
+void CReconnectRequest::StartReconnectL()
+/**
+Read current connection preferences and settings from the database then start the reconnection process. 
+
+@exception leaves if database access leaves
+*/
+	{
+
+	iController->CheckBearerAvailability(ETrue);
+	}
+
+void CReconnectRequest::SetAvailableBearers(TUint32 aBearerSet)
+/**
+Making bearer availability with a set of bearers.
+
+@param aBearerSet the set of available bearers
+*/
+	{
+	LOG_DETAILED( NetConLog::Printf(_L("CReconnectRequest::SetAvailableBearers(aBearerSet)")); )
+
+	// cancel bearer availability check, since we're not
+	// going to do any second phase (i.e. signal strength)
+	// bearer availability checking
+	iController->CancelBearerAvailabilityCheck();
+
+	// retrieve connection settings from the agent
+	TRAPD(err, iSettings = iAgent->ConnectionSettingsL());
+
+	LOG (
+		NetConLog::Printf(_L("\tSelected Service Type = '%S'"), &iSettings.iServiceType);
+		NetConLog::Printf(_L("\tAvailable Bearer Set = %d"), aBearerSet);
+		)
+
+	if(err==KErrNone && SelectedServiceAvailable(aBearerSet))
+		{
+		// if service is available then display the reconnect dialog box
+		Reconnect();
+		}
+	else
+		{
+		// otherwise complete the request with KErrCancel
+		// Note that Nifman will propagate the original error
+		// code (e.g. KErrCommsLineFail) to the application
+		RequestComplete(KErrCancel);
+		}
+	}
+
+
+void CReconnectRequest::MDPOReconnectComplete(TInt aError)
+/**
+Implementation of the MDialogProcessorObserver interface:
+Callback from the dialog processor when the reconnect dialog box has completed
+
+@param aError KErrCancel if the user selected "Cancel"
+@param aReponse ETrue if the user selected "OK" otherwise EFalse
+*/
+	{
+
+	RequestComplete(aError);
+	}
+