sipproviderplugins/sipprovider/sipstatemachine/inc/SipStateMachineBase.h
changeset 0 307788aac0a8
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sipproviderplugins/sipprovider/sipstatemachine/inc/SipStateMachineBase.h	Tue Feb 02 01:03:15 2010 +0200
@@ -0,0 +1,84 @@
+// Copyright (c) 2005-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:
+// CStateMachine definition file
+// 
+//
+
+/**
+ @file
+ @internalComponent
+*/
+
+#ifndef SIP_STATE_MACHINE_BASE_H
+#define SIP_STATE_MACHINE_BASE_H
+
+
+
+
+class CStateMachine : public CActive
+   {
+   public:
+      IMPORT_C ~CStateMachine();
+
+      TInt LastError() const;
+      void SetLastError( TInt aLastError );
+      void SetClientStatus( TRequestStatus* aClientStatus );
+      TRequestStatus* ClientStatus() const;
+      void SetActiveEvent( CAsynchEvent* aEvent );
+      void SetErrorEvent( CAsynchEvent* aEvent );
+      void SetSuspendRequest( TBool aSuspendRequest );
+      TBool SuspendRequest() const;
+
+      void UpdateHistory( TInt aUpdate );
+      TInt History() const;
+
+      void RegisterNotify( MStateMachineNotify* aStateMachineNotify );
+      void DeRegisterNotify( MStateMachineNotify* aStateMachineNotify );
+   
+      IMPORT_C void Start( TRequestStatus* aClientStatus, CAsynchEvent* aErrorEvent, MStateMachineNotify* aStateMachineNotify
+         /*the object is NOT taking ownership of the params*/ );
+      //CActive::Cancel method should not be used
+      IMPORT_C void Cancel( TInt aLastError );
+
+      IMPORT_C HBufC8* ReAllocL( TInt aNewLength );
+      HBufC8* Fragment() const;
+
+   protected:
+      IMPORT_C CStateMachine();
+
+	   IMPORT_C virtual void DoCancel();
+	   IMPORT_C virtual void RunL();
+	   IMPORT_C virtual TInt RunError(TInt aError);
+
+      IMPORT_C void OnError();
+      IMPORT_C virtual void OnCompletion();
+
+   protected:
+      CAsynchEvent* iActiveEvent; //referenced not owned
+      CAsynchEvent* iErrorEvent; //referenced not owned
+      TInt iHistory;
+      TInt iLastError;
+
+      TRequestStatus* iClientStatus; //optional
+      HBufC8* iFragment; //shared data fragment buffer owned by this class
+
+      MStateMachineNotify* iStateMachineNotify; //one at the time so far
+      TBool iSuspendRequest : 1; //if ETrue causes the state machine to stop after completion of
+      //ongoing asynch event (no client request will be completed but MStateMachineNotify::OnCompletion
+      //will be called if installed)
+   };
+
+
+#endif
+