diff -r e8e63152f320 -r 2a9601315dfc javaextensions/midppush/pushregistryplugin/inc/pushregistryhandler.h --- /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 + +#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 mPushDbHandler; + std::auto_ptr mPushDataContainer; + std::auto_ptr mPushAlarmHandler; + //java::util::ScopedMutex mMutex; + java::fileutils::driveInfos mDriveInfo; + std::auto_ptr 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