diff -r 000000000000 -r 72b543305e3a mmsengine/mmsconninit/inc/mmsconninit.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mmsengine/mmsconninit/inc/mmsconninit.h Thu Dec 17 08:44:11 2009 +0200 @@ -0,0 +1,214 @@ +/* +* Copyright (c) 2002-2007 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: mmsconninit declaration +* +*/ + + + +#ifndef __MMSCONNINIT_H +#define __MMSCONNINIT_H + +// INCLUDES + +#include "MmsConnInitLogging.h" + +#include +#include +#include +#include + +// CONSTANTS +// MACROS +// DATA TYPES +// FUNCTION PROTOTYPES +// FORWARD DECLARATIONS +class RConnection; + +// CLASS DECLARATION +/** +* This class provides an interface for clients wishing to initiate an +* Internet connection. Also function solving parameters needed in HTTP transport +* is offered. +*/ +class CMmsConnectionInitiator : public CActive + { + public: // Constructors and destructor + + /** + * Two-phased constructor. + */ + IMPORT_C static CMmsConnectionInitiator* NewL(); + + /** + * Destructor. + */ + virtual ~CMmsConnectionInitiator(); + + public: // New functions + + /** + * Starts the connection procedure based on the Accesspoint link/refence + * + * @param RConnection conn (in) + * @param CArrayFixFlat& aAccessPointArray (in) + * @param aStatus (out) + * aStatus is set to an error value in case of error. + * In successful case aStatus is set to point to index of + * aAccessPointArray (actually index+1). The index specifies the AP + * that has been used for connection. + * + * Usage: + * Client opens RConnection session and passes + * a refernce parameter to MmsConnInit. Client + * allocates an array containing WAP AP(s). The + * client is responsible for allocation and + * deallocation of memory + */ + IMPORT_C void ConnectL( + RConnection& aConnection, + CArrayFixFlat& aAccessPointArray, + TRequestStatus& aStatus ); + + /** + * Finds parameters needed for client using + * HTTP Client API. Used also for access point validation + * + * @param TUint32 aAccessPointLink (in) + * @param TUint32& aAccessPoint (out) + * @param HBufC*& aServerUri (out) + * @param TBool& aProxyUsed (out) + * @param HBufC8*& aProxyAddress (out) + * + * Usage: + * Link/reference to accesspoint is given as an input parameter. + * The function resolves the other parameters based on the accesspoint + * reference. + * aUri and aProxyAddress are references to heap buffers. They should + * not be allocated by client. Client is, however, responsible for + * deallocating them when no longer needed. + * Note that the buffer parameters may not be members of the client + * because MmsConnInit puts them into CleanupStack temporarily + * The function tries to solve the parameters even if there is something + * wrong with the CommDb. + * If the operation returns 0 as the value of aAccessPoint, something + * has failed. + */ + IMPORT_C static void GetParametersL( + TUint32 aAccessPointLink, + TUint32& aAccessPoint, + HBufC*& aServerUri, + TBool& aProxyUsed, + HBufC8*& aProxyAddress ); + + public: // Functions from base classes + + protected: // New functions + + protected: // Functions from base classes + + /** + * From CActive + * Handles the event generated when the request completes + * @return void + */ + void RunL(); + + /** + * From CActive + * Cancels any outstanding request + * @return void + */ + void DoCancel(); + + /** + * From From CActive + * This function is called if RunL leaves + */ + TInt RunError( TInt aError ); + + private: + + /** + * Constructor + */ + void ConstructL(); + + /** + * Checks if network is available. + * @return TRUE, if network available, FALSE, if no network + */ + TBool CheckNetworkL(); + + + /** + * + * @param TUint32 aWapAP (in) + * @param TUint32& aIap (out) + * @return TBool which informs if the IAP finding was successful + */ + TBool FindIapL( TUint32 aWapAP, TUint32& aIap ); + + /** + * Checks that the WAP Start Page in CommsDB contains the scheme + * (HTTP://). If not, it will be added. + * @param HBufC* aUri is the WAP Start Page + * @return void + */ + static void CheckWapStartPageL( HBufC*& aUri ); + + /** + * Checks if there is already connections open and checks if the + * connection could be reused or not. + * @param aIap, IAP to connect or not to connect + * @return void + */ + void StartConnectionL( TUint32 aIap ); + + /** + * Searches for PDP Type and GPRS Access Point Name for an IAP given as + * parameter. Memory for aGprsApn is allocated inside the function and + * deallocation should be made by caller. The pointer is not in cleanup + * stack. + * @return TBool. ETrue if the connection is GPRS, otherwise EFalse + */ + TBool FindGprsParametersL( TUint32 aIap, TUint32& aPdpType, HBufC*& aGprsApn ); + + /** + * C++ default constructor. + */ + CMmsConnectionInitiator(); + + public: // Data + protected: // Data + + private: // Data + RConnection* iConnection; + TRequestStatus* iClientStatus; // status of the client + TCommDbConnPref iPrefs; + CArrayFixFlat* iArray; + TInt iIndex; // Index of the table when looping it through + TNifProgress iProgress; // instance of TNifProgressBuf + // Timer to do a quick retry if case of immediate timeout + RTimer iTimer; + // Tells if timer is running and must be cancelled + TBool iTimerRunning; + // Time the connection is started + TTime iStartTime; + TInt iRetryCount; + }; + +#endif // __MMSCONNINIT_H + +// End of File