--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tsrc/VCXTestCommon/src/TestUtilConnection.cpp Mon Jan 18 20:21:12 2010 +0200
@@ -0,0 +1,365 @@
+/*
+* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "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 FILES
+
+#include "TestUtilConnection.h"
+
+#include "VCXTestLog.h"
+#include "MTestUtilConnectionObserver.h"
+#include <es_enum.h>
+
+// ========================== MEMBER FUNCTIONS ===============================
+
+// ---------------------------------------------------------------------------
+// CTestUtilConnection::NewL()
+//
+// Constructs CTestUtilConnection object
+// ---------------------------------------------------------------------------
+//
+EXPORT_C CTestUtilConnection* CTestUtilConnection::NewL(MTestUtilConnectionObserver* aObserver)
+ {
+ VCXLOGLO1(">>>CIptvTestUtilConnection::NewL");
+ CTestUtilConnection* self = NewLC(aObserver);
+ CleanupStack::Pop(self);
+ VCXLOGLO1("<<<CIptvTestUtilConnection::NewL");
+ return self;
+ }
+
+// ---------------------------------------------------------------------------
+// CTestUtilConnection::NewLC()
+//
+// Constructs CTestUtilConnection object
+// ---------------------------------------------------------------------------
+//
+EXPORT_C CTestUtilConnection* CTestUtilConnection::NewLC(MTestUtilConnectionObserver* aObserver)
+ {
+ VCXLOGLO1(">>>CIptvTestUtilConnection::NewLC");
+ CTestUtilConnection* self = new (ELeave) CTestUtilConnection(aObserver);
+ CleanupStack::PushL(self);
+ self->ConstructL();
+ VCXLOGLO1("<<<CIptvTestUtilConnection::NewLC");
+ return self;
+ }
+
+// ---------------------------------------------------------------------------
+// CTestUtilConnection::CTestUtilConnection()
+//
+// Constructor
+// ---------------------------------------------------------------------------
+//
+CTestUtilConnection::CTestUtilConnection(MTestUtilConnectionObserver* aObserver)
+: CActive(CActive::EPriorityHigh), iConnectionState(EIdle), iObserver(aObserver)
+ {
+ VCXLOGLO1(">>>CIptvTestUtilConnection::CIptvTestUtilConnection");
+ SetConnectionPreferences(ECommDbBearerUnknown, 0);
+ VCXLOGLO1("<<<CIptvTestUtilConnection::CIptvTestUtilConnection");
+ }
+
+// ---------------------------------------------------------------------------
+// CTestUtilConnection::~CTestUtilConnection()
+//
+// Destructor
+// ---------------------------------------------------------------------------
+//
+EXPORT_C CTestUtilConnection::~CTestUtilConnection()
+ {
+ VCXLOGLO1(">>>CIptvTestUtilConnection::~CIptvTestUtilConnection");
+ Cancel();
+
+ iConnect.Close();
+ iSocketServ.Close();
+
+// iTimer.Cancel();
+// iTimer.Close();
+
+ if( IsAdded() )
+ {
+ Deque(); // calls also Cancel()
+ }
+
+ VCXLOGLO1("<<<CIptvTestUtilConnection::~CIptvTestUtilConnection");
+ }
+
+// ---------------------------------------------------------------------------
+// CTestUtilConnection::ConstructL()
+//
+// Second phase constructor
+// ---------------------------------------------------------------------------
+//
+void CTestUtilConnection::ConstructL()
+ {
+ VCXLOGLO1(">>>CIptvTestUtilConnection::ConstructL");
+
+ iSocketServ.Connect();
+ iConnect.Open(iSocketServ);
+
+// User::LeaveIfError(iTimer.CreateLocal());
+
+ CActiveScheduler::Add(this);
+
+ VCXLOGLO1("<<<CIptvTestUtilConnection::ConstructL");
+ }
+
+// ---------------------------------------------------------------------------
+// CTestUtilConnection::ConnectL()
+//
+// Start connecting to IAP.
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CTestUtilConnection::ConnectL()
+ {
+ VCXLOGLO1(">>>CIptvTestUtilConnection::ConnectL");
+
+ if(iConnectionState == CTestUtilConnection::EConnected)
+ {
+ VCXLOGLO1(">>>CIptvTestUtilConnection:: Already connected");
+ return;
+ }
+
+ if (!IsActive())
+ {
+ iConnect.Start(iPref, iStatus);
+ iConnectionState = CTestUtilConnection::EConnecting;
+
+ //if the line below panics it's either because you made a request but you haven't
+ //SetActive the object (pR->iStatus.iFlags&TRequestStatus::EActive==0) or you didn't set the iStatus
+ //to KRequestPending (pR->iStatus.iFlags&TRequestStatus::ERequestPending==0)
+// iTimerStatus = KRequestPending;
+// iTimer.After(iTimerStatus, KTimeout);
+
+ SetActive();
+ VCXLOGLO1(">>>CIptvTestUtilConnection:: Connecting");
+ }
+ else
+ {
+ //globalNote->ShowNoteL(EAknGlobalInformationNote, KTextNotReady);
+ }
+ VCXLOGLO1("<<<CIptvTestUtilConnection::ConnectL");
+ }
+
+
+// ---------------------------------------------------------------------------
+// CTestUtilConnection::AttachL()
+//
+// Attach to open IAP.
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CTestUtilConnection::AttachL()
+ {
+ VCXLOGLO1(">>>CIptvTestUtilConnection::AttachL");
+
+ if(iConnectionState == CTestUtilConnection::EConnected)
+ {
+ VCXLOGLO1(">>>CIptvTestUtilConnection:: Already connected");
+ VCXLOGLO1("<<<CIptvTestUtilConnection::AttachL");
+ User::Leave(KErrAlreadyExists);
+ }
+
+ if (!IsActive())
+ {
+ TUint activeConnections = 0;
+ User::LeaveIfError(iConnect.EnumerateConnections(activeConnections));
+
+ TConnectionInfo info;
+ TPckg<TConnectionInfo> infoPckg(info);
+
+ TInt found = EFalse;
+ for(TInt i=1;i<=activeConnections;i++)
+ {
+
+ User::LeaveIfError(iConnect.GetConnectionInfo(i, infoPckg));
+
+ VCXLOGLO3("CIptvTestUtilConnection:: %d vs %d.", iPref.IapId(), info.iIapId);
+
+ if(info.iIapId == iPref.IapId())
+ {
+ found = ETrue;
+ break;
+ }
+
+ }
+ if(!found)
+ {
+ VCXLOGLO1(">>>CIptvTestUtilConnection:: No connection found to that AP.");
+ VCXLOGLO1("<<<CIptvTestUtilConnection::AttachL");
+ User::Leave(KErrNotFound);
+ }
+
+ User::LeaveIfError(iConnect.Attach(infoPckg, RConnection::EAttachTypeNormal));
+ iConnectionState = CTestUtilConnection::EConnected;
+ }
+
+ VCXLOGLO1("<<<CIptvTestUtilConnection::AttachL");
+ return;
+ }
+
+// ---------------------------------------------------------------------------
+// CTestUtilConnection::RunL()
+//
+// Handle request completion events
+// ---------------------------------------------------------------------------
+//
+void CTestUtilConnection::RunL()
+ {
+ VCXLOGLO1(">>>CIptvTestUtilConnection::RunL");
+
+ /*if(iTimerStatus.Int() == KErrNone)
+ {
+ VCXLOGLO1("CTestUtilConnection:: Connection timeout.");
+ iObserver->ConnectionTimeout();
+ iTimer.Cancel();
+ }
+ */
+ TInt statusCode = iStatus.Int();
+
+ switch (statusCode)
+ {
+ case KErrNone: // Connection created succesfully
+ {
+ //PrintNoteL(KTextConnectionCreated);
+ VCXLOGLO1("CTestUtilConnection:: Connection created.");
+ iConnectionState = CTestUtilConnection::EConnected;
+// iTimer.Cancel();
+ iObserver->ConnectionCreated();
+ break;
+ }
+
+ case KErrNotFound: // Connection failed
+ {
+ //PrintNoteL(KTextGeneralError);
+ VCXLOGLO1("CTestUtilConnection:: Connection failed.");
+ iConnectionState = CTestUtilConnection::EFailed;
+ //iTimer.Cancel();
+ iObserver->ConnectionFailed();
+ break;
+ }
+
+ case KErrCancel: // Connection attempt cancelled
+ {
+ //PrintNoteL(KTextConnectionCancelled);
+ VCXLOGLO1("CTestUtilConnection:: Connection attemption canceled.");
+ iConnectionState = CTestUtilConnection::EFailed;
+// iTimer.Cancel();
+ iObserver->ConnectionFailed();
+ break;
+ }
+
+ case KErrAlreadyExists: // Connection already exists
+ {
+ //PrintNoteL(KTextConnectionExists);
+ VCXLOGLO1("CTestUtilConnection:: Connection already exists.");
+ iConnectionState = CTestUtilConnection::EFailed;
+// iTimer.Cancel();
+ iObserver->ConnectionAlreadyExists();
+ break;
+ }
+
+ default:
+ {
+ //TBuf<KErrorResolverMaxTextLength> errorText;
+ // Use text resolver to resolve error text
+ //errorText = iTextResolver->ResolveError(statusCode);
+ //PrintErrorL(errorText, statusCode);
+ VCXLOGLO2("CTestUtilConnection:: Unknown error: %d", statusCode);
+ iConnectionState = CTestUtilConnection::EFailed;
+// iTimer.Cancel();
+ iObserver->ConnectionFailed();
+ break;
+ }
+ }
+
+ VCXLOGLO1("<<<CIptvTestUtilConnection::RunL");
+ }
+
+// ---------------------------------------------------------------------------
+// CTestUtilConnection::DoCancel()
+//
+// Cancels ongoing requests
+// ---------------------------------------------------------------------------
+//
+void CTestUtilConnection::DoCancel()
+ {
+ VCXLOGLO1(">>>CIptvTestUtilConnection::DoCancel");
+ VCXLOGLO1("<<<CIptvTestUtilConnection::DoCancel");
+ // Nothing to do here
+ }
+
+
+// ---------------------------------------------------------------------------
+// CTestUtilConnection::TerminateConnectionL()
+//
+// This function should not be used in normal situation, since it terminates
+// the active connection, even if there are other application using
+// the connection. Calling the RConnection::Close() closes the connection.
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CTestUtilConnection::TerminateConnectionL()
+ {
+ VCXLOGLO1(">>>CIptvTestUtilConnection::TermínateConnectionL");
+
+/*
+ if (iProgressNotifier->GetState() == EIAPConnectStateConnected)
+ {
+ // Show confirmation dialog first
+ if (ShowQueryDialogL())
+ {
+ // RConnection::Stop() terminates connection by stopping whole
+ // network interface even if there are other clients using
+ // the connection. It is not recommended to use it unless it is
+ // really meaningful.
+ User::LeaveIfError(iConnect.Stop());
+
+ }
+ }
+ else
+ {
+ PrintNoteL(KTextNotConnected);
+ }
+ */
+ User::LeaveIfError(iConnect.Stop());
+ VCXLOGLO1("<<<CIptvTestUtilConnection::TermínateConnectionL");
+ }
+
+CTestUtilConnection::TConnectionState CTestUtilConnection::GetState()
+ {
+ return iConnectionState;
+ }
+
+// ---------------------------------------------------------------------------
+// CTestUtilConnection::SetConnectionPreferences(TUint aBearer,
+// TBool aDialog,
+// TUint32 aIapId)
+//
+// This function sets connection preferences.
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CTestUtilConnection::SetConnectionPreferences(
+ TUint aBearer,
+ TUint32 aIapId)
+ {
+ VCXLOGLO1(">>>CIptvTestUtilConnection::SetConnectionPreferences");
+ iPref.SetDirection(ECommDbConnectionDirectionOutgoing);
+ iPref.SetDialogPreference(ECommDbDialogPrefDoNotPrompt);
+ iPref.SetIapId(aIapId);
+ iPref.SetBearerSet(aBearer);
+ iPref.SetDirection(ECommDbConnectionDirectionOutgoing);
+ VCXLOGLO1("<<<CIptvTestUtilConnection::SetConnectionPreferences");
+ }
+
+// End of file