--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmappcomponents/harvester/server/inc/mpxharvestersession.h Thu Dec 17 08:55:47 2009 +0200
@@ -0,0 +1,212 @@
+/*
+* Copyright (c) 2006 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: Harvester Server Session
+*
+*/
+
+
+#ifndef CMPXHARVESTERSESSION_H
+#define CMPXHARVESTERSESSION_H
+
+#include <e32base.h>
+#include <e32cons.h>
+#include <f32file.h>
+#include <s32mem.h>
+
+#include "mpxharvesterengineobserver.h"
+#include "mpxhvsmsg.h"
+
+// FORWARD DECLARATIONS
+class CMPXHarvesterServer;
+class CMPXHarvesterEngine;
+class CMPXMedia;
+
+/**
+* Harvester server session
+*/
+NONSHARABLE_CLASS( CMPXHarvesterSession ) : public CSession2,
+ public MMPXHarvesterEngineObserver
+ {
+public:
+
+ /**
+ * Two-phased constructor. Leaves on failure.
+ *
+ * @param aServer server object
+ * @param aEngine engine object
+ * @return The constructed object
+ */
+ static CMPXHarvesterSession* NewL(CMPXHarvesterServer& aServer,
+ CMPXHarvesterEngine& aEngine);
+
+ /**
+ * C++ constructor
+ *
+ * @param aServer server object
+ * @param aEngine engine object
+ */
+ CMPXHarvesterSession(CMPXHarvesterServer& aServer,
+ CMPXHarvesterEngine& aEngine);
+
+ /**
+ * Destructor
+ */
+ ~CMPXHarvesterSession();
+
+private: // From base classes
+
+ /**
+ * From CSession2
+ * Service request
+ * @param aMessage message object
+ */
+ void ServiceL(const RMessage2& aMessage);
+
+ /**
+ * From MMPXHarvesterEngineObserver
+ * Handles the completion of an import event
+ */
+ void HandleImportCompleteL( CMPXMedia* aMedia, TInt aErr,
+ RHvsMsg* aMsg );
+
+ /**
+ * From MMPXHarvesterEngineObserver
+ * Handles the completion of an import event
+ */
+ void HandleExportCompleteL( CMPXMedia* aMedia, TInt aErr,
+ RHvsMsg* aMsg );
+
+ /**
+ * From MMPXHarvesterEngineObserver
+ * Handles the completion of an async msg with error
+ */
+ void CompleteTask( RHvsMsg* aMsg, TInt aErr );
+
+private:
+ /**
+ * Dispatch message
+ *
+ * @param aMessage message object
+ */
+ void DispatchMessageL(const RMessage2& aMessage);
+
+ /**
+ * Scan the FS for files
+ */
+ void DoScanL();
+
+ /**
+ * Cancel the scan (if executing)
+ */
+ void DoCancelScan();
+
+ /**
+ * Shutdown the harvester (for testing memory leaks)
+ * Testing ONLY
+ */
+ void DoShutdown();
+
+ /**
+ * Handles addition of a file (iDes) to the harvester
+ * @param aMsg message containing the item to add
+ */
+ void DoAddFileL( RHvsMsg* aMsg );
+
+ /**
+ * Decode the IPC message to add a media
+ * @param aMessage, message to decode
+ * @return, collection ID of the media
+ */
+ TInt DoAddMediaPropL( const RMessage2& aMessage );
+
+ /**
+ * Handles media creation for a file
+ * @param aMsg message containing the item
+ */
+ void DoGetMediaL( RHvsMsg* aMsg );
+
+ /**
+ * Decode the IPC message to get a collection id
+ * @param aMessage, message to decode
+ * @return, collection ID of the file
+ */
+ TInt DoGetColUidL( const RMessage2& aMessage );
+
+ /**
+ * Removes multiple songs from the harvester db
+ * @param aMessage message to decode
+ */
+ void DoRemoveMultipleFilesL( const RMessage2& aMessage );
+
+ /**
+ * Update a file according to new information
+ * @param aMessage message to decode
+ */
+ void DoUpdateFileL( const RMessage2& aMessage );
+
+ /**
+ * Rename a file according to new information
+ * @param aMessage message to decode
+ */
+ void DoRenameFileL( const RMessage2& aMessage );
+
+ /**
+ * Set the message as async and add it to the message list
+ * @param aMessage message to decode
+ * @param aOp operation id
+ */
+ RHvsMsg* SetAsyncL( const RMessage2& aMessage, TMPXHarvesterServerOp aOp );
+
+ /**
+ * Complete and remove an RHvsMsg
+ * @param aMessage message to decode
+ * @param aErr error code to complete operation
+ */
+ void CompleteMessage( RHvsMsg*& aMessage, TInt aErr );
+
+ /*
+ * Helper methods for transferring variable sized arrays and objects
+ */
+
+ /**
+ * Reads a descriptor from the message, allocated into iDes
+ *
+ * @param aMessage message object
+ * @param aMsgSlot message slot
+ * @return the result descriptor
+ */
+ const TDesC& ReadDesL(const RMessage2& aMessage,TInt aMsgSlot);
+
+private:
+
+ /**
+ * 2nd phase constructor
+ */
+ void ConstructL();
+
+private:
+
+ CMPXHarvesterServer& iServer; // not owned
+ CMPXHarvesterEngine& iEngine; // not owned
+
+ HBufC* iDes;
+ HBufC8* iDes8;
+ CBufBase* iBuffer;
+
+ RPointerArray<RHvsMsg> iMessages;
+ CMPXMedia* iMedia;
+ };
+
+#endif // CMPXHARVESTERSESSION_H
+