javaextensions/midppush/pushregistryplugin/inc/pushregistryhandler.h
changeset 21 2a9601315dfc
child 87 1627c337e51e
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/javaextensions/midppush/pushregistryplugin/inc/pushregistryhandler.h	Mon May 03 12:27:20 2010 +0300
@@ -0,0 +1,173 @@
+/*
+* 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 PUSHREGISTRYHANDLER_H
+#define PUSHREGISTRYHANDLER_H
+
+#include <memory>
+
+#include "javaosheaders.h"
+
+#include "comms.h"
+#include "extensionplugininterface.h"
+#include "applicationruntimeeventsinterface.h"
+#include "applicationmanagementeventsinterface.h"
+#include "eventconsumerinterface.h"
+#include "pushregistrymessages.h"
+#include "commslistener.h"
+#include "exceptionbase.h"
+#include "scopedlocks.h"
+#include "pushalarmutilsinterface.h"
+#include "driveutilities.h"
+#include "pushconncompletedtimercontainer.h"
+
+namespace java
+{
+
+namespace captain
+{
+class CoreInterface;
+}
+namespace comms
+{
+class CommsMessage;
+}
+namespace util
+{
+class Uid;
+}
+
+namespace push
+{
+
+class PushDataContainer;
+class PushAlarmHandler;
+class PushDBHandler;
+
+using java::captain::uids_t;
+
+/**
+ * This class implements ExtensionPlugin interface of Java Manager.
+ * I.e. this class is starting point for all push related tasks in the
+ * Java Captain process.
+ */
+OS_NONSHARABLE_CLASS(PushRegistryHandler) : public java::captain::ExtensionPluginInterface,
+        public java::comms::CommsListener,
+        public java::captain::ApplicationRuntimeEventsInterface,
+        public java::captain::ApplicationManagementEventsInterface,
+        public java::captain::EventConsumerInterface,
+        public PushAlarmUtilsInterface,
+        public PushConnCompletedTimerListener
+{
+public:
+
+    OS_IMPORT PushRegistryHandler();
+
+    OS_IMPORT virtual ~PushRegistryHandler();
+
+    // PluginInterface
+    virtual void startPlugin(java::captain::CoreInterface* aCore);
+    virtual void stopPlugin();
+
+    // ExtensionPluginInterface.
+    virtual ApplicationRuntimeEventsInterface* getApplicationRuntimeListener();
+    virtual ApplicationManagementEventsInterface* getApplicationManagementListener();
+    virtual EventConsumerInterface* getEventConsumer();
+
+
+    //Method of CommsListener.
+    virtual void processMessage(java::comms::CommsMessage& aMessage);
+
+    // ApplicationRuntimeEventsInterface
+    virtual void arLaunched(const Uid& aUID, const int& aRuntimeCommsAddress);
+    virtual void arTerminated(const Uid& aUID, const int& aExitCode);
+
+    // ApplicationManagementEventsInterface
+    virtual void amAdded(const uids_t& uids);
+    virtual void amUpdated(const uids_t& uids);
+    virtual void amDeleted(const uids_t& uids);
+
+    // EventConsumerInterface
+    virtual void event(const std::string& eventProvider,
+                       java::comms::CommsMessage& aMsg);
+
+    // PushConnCompletedTimerListener
+    virtual void connCompletedTimerExpired(const java::comms::CommsMessage& aMsg);
+
+private:
+
+    //Methods of PushAlarmUtilsInterface.
+    virtual bool launchMidlet(const java::util::Uid& aMidletUid,
+                              const int& aLaunchType);
+    virtual int getMediaIdByMidletUid(const java::util::Uid& aMidletUid);
+
+    //Datamembers.
+    //This class does not take ownership of this datamember.
+    java::captain::CoreInterface* mCore;
+    std::auto_ptr<PushDBHandler> mPushDbHandler;
+    std::auto_ptr<PushDataContainer> mPushDataContainer;
+    std::auto_ptr<PushAlarmHandler> mPushAlarmHandler;
+    //java::util::ScopedMutex mMutex;
+    java::fileutils::driveInfos mDriveInfo;
+    std::auto_ptr<PushConnCompletedTimerContainer> mConnCompletedTimerContainer;
+
+    //Internal operations.
+    void handleGetAllPushRegsMsg(java::comms::CommsMessage& aMsg);
+    void getUris(std::wstring& aNumOfUriBuf,std::wstring& aUriBuf);
+    void handleRegDynamicPushConnMsg(java::comms::CommsMessage& aMsg);
+    void handleUnregDynamicPushConnMsg(java::comms::CommsMessage& aMsg);
+    void handleRegisterAlarmMsg(java::comms::CommsMessage& aMsg);
+    void handleAllConnsFailedMsg(java::comms::CommsMessage& aMsg);
+    void handlePendingStatusMsg(java::comms::CommsMessage& aMsg);
+    void handleListConnectionsMsg(java::comms::CommsMessage& aMsg);
+    void handleDataOfPushConnQueryMsg(java::comms::CommsMessage& aMsg);
+    void handlePushUriStartsWithQueryMsg(java::comms::CommsMessage& aMsg);
+    void handleConnCompletedMsg(java::comms::CommsMessage& aMsg);
+    void sendCommsResponseInSuccessCase(int aMsgId,const java::util::Uid& aUid,
+                                        int aSenderOfOrigMsg,int aMsgRef);
+    void sendRegisterAlarmReply(int aSenderOfOrigMsg,const java::util::Uid& aUid,
+                                const long long& aTimeInMilliSecs,int aMsgRef);
+    void sendRegisterAlarmReplyInErrorCase(java::util::ExceptionBase& aEx,int aSenderOfOrigMsg,
+                                           const java::util::Uid& aUid,int aMsgRef);
+    void sendCommsResponseInErrorCase(java::util::ExceptionBase& aEx,int aMsgId,
+                                      const java::util::Uid& aUid,
+                                      int aSenderOfOrigMsg,int aMsgRef);
+    void sendPushUriStartsWithQueryReplyInErrorCase(java::comms::CommsMessage& aMsg);
+    void startPushMidlets();
+    void deleteAppData(const java::util::Uid& aUid,const bool& aDeleteAlarm);
+    void readAppData(const java::util::Uid& aUid,const bool& aUpdateAlarm);
+    void manageDriveInsertion(const java::fileutils::driveInfo& aDriveInfo);
+    void manageDriveRemoval(const java::fileutils::driveInfo& aDriveInfo);
+    void startOrKillMidlet(const unsigned int aMediaId,bool aTerminateMidlet);
+    void removeDriveFromContainer(const java::fileutils::driveInfo& aDriveInfo);
+    bool isDriveAvailable(int aMediaId);
+    void readUidArg(java::comms::CommsMessage& aMsg,const std::string& aMsgName,java::util::Uid& aUid);
+    void readWStrArg(java::comms::CommsMessage& aMsg,const std::string& aMsgName,std::wstring& aUri);
+    int readIntAsBooleanArg(java::comms::CommsMessage& aMsg,const std::string& aMsgName);
+    int readIntArg(java::comms::CommsMessage& aMsg,const std::string& aMsgName);
+    long long readLongLongArg(CommsMessage& aMsg,const std::string& aMsgName);
+
+    //Not implemented.
+    PushRegistryHandler(const PushRegistryHandler &x);
+    PushRegistryHandler &operator=(const PushRegistryHandler &x);
+};
+
+}//end namespace push
+}//end namespace java
+
+#endif // PUSHREGISTRYHANDLER_H