mmsengine/mmswatcher/inc/mmswatcher.h
changeset 0 72b543305e3a
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsengine/mmswatcher/inc/mmswatcher.h	Thu Dec 17 08:44:11 2009 +0200
@@ -0,0 +1,284 @@
+/*
+* Copyright (c) 2002, 2003 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:  
+*     Mms Notification dispatcher
+*
+*/
+
+
+
+#ifndef MMSWATCHER_H
+#define MMSWATCHER_H
+
+//  INCLUDES
+#include <e32base.h>
+#include <msvapi.h>
+
+#include "mmscenrepobserver.h"
+
+// CONSTANTS
+
+// MACROS
+
+// DATA TYPES
+
+enum TMmsWatcherStates
+    {
+    EInvalid = 0,
+    EStartup,
+    EMessageVariation,
+    EGarbageCollection,
+    EScheduling,
+    EWaiting,
+    };
+
+// FUNCTION PROTOTYPES
+
+// FORWARD DECLARATIONS
+class CWatcherLog;
+class CEnvironmentChangeNotifier;
+#ifdef __WINS__
+class CMmsPollingTimer;
+#endif
+
+// CLASS DECLARATION
+
+// Small class for push entry
+class CMmsPushEntry :public CBase
+    {
+    public:  // Constructors and destructor
+
+        CMmsPushEntry();
+        virtual ~CMmsPushEntry();
+    
+    public:
+        HBufC8* iData;
+        TInt    iStatus;
+        CMsvOperation* iOperation;
+    };
+
+/**
+* Mms Watcher performs all tasks that require waiting for some events
+* @lib mmswatcher.lib
+* @since 1.0
+*/
+class CMmsWatcher :
+    public CActive,
+    public MMsvSessionObserver,
+    public MMmsCenRepNotifyHandler
+    {
+    public:  // Constructors and destructor
+        
+        /**
+        * Two-phased constructor.
+        * @param aFs file system handle
+        * @param aLog watcher logger class reference (not used)
+        */
+        static CMmsWatcher* NewL(TAny* aWatcherParams);
+        
+        /**
+        * Destructor.
+        */
+        virtual ~CMmsWatcher();
+
+    public: // New functions
+        
+    public: // Functions from base classes
+
+        /**
+        * From MMmsCenRepNotifyHandler
+        * HandleCenRepNotificationL is a callback function which is called when
+        * a CenRepObserver receives an event.
+        * There can be several observers running and they all call this callback
+        * when they need to.
+        * @param aRepositoryUid identifies the repository where the key under
+        *   observation is located.
+        * @param aKey identifies the particular key under observation.
+        * @param aValue specifies the new changed value of the key.
+        */    
+        void HandleCenRepNotificationL(
+            const TUid aRepositoryUid,
+            const TInt32 aKey,
+            const TInt aValue );
+
+        /**
+        * From MMsvSessionObserver needed to open message server session
+        * NOTE that CMmsPollingTimer uses this same callback.
+        * @param aEvent event code from message server,
+        *   rest of parameters depend on event. See Symbian documentation.
+        */
+        void HandleSessionEventL(TMsvSessionEvent aEvent, TAny*, TAny*, TAny*);
+
+    protected:  // New functions
+        
+    protected:  // Functions from base classes
+        
+    private:
+
+        /**
+        * By default Symbian OS constructor is private.
+        */
+        void ConstructL();
+
+        /**
+        * constructor.
+        * @param apriority actrive object priority.
+        * @param aLog watcher logger class reference (not used).
+        */
+        CMmsWatcher(TInt aPriority,  CWatcherLog& aLog);
+
+        /**
+        * Perform one operation in state machine
+        */
+        void DoRunL();
+
+        /**
+        * From CActive: Active object completion
+        */
+        void RunL();
+
+        /**
+        * From CActive: Cancel current operation.
+        */
+        void DoCancel();
+
+        /**
+        * remove first entry from queuedMessages array
+        */
+        void Dequeue();
+
+        /**
+        * remove handled entry
+        */
+        void RemoveSent();
+
+        /**
+        * Send next waiting entry to Server mtm
+        */
+        void HandleNextInQueueL();
+
+        /**
+        * create notification
+        * @param aUrl address of the message (path & filename)
+        * @param aSize size of the message (file)
+        * @return pointer to buffer containing the encoded notification
+        */
+        HBufC8* CreateNotificationL(TDesC8& aUrl, TInt aSize);
+
+        /**
+        * Initialization including garbage collection
+        */
+        void StartupL();
+
+        /**
+        * Garbage collection
+        */
+        void GarbageCollectionL();
+
+        /**
+        * Operator message variation
+        */
+        void MessageVariationL();
+
+        /**
+        * Create an entry into MMS folder
+        * @param aFolder folder id
+        * @return id of created entry. KMsvNullIndexEntryId if cannot be created
+        */
+        TMsvId CreateEntryL( TMsvId aFolder );
+
+        /**
+        * Open msv server session
+        * Either the first time, or because it has been closed
+        */
+        void OpenSessionL();
+
+        /**
+        * Environment change functionS
+        */
+    	static TInt EnvironmentChanged(TAny* aThis);
+        void HandleEnvironmentChange();
+
+        /**
+        * GetMessagingEntriesL reads service entryId and NotificationFolderId
+        * from MmsSettings. If values are null, they are created.
+        */
+        void GetMessagingEntriesL( const TBool aMessageStoreHasChanged = EFalse );
+       
+#ifdef __WINS__
+        /**
+        * LocalModeL reads the localmode status from settings
+        */
+        TBool LocalModeL();
+
+        /**
+        * ReadLocalModeDirectoriesL is only for emulator use
+        */
+        void ReadLocalModeConfigData(); 
+#endif
+
+    public:     // Data
+    
+    protected:  // Data
+
+    private:    // Data
+        TMsvId                        iService;
+        TMsvId                        iNotificationFolder;
+        TInt                          iState;
+        CWatcherLog&                  iLog;
+        TInt                          iLastError;
+        CMsvSession*                  iSession;
+        CArrayPtrFlat<CMmsPushEntry>* iQueuedMessages;
+        CMsvOperation*                iOperation;
+        RTimer                        iTimer;
+        RFs                           iFs;
+        TInt                          iMessageDrive; // default is C:
+        // Collection of event flags telling which event has triggered garbage
+        // collection. More than one event may be specified at the same time.
+        TUint32                       iEvents;
+        // Copy of the events, must be saved in case MMS Server MTM is unreachable
+        TUint32                       iOldEvents;
+        // The moment when media became unavailable
+        TTime                         iMediaUnavailableTime;
+        // To keep track of MessageStore availability
+        // (based on mediaAvailable/unavailable events)
+        TBool                         iMediaAvailable;
+        // Observer to watch environment time changes
+        CEnvironmentChangeNotifier*   iNotifier;
+        // Observer of offline mode changes
+        CMmsCenRepObserver*           iOfflineObserver;
+        // encapsulation version
+        TInt16                        iMmsVersion;
+#ifdef __WINS__
+        // MMS Watcher might be used for polling localmode directory
+        // (emulator only)
+        TInt iPollingInterval;
+        CMmsPollingTimer* iPollingTimer;
+        // Specifies the folder from where incoming mms messages are looked for
+        // Local mode works automatically in emulator only
+        TFileName                     iLocalModeIn;
+#endif
+
+    public:     // Friend classes
+    protected:  // Friend classes
+    private:    // Friend classes
+
+    };
+
+// panic function 
+GLREF_C void gPanic( TMmsPanic aPanic );
+
+#endif      // MMSWATCHER_H   
+            
+// End of File