--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/wvuing/IMPSConnectionUI/OperationStepSrc/CCnUiConnCloser.h Thu Dec 17 08:41:52 2009 +0200
@@ -0,0 +1,342 @@
+/*
+* Copyright (c) 2004 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: Connection closer.
+*
+*/
+
+#ifndef __CCNUICONNCLOSER_H
+#define __CCNUICONNCLOSER_H
+
+// INCLUDES
+#include <E32base.h>
+#include <impspresenceconnectionuiconstsng.h>
+#include <MPEngNWSessionOperationObserver2.h>
+
+
+//DATA TYPES
+
+/**
+ * Connection closer state enumerations.
+ * These state id's are reported to
+ * given MCnUiOpProgressStateObserver
+ * operation progress observer
+ */
+enum TCnUiConnCloserState
+ {
+ ECnCloser_Idle = 100, ///<Idle state, no operation running
+ ECnCloser_ProcessingPlugin = 101, ///<Waiting client plug-in processing
+ ECnCloser_ClosingSAPConnection = 102 ///<Waiting the SAP connection to close
+ };
+
+
+
+//FORWARD DECLARATION
+class CIMPSSAPSettings;
+class MCnUiOpContext;
+class MCnUiConnectionHandler;
+class MCnUiClientPlugin;
+class MCnUiOpProgressStateObserver;
+class CPEngNWSessionSlotID2;
+
+// CLASS DECLARATION
+
+/**
+ * Connection closer.
+ * @since 2.1
+ */
+NONSHARABLE_CLASS( CCnUiConnCloser ) : protected CActive,
+ public MPEngNWSessionOperationObserver2
+ {
+private: //helper class
+ /**
+ * Private helper class to manager
+ * state information and notify state
+ * observer.
+ * @since 2.1
+ */
+ class TCloserStateProxy
+ {
+ public: //new methods
+
+ /**
+ * C++ default constructor.
+ * @param aInitial The initial state.
+ */
+ TCloserStateProxy( TCnUiConnCloserState aInitial );
+
+ /**
+ * Sets new state observer. Observer may be NULL.
+ * @since 2.1
+ * @param aObs The observer to set and notify further
+ * state changes.
+ */
+ void SetProgressObserver( MCnUiOpProgressStateObserver* aObs );
+
+ /**
+ * Sets new state and notifies registered observer if any..
+ * @since 2.1
+ * @param aNewState The new state.
+ * @param aClient The client for which the state was entered
+ */
+ void Set( TCnUiConnCloserState aNewState, TIMPSConnectionClient aClient );
+
+ /**
+ * Gets current state.
+ * @since 2.1
+ * @return The current state.
+ */
+ TCnUiConnCloserState operator()();
+
+
+ private: //data
+
+ ///<Current state, owned
+ TCnUiConnCloserState iState ;
+
+ ///<Observer, not owned, may be NULL
+ MCnUiOpProgressStateObserver* iObs;
+
+ };
+
+
+public: // Two-phased constructors and destructor
+
+ /**
+ * Two-phased constructor.
+ */
+ static CCnUiConnCloser* NewL();
+
+ /**
+ * Destructor.
+ */
+ virtual ~CCnUiConnCloser();
+
+
+private:
+
+ /**
+ * C++ default constructor.
+ */
+ CCnUiConnCloser();
+
+
+protected: // From CActive
+
+ /**
+ * RunL().
+ */
+ void RunL();
+
+
+ /**
+ * RunError().
+ *
+ * @since 2.1
+ * @param aError The leave code from RunL leave.
+ * Stores this as iStatus member.
+ * @return Always KErrNone.
+ */
+ TInt RunError( TInt aError );
+
+
+ /**
+ * DoCancel().
+ *
+ * @since 2.1
+ */
+ void DoCancel();
+
+
+public: // Methods from MPEngNWSessionOperationObserver2
+
+ /**
+ * From MPEngNWSessionOperationObserver2.
+ * See it for details.
+ *
+ * @since 3.0
+ */
+ void HandleNWSessionOperationCompleteL(
+ MPEngTransactionStatus2& aStatus,
+ CPEngNWSessionSlot2& aNWSessionSlot,
+ TInt aNWSessionSlotOperation );
+
+ /**
+ * From MPEngNWSessionOperationObserver2.
+ * See it for details.
+ *
+ * @since 3.0
+ */
+ void HandleNWSessionOperationNotifyError(
+ TInt aError,
+ CPEngNWSessionSlot2& aNWSessionSlot,
+ TInt aNWSessionSlotOperation );
+
+
+public: // New functions
+
+ /**
+ * Logout service.
+ *
+ * @since 2.1
+ * @param aClient The client to login.
+ * @param aSap The SAP to login.
+ * @param aPlugin The client plugin to use in login processing.
+ * @param aConnHandler The connection handler to use in login
+ * @param aProgressObserver The possible progress observer,
+ * may be NULL.
+ * @return Operation status. This can be either local
+ * error code coming from starting the operation
+ * or real network error code.
+ */
+ TInt MakeLogoutForClient( TIMPSConnectionClient aClient,
+ const CIMPSSAPSettings& aSap,
+ MCnUiClientPlugin& aPlugin,
+ MCnUiConnectionHandler& aConnHandler,
+ MCnUiOpProgressStateObserver* aProgressObserver,
+ CPEngNWSessionSlotID2& aNWSessionSlotID );
+
+
+ /**
+ * Cancels the logout.
+ *
+ * @since 2.1
+ */
+ void CancelLogout();
+
+
+ /**
+ * Gets wether this connection closer
+ * instance has really closed the network
+ * connection or not.
+ *
+ * @since 2.1
+ * @return ETrue if connection really closed.
+ * Else EFalse.
+ */
+ TBool ConnectionReallyClosed();
+
+
+private: // New private helper methods
+
+ /**
+ * Waits the started asynchronous steps
+ * to complete using the CActiveSchedulerWait.
+ *
+ * @since 2.1
+ */
+ void WaitCompletion();
+
+
+ /**
+ * Stops the previously started
+ * CActiveSchedulerWait wait loop.
+ *
+ * @since 2.1
+ */
+ void Completed();
+
+
+ /**
+ * Handles the client logout request.
+ * Starts asynchronous operation
+ * if really needed.
+ *
+ * @since 2.1
+ */
+ void HandleClientLoggoutRequestL();
+
+
+ /**
+ * Issues plugin pre loggout processing.
+ *
+ * @since 2.1
+ */
+ void IssuePluginPreLoggoutProcessingL();
+
+
+ /**
+ * Issues SAP connection close processing.
+ *
+ * @since 2.1
+ */
+ void IssueSapConnectionCloseL();
+
+
+ /**
+ * Resets previoysly cached operation
+ * parameters.
+ * @since 2.1
+ */
+ void ResetCachedParameters();
+
+
+ /**
+ * Resets internal state flags.
+ *
+ * @since 2.1
+ */
+ void ResetStateFlags();
+
+ /**
+ * Handles operation completions
+ *
+ * @since 3.0
+ */
+ void HandleOperationCompletionsL();
+
+ /**
+ * Creates a network session slot copy
+ *
+ * @since 3.0
+ */
+ CPEngNWSessionSlotID2* CopyNWSessionSlotL( CPEngNWSessionSlotID2& aSessionSlot );
+
+
+
+private: // Data
+
+ ///< The internal state proxy, owned
+ TCloserStateProxy iState;
+
+ ///<Active Scheduler Wait, owned
+ CActiveSchedulerWait iWait;
+
+ ///<State flag. Was this operation canceled, owned
+ TBool iCanceled;
+
+ ///<State flag. Has this operation closed really NW connection, owned
+ TBool iConnectionReallyClosed;
+
+ ///<Cached operation resource, not owned
+ MCnUiConnectionHandler* iConnHandler;
+
+ ///<Cached operation resource, not owned
+ MCnUiClientPlugin* iPlugin;
+
+ ///<Cached operation resource, not owned
+ const CIMPSSAPSettings* iSap;
+
+ ///<Cached operation resource
+ TIMPSConnectionClient iClient;
+
+ MPEngTransactionStatus2* iTransactionStatus;
+
+ // owns: does not own
+ CPEngNWSessionSlotID2* iNWSessionSlotID;
+
+ };
+
+#endif // __CCNUICONNCLOSER_H
+
+// End of File