diff -r 000000000000 -r 72b543305e3a mmsengine/mmspushhandler/inc/CMmsPushHandler.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mmsengine/mmspushhandler/inc/CMmsPushHandler.h Thu Dec 17 08:44:11 2009 +0200 @@ -0,0 +1,282 @@ +/* +* 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: CMmsPushHandler declaration +* +*/ + + + + +#ifndef __CMMSPUSHHANDLER_H +#define __CMMSPUSHHANDLER_H + +// INCLUDES +#include +#include + +#ifdef _DEBUG +#include +#endif // _DEBUG + +// CONSTANTS +// +const TInt KRequiredDiskSpace = 1024; // Used for checking the diskspace +const TInt KRetryCount = 5; // Number of times to retry something (more specifically number of times RunL is entered) +const TInt KShortWait = 30*1000000; // Timeout value to be used for short timeouts +const TInt KLongWait = 5*60*1000000; // Timeout value to be used for long timeouts + +// MACROS +// Related to logging +#ifdef _DEBUG +_LIT(KLogFile,"PushHandler.txt"); +_LIT(KLogFolder,"mmss"); + +#define LOGTEXT(AAA) RFileLogger::Write(KLogFolder(),KLogFile(),EFileLoggingModeAppend,AAA) +#define LOGTEXT2(AAA,BBB) RFileLogger::WriteFormat(KLogFolder(),KLogFile(),EFileLoggingModeAppend,TRefByValue(AAA),BBB) + +#else // no _DEBUG defined + +#define LOGTEXT(AAA) +#define LOGTEXT2(AAA,BBB) + +#endif // _DEBUG + +// DATA TYPES + +// FUNCTION PROTOTYPES + +// FORWARD DECLARATIONS + +// CLASS DECLARATION + +/** +* ECOM listener plugin for MMS engine. +* Plugin is instantiated by the wap listener in the system watcher. +* It delivers pushed delivery reports and message notifications to MMS Mtm. +* +* @lib mmspushhandler.lib +* @since 2.0 +*/ +class CMmsPushHandler : public CPushHandlerBase, public MMsvSessionObserver + { + public: // Constructors and destructor + + /** + * Destructor + * @since 2.0 + */ + ~CMmsPushHandler(); + + public: // New functions + + /** + * Default 1st phase factory method. + * @since 2.0 + * @return created instance of the CMmsPushHandler class + */ + static CMmsPushHandler* NewL(); + + public: // Functions from base classes + + /** + * Method for handling a received message asynchronously. + * @since 2.0 + * @param aPushMsg object representing the received push message + * @param aStatus Status of the asynchronous call + */ + void HandleMessageL(CPushMessage* aPushMsg, TRequestStatus& aStatus); + + /** + * Method for handling a received message synchronously. + * @since 2.0 + * @param aPushMsg object representing the received push message + */ + void HandleMessageL(CPushMessage* aPushMsg); + + /** + * Cancels the requested asynchronous message handling. + * @since 2.0 + */ + void CancelHandleMessage(); + + /** + * Observer/callback method that gets called by Message Server. + * Currently not used for anything. + * @since 2.0 + * @param aEvent specifies the event that has occurred + * @param - + * @param - + * @param - + */ + void HandleSessionEventL( + TMsvSessionEvent aEvent, + TAny* aArg1, + TAny* aArg2, + TAny* aArg3); + + protected: // New functions + + protected: // Functions from base classes + + /** + * Performs operations needed for cancelling the message handling. + * Called by the Active Scheduler after user calling Cancel(). + * @since 2.0 + */ + void DoCancel(); + + /** + * Performs the actual tasks related to message handling. + * Called by the Active Scheduler. + * @since 2.0 + */ + void RunL(); + + private: // New functions + + /** + * Default constructor. + * @since 2.0 + */ + CMmsPushHandler(); + + /** + * 2nd phase constructor. + * @since 2.0 + */ + void ConstructL(); + + /** + * Performs basic sanity checks for the received message. + * Only the body is checked since header is not of interest to us. + * @since 2.0 + * @return standard error code + */ + TInt PerformChecks(); + + /** + * Opens a CMsvSession to Server Mtm. + * @since 2.0 + * @return error code (should be KErrNone) + */ + void OpenSessionL(); + + /** + * Tries to find the MMS service resources from the Server Mtm. + * @since 2.0 + */ + void FindServiceL(); + + /** + * Transfers a push message to Server Mtm. + * @since 2.0 + */ + void TransferMessageL(); + + /** + * Finds/Creates a folder for MMS pushmessages to Message Store + * @since 2.5 + * @return created entry's Id + */ + TMsvId GetMMSFolderL(); + + /** + * Creates MMSNotifications folder into Message Store. + * @since 2.0 + * @return created entry's Id + */ + TMsvId CreateMMSFolderL(); + + /** + * Tries to find the correct MMSNotifications folder + * @since 2.0 + * @return entryId + * if correct folder was found it is returned, + * if not found, KMsvNullIndexEntryId is returned. + */ + TMsvId FindMMSFolderL(); + + /** + * Creates an entry for the pushed message if necessary and stores + * the created Id to member variable. + * @since 2.0 + * @param folder's entry Id into where the new message entry will be + * created. + */ + TMsvId CreateEntryL( TMsvId aFolder ); + + /** + * Checks that there is enough diskspace + * @since 2.5 + * @return KErrNone if there is enough diskspace + * KErrDiskFull if below critical level. + * NOTE: The class (this) has been activated already. + */ + TInt CheckDiskSpaceL(); + + private: // Functions from base classes + /** + * Reserved for future expansion. + * @since 2.0 + */ + void CPushHandlerBase_Reserved1(); + + /** + * Reserved for future expansion. + * @since 2.0 + */ + void CPushHandlerBase_Reserved2(); + + public: // Data + + protected: // Data + + private: // Data + // Operations to indicate the current asynchronous operation + typedef enum TMmsPushHandlerOperations + { + EInitial = 0, // when entering RunL the first time + EMsDriveChange, // when changing MessageStore drive + ETransferCommand, // when TransferCommandL is called + ETimer, // when a sleep timer is running + EDiskSpaceWait // when waiting for disk space to come available + } TState; + + // The state of the active object + TState iState; + // Entry Id of the MMS service + TMsvId iServiceId; + // Object representing the session to Server Mtm + CMsvSession* iMsvSession; + // Object representing the request made asynchronously to Server Mtm + CMsvOperation* iMsvOperation; + // Pushed message + CPushMessage* iPushMsg; + // The body of the pushed message as HBufC8 descriptor + HBufC8* iBody; + // FileServer reference + RFs iFs; + // Timer for retries + RTimer iTimer; + // retry count + TInt iRetryCount; + + public: // Friend classes + protected: // Friend classes + private: // Friend classes + }; + +#endif // __CMMSPUSHHANDLER_H + +// End of File