From eeef76dbce51f8ea40039ba410c81c6ca0f6bfed Mon Sep 17 00:00:00 2001
From: Pawel Andruszkiewicz
Date: Wed, 8 Apr 2015 11:18:56 +0200
Subject: [PATCH] [Alarm] Allow to create multiple instances of AlarmInstance
class.
Change-Id: I111f0a4e6f1e8808ef5ae385bc6d939ebf4a8762
---
src/alarm/alarm_extension.cc | 2 +-
src/alarm/alarm_instance.cc | 24 +++++++-----------------
src/alarm/alarm_instance.h | 7 +++++--
src/alarm/alarm_manager.cc | 5 -----
src/alarm/alarm_manager.h | 3 +--
5 files changed, 14 insertions(+), 27 deletions(-)
diff --git a/src/alarm/alarm_extension.cc b/src/alarm/alarm_extension.cc
index 2da84bf2..0466e1e3 100644
--- a/src/alarm/alarm_extension.cc
+++ b/src/alarm/alarm_extension.cc
@@ -32,5 +32,5 @@ AlarmExtension::AlarmExtension() {
AlarmExtension::~AlarmExtension() {}
common::Instance* AlarmExtension::CreateInstance() {
- return &extension::alarm::AlarmInstance::GetInstance();
+ return new extension::alarm::AlarmInstance();
}
diff --git a/src/alarm/alarm_instance.cc b/src/alarm/alarm_instance.cc
index 82bd3df7..cef4db31 100644
--- a/src/alarm/alarm_instance.cc
+++ b/src/alarm/alarm_instance.cc
@@ -4,7 +4,6 @@
#include "alarm_instance.h"
-#include "alarm_manager.h"
#include "common/picojson.h"
#include "common/logger.h"
@@ -13,35 +12,26 @@ namespace alarm {
using namespace common;
-namespace {
-AlarmManager* alarm_manager = &AlarmManager::GetInstance();
-}
-
-AlarmInstance& AlarmInstance::GetInstance() {
- static AlarmInstance instance;
- return instance;
-}
-
AlarmInstance::AlarmInstance() {
LoggerD("Entered");
using namespace std::placeholders;
RegisterSyncHandler("AlarmManager_add",
- std::bind(&AlarmManager::Add, alarm_manager, _1, _2));
+ std::bind(&AlarmManager::Add, &manager_, _1, _2));
RegisterSyncHandler("AlarmManager_remove",
- std::bind(&AlarmManager::Remove, alarm_manager, _1, _2));
+ std::bind(&AlarmManager::Remove, &manager_, _1, _2));
RegisterSyncHandler("AlarmManager_removeAll",
- std::bind(&AlarmManager::RemoveAll, alarm_manager, _1, _2));
+ std::bind(&AlarmManager::RemoveAll, &manager_, _1, _2));
RegisterSyncHandler("AlarmManager_get",
- std::bind(&AlarmManager::Get, alarm_manager, _1, _2));
+ std::bind(&AlarmManager::Get, &manager_, _1, _2));
RegisterSyncHandler("AlarmManager_getAll",
- std::bind(&AlarmManager::GetAll, alarm_manager, _1, _2));
+ std::bind(&AlarmManager::GetAll, &manager_, _1, _2));
//AlarmRelative
RegisterSyncHandler("AlarmRelative_getRemainingSeconds",
- std::bind(&AlarmManager::GetRemainingSeconds, alarm_manager, _1, _2));
+ std::bind(&AlarmManager::GetRemainingSeconds, &manager_, _1, _2));
//AlarmAbsolute
RegisterSyncHandler("AlarmAbsolute_getNextScheduledDate",
- std::bind(&AlarmManager::GetNextScheduledDate, alarm_manager, _1, _2));
+ std::bind(&AlarmManager::GetNextScheduledDate, &manager_, _1, _2));
}
AlarmInstance::~AlarmInstance() {
diff --git a/src/alarm/alarm_instance.h b/src/alarm/alarm_instance.h
index cd7ee19c..f1c56c33 100644
--- a/src/alarm/alarm_instance.h
+++ b/src/alarm/alarm_instance.h
@@ -7,15 +7,18 @@
#include "common/extension.h"
+#include "alarm/alarm_manager.h"
+
namespace extension {
namespace alarm {
class AlarmInstance: public common::ParsedInstance {
public:
- static AlarmInstance& GetInstance();
- private:
AlarmInstance();
virtual ~AlarmInstance();
+
+ private:
+ AlarmManager manager_;
};
} // namespace alarm
diff --git a/src/alarm/alarm_manager.cc b/src/alarm/alarm_manager.cc
index a92ed8c9..cf65e0a6 100644
--- a/src/alarm/alarm_manager.cc
+++ b/src/alarm/alarm_manager.cc
@@ -55,11 +55,6 @@ AlarmManager::AlarmManager() {
AlarmManager::~AlarmManager() {
}
-AlarmManager& AlarmManager::GetInstance() {
- static AlarmManager instance;
- return instance;
-}
-
void AlarmManager::Add(const picojson::value& args, picojson::object& out) {
LoggerD("Entered");
CHECK_PRIVILEGE_ACCESS(kPrivilegeAlarm, &out);
diff --git a/src/alarm/alarm_manager.h b/src/alarm/alarm_manager.h
index 944bef66..9b8c678e 100644
--- a/src/alarm/alarm_manager.h
+++ b/src/alarm/alarm_manager.h
@@ -13,7 +13,7 @@ namespace alarm {
class AlarmManager {
public:
- static AlarmManager& GetInstance();
+ AlarmManager();
virtual ~AlarmManager();
void Add(const picojson::value& args, picojson::object& out);
@@ -28,7 +28,6 @@ class AlarmManager {
void GetNextScheduledDate(const picojson::value& args, picojson::object& out);
private:
- AlarmManager();
AlarmManager(const AlarmManager&) = delete;
AlarmManager& operator=(const AlarmManager&) = delete;
common::PlatformResult GetAlarm(int id, picojson::object& obj);
--
2.34.1