Add an abstract class ConnectionManager.
This class provides interfaces for implementation of transport layer.
Change-Id: Ie85788a44bebb597075e07655fe1a83fe14bdbb4
Signed-off-by: Sangyoon Jang <jeremy.jang@samsung.com>
#include <signal.h>
#include <sys/signalfd.h>
-#include "src/utils/logging.h"
+#include <functional>
-// iotivity headers should be included before boost headers...
-// this makes compilation warning. (redefinition)
-#include "src/iotivity.h"
#include "src/capability_manager.h"
+#include "src/connection_manager.h"
#include "src/dbus_service.h"
#include "src/package_event_listener.h"
+#include "src/utils/logging.h"
namespace {
namespace capmgr {
-Capmgr::Capmgr() {
+Capmgr::Capmgr(CapabilityManager* capmgr, ConnectionManager* connmgr,
+ DBusService* dbus, PackageEventListener* pkgmgr)
+ : cm_(capmgr), connmgr_(connmgr), dbus_(dbus), pkgmgr_(pkgmgr) {
loop_ = g_main_loop_new(nullptr, FALSE);
if (!loop_)
LOG(ERROR) << "Failed to create main loop";
src_ = RegisterSignalHandler();
if (src_ == 0)
LOG(ERROR) << "Failed to register signal handler";
-
- cm_.reset(new CapabilityManager());
- dbus_.reset(new DBusService());
- // get raw pointer from unique_ptr. is it ok?
- iotivity_.reset(new Iotivity(cm_.get()));
- pkgmgr_.reset(new PackageEventListener());
}
Capmgr::~Capmgr() {
bool Capmgr::Initialize() {
cm_->LoadCapabilities();
- iotivity_->RegisterResource();
+ connmgr_->RegisterEndpoint();
pkgmgr_->SubscribePackageEvent();
+
+ DBusService::RegisterMethodHandler("DiscoverUnownedDevices", std::bind(
+ &ConnectionManager::FindDevices, connmgr_.get()));
+ DBusService::RegisterMethodHandler("ExchangeCapabilities", std::bind(
+ &ConnectionManager::ExchangeCapabilities, connmgr_.get()));
+
return true;
}
namespace capmgr {
class CapabilityManager;
+class ConnectionManager;
class DBusService;
-class Iotivity;
class PackageEventListener;
class Capmgr {
public:
- Capmgr();
+ explicit Capmgr(CapabilityManager* capmgr, ConnectionManager* connmgr,
+ DBusService* dbus, PackageEventListener* pkgmgr);
~Capmgr();
bool Initialize();
guint src_;
std::unique_ptr<CapabilityManager> cm_;
+ std::unique_ptr<ConnectionManager> connmgr_;
std::unique_ptr<DBusService> dbus_;
std::unique_ptr<PackageEventListener> pkgmgr_;
- std::unique_ptr<Iotivity> iotivity_;
};
} // namespace capmgr
--- /dev/null
+// Copyright (c) 2018 Samsung Electronics Co., Ltd All Rights Reserved
+// Use of this source code is governed by a apache 2.0 license that can be
+// found in the LICENSE file.
+
+#ifndef CONNECTION_MANAGER_H_
+#define CONNECTION_MANAGER_H_
+
+namespace capmgr {
+
+class CapabilityManager;
+
+class ConnectionManager {
+ public:
+ explicit ConnectionManager(CapabilityManager* capmgr) : capmgr_(capmgr) {}
+
+ virtual void FindDevices() = 0;
+ virtual void RegisterEndpoint() = 0;
+ virtual void ExchangeCapabilities() = 0;
+
+ protected:
+ CapabilityManager* capmgr_;
+};
+
+} // namespace capmgr
+
+#endif // CONNECTION_MANAGER_H_
#include <iostream>
#include <string>
+#include "src/capability.h"
#include "src/capability_manager.h"
-#include "src/dbus_service.h"
#include "src/utils/logging.h"
namespace {
namespace capmgr {
-Iotivity::Iotivity(CapabilityManager* capmgr) {
+Iotivity::Iotivity(CapabilityManager* capmgr) : ConnectionManager(capmgr) {
OCSetOtmEventHandler(nullptr, OtmEventCb);
ps_ = {
kSystemTime);
result = OCPlatform::registerPlatformInfo(platformInfo);
*/
+}
- DBusService::RegisterMethodHandler("DiscoverUnownedDevices", std::bind(
- &Iotivity::DiscoverUnownedDevices, this));
- DBusService::RegisterMethodHandler("ExchangeCapabilities", std::bind(
- &Iotivity::ExchangeCapabilities, this));
+Iotivity::~Iotivity() {
+}
- capmgr_ = capmgr;
+void Iotivity::FindDevices() {
+ DiscoverUnownedDevices();
}
-Iotivity::~Iotivity() {
+void Iotivity::RegisterEndpoint() {
+ RegisterResource();
+}
+
+void Iotivity::ExchangeCapabilities() {
+ for (const auto& it : resource_list_)
+ GetResource(it.second);
}
void Iotivity::RegisterResource() {
LOG(ERROR) << "OCPlatform::findResource() failed: " << result;
}
-void Iotivity::ExchangeCapabilities() {
- for (const auto& it : resource_list_)
- GetResource(it.second);
-}
-
void Iotivity::DiscoverUnownedDevices() {
if (OC::OCSecure::provisionInit(PM_DB_PATH) != OC_STACK_OK)
LOG(ERROR) << "provisionInit() failed!";
#include <map>
#include <memory>
+#include "src/connection_manager.h"
+
namespace capmgr {
class CapabilityManager;
-class Iotivity {
+class Iotivity : public ConnectionManager {
public:
- Iotivity(CapabilityManager* capmgr);
+ explicit Iotivity(CapabilityManager* capmgr);
~Iotivity();
+ void FindDevices() override;
+ void RegisterEndpoint() override;
+ void ExchangeCapabilities() override;
+
+ private:
void RegisterResource();
void FindResource(const std::string& addr);
- void ExchangeCapabilities();
void DiscoverUnownedDevices();
-
- private:
void OwnershipTransfer();
void GetResource(std::shared_ptr<OC::OCResource> resource);
OCEntityHandlerResult EntityCb(
std::map<OC::OCResourceIdentifier, std::shared_ptr<OC::OCResource>>
resource_list_;
OC::DeviceList_t unowned_dev_list_;
-
- CapabilityManager* capmgr_;
};
} // namespace capmgr
// Use of this source code is governed by a apache 2.0 license that can be
// found in the LICENSE file.
+// iotivity headers should be included before boost headers...
+// this makes compilation warning. (redefinition)
+#include "src/iotivity.h"
+#include "src/capability_manager.h"
#include "src/capmgr.h"
+#include "src/dbus_service.h"
+#include "src/package_event_listener.h"
#include "src/utils/logging.h"
int main(int argc, char* argv[]) {
- capmgr::Capmgr capmgr;
+ capmgr::CapabilityManager *cm = new capmgr::CapabilityManager();
+ capmgr::Iotivity* iotivity = new capmgr::Iotivity(cm);
+ capmgr::DBusService* dbus = new capmgr::DBusService();
+ capmgr::PackageEventListener* pkgmgr = new capmgr::PackageEventListener();
+ capmgr::Capmgr capmgr(cm, iotivity, dbus, pkgmgr);
if (!capmgr.Initialize()) {
LOG(ERROR) << "Initialize failed!";
return 1;