--- /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