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