--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/javaextensions/wma/mms/pushplugin/src.s60/s60mmsserverconnection.h Mon May 03 12:27:20 2010 +0300
@@ -0,0 +1,201 @@
+/*
+* Copyright (c) 2008 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:
+ *
+*/
+
+#ifndef S60MMSSERVERCONNECTION_H
+#define S60MMSSERVERCONNECTION_H
+
+#include <mmsclient.h>
+#include <mmsapplicationadapter.h>
+
+#include "monitor.h"
+#include "mmsserverconnection.h"
+
+using namespace java::push;
+
+namespace java
+{
+namespace wma
+{
+/**
+ * MmsServerConnection implement ServerConnectionBase.
+ * It is responsible to start the midlet when the message arrive in the device
+ * for a registered midlet when the midlet is not running.It is also
+ * responsible to receive message when the midlet is running
+ * @lib mmsserverconnection.dll
+ * @
+ */
+class S60MmsServerConnection: public CActive,
+ public MmsServerConnection,
+ public MMsvSessionObserver,
+ public MMsvEntryObserver
+{
+
+public:
+ //Constructor
+ OS_IMPORT S60MmsServerConnection(const std::wstring& aUri,
+ const std::wstring& aFilter);
+ OS_IMPORT virtual ~S60MmsServerConnection();
+ /**
+ * from ServerConnection
+ * Opens the connection. It registers the push URI to the mms engine for
+ * any incoming mms message on this AppId.
+ * Throws COMMON_SRV_CONN_PLUGIN_ERROR exception if there is an error while
+ * registering the connection.
+ * @param aListener: Listener to be notified when message arrives.
+ *
+ * @return
+ */
+ OS_IMPORT virtual void open(ConnectionListener* aListener);
+ /**
+ *from ServerConnection
+ * Closes the connection
+ * @return
+ */
+ OS_IMPORT virtual void close();
+ /**
+ * from ServerConnection
+ * Return the push register URI
+ * @return std::wstring
+ */
+ OS_IMPORT virtual std::wstring getUri() const;
+ /**
+ * from ServerConnection
+ * sets the filter string
+ * @ aFilter - filter string
+ */
+ OS_IMPORT virtual void setFilter(const std::wstring& aFilter);
+ /**
+ * from ServerConnection
+ * Return the filter string
+ * @return std::wstring the filter string
+ */
+ OS_IMPORT virtual std::wstring getFilter() const;
+ /**
+ * SetOpen()
+ * It is used to Distinguish whether Open is called from Midlet context
+ * or Push Controller .This function is called first when the server
+ * connection is called from MIDlet context.
+ * @return
+ */
+ OS_IMPORT void setOpen();
+private:
+ //Constructor
+ S60MmsServerConnection();
+ void InitializeL();
+ void MmsRequestCompleted();
+
+ /**
+ * Check that if the received MMS is valid message
+ * If the message is valid Push launch the midlet.
+ * @param aMsvId: Id of the received message
+ *
+ * @return .
+ */
+ void CheckForValidMessageAndPushL(TMsvId aMsgId);
+ /**
+ * Check that if the received MMS is ready to read
+ *
+ * @param aMsvId: Id of the received message
+ *
+ * @return positive TInt if the message is ready to read otherwise zero.
+ */
+ TBool IsMmsReadyToReadL(TMsvId aMsvId);
+ /**
+ *
+ * thread function.
+ * @
+ * @param :
+ *
+ * @return
+ */
+ static int listenThread(S60MmsServerConnection* aServerConnection);
+ /**
+ * HandleSessionEventL from MMsvSessionObserver
+ * We are not handling any thing in this method.
+ * @
+ * @param aEvent:
+ * @param aArg1:
+ * @param aArg2:
+ * @param aArg3:
+ *
+ * @return
+ */
+ void HandleSessionEventL(TMsvSessionEvent aEvent,TAny* aArg1,
+ TAny* aArg2,
+ TAny* aArg3);
+ /**
+ * HandleEntryEventL
+ * From MMsvEntryObserver
+ * @
+ * @param aEvent: TMsv entry event
+ * @param aArg1:
+ * @param aArg2:
+ * @param aArg3:
+ *
+ * @return
+ */
+ void HandleEntryEventL(TMsvEntryEvent aEvent, TAny* aArg1,
+ TAny* aArg2,
+ TAny* aArg3);
+private: // from CActive
+ void DoCancel();
+ void RunL();
+ TInt RunError(TInt aError);
+
+protected:
+ enum TOperation
+ {
+ EReceivingMessageForNotify,
+ EReceivingMessageForListen,
+ ENotifyingReadMessageSucceeded,
+ ENotifyingClose,
+ };
+
+ int mError;
+ //thread id
+ RThread mThread;
+ // Uri of the push connection
+ std::wstring mUri;
+ // the ongoing operation which is executed by the server connection object.
+ TOperation mState;
+ // Apllication id
+ std::wstring mAppId;
+ //defines the acceptable remote host.
+ std::wstring mFilter;
+ CMsvSession* mSession;
+ // Application ID
+ HBufC* mApplicationId;
+ // flag to indicate connection is active or not, useful during close.
+ bool mActiveConnection;
+ // To synchronize threads
+ pthread_mutex_t mMutex;
+ pthread_cond_t mCondVar;
+ CMsvEntry* mClientEntry;
+ // flag to indicate listening by push or application
+ bool mIsAppLaunched;
+ //listener to be notified for incoming messages
+ ConnectionListener* mListener;
+ // handle to monitor object
+ java::util::Monitor* mOpenMonitor;
+ // reference to application adapter
+ CMmsApplicationAdapter* mMmsApplicationAdapter;
+};
+
+}//end of namespace wma
+}//end of namespace java
+
+#endif // S60MMSSERVERCONNECTION_H