Added a way to deinitialize running services
authorPhilip Rauwolf <rauwolf@itestra.de>
Thu, 28 Feb 2013 18:05:47 +0000 (19:05 +0100)
committerPhilip Rauwolf <rauwolf@itestra.de>
Thu, 28 Feb 2013 18:05:47 +0000 (19:05 +0100)
src/CommonAPI/DBus/DBusStubAdapter.cpp
src/CommonAPI/DBus/DBusStubAdapter.h
src/CommonAPI/DBus/DBusStubAdapterHelper.h
src/test/commonapi/tests/TestInterfaceStubDefault.cpp
src/test/commonapi/tests/TestInterfaceStubDefault.h

index 27a10fe..67cfacd 100644 (file)
@@ -41,10 +41,13 @@ DBusStubAdapter::DBusStubAdapter(const std::string& commonApiAddress,
 }
 
 DBusStubAdapter::~DBusStubAdapter() {
+}
+
+void DBusStubAdapter::deinit() {
        assert(dbusConnection_);
        assert(isInitialized_);
 
-    dbusConnection_->getDBusObjectManager()->unregisterInterfaceHandler(dbusIntrospectionInterfaceHandlerToken_);
+       dbusConnection_->getDBusObjectManager()->unregisterInterfaceHandler(dbusIntrospectionInterfaceHandlerToken_);
        dbusConnection_->getDBusObjectManager()->unregisterInterfaceHandler(dbusInterfaceHandlerToken_);
 }
 
index 7b8e98a..fafea2e 100644 (file)
@@ -29,6 +29,7 @@ class DBusStubAdapter: virtual public CommonAPI::StubAdapter {
     virtual ~DBusStubAdapter();
 
     virtual void init();
+    virtual void deinit();
 
     virtual const std::string getAddress() const;
     virtual const std::string& getDomain() const;
index 1da9349..a88eeb2 100644 (file)
@@ -43,13 +43,20 @@ class DBusStubAdapterHelper: public DBusStubAdapter, public std::enable_shared_f
                     stub_(stub) {
     }
 
-    virtual ~DBusStubAdapterHelper() { }
+    virtual ~DBusStubAdapterHelper() {
+       stub_->deinitStubAdapter();
+    }
 
     virtual void init() {
         DBusStubAdapter::init();
         remoteEventHandler_ = stub_->initStubAdapter(getStubAdapter());
     }
 
+    virtual void deinit() {
+        DBusStubAdapter::deinit();
+        stub_->deinitStubAdapter();
+    }
+
     inline std::shared_ptr<StubAdapterType> getStubAdapter() {
         return this->shared_from_this();
     }
index 30e7e24..c5e7e35 100644 (file)
@@ -15,6 +15,10 @@ TestInterfaceStubRemoteEvent* TestInterfaceStubDefault::initStubAdapter(const st
     return &remoteEventHandler_;
 }
 
+void TestInterfaceStubDefault::deinitStubAdapter() {
+       stubAdapter_.reset();
+}
+
 const uint32_t& TestInterfaceStubDefault::getTestPredefinedTypeAttributeAttribute() {
     return testPredefinedTypeAttributeAttributeValue_;
 }
index 50c803e..bc5cdff 100644 (file)
@@ -14,6 +14,7 @@ class TestInterfaceStubDefault : public TestInterfaceStub {
     TestInterfaceStubDefault();
 
     TestInterfaceStubRemoteEvent* initStubAdapter(const std::shared_ptr<TestInterfaceStubAdapter>& stubAdapter);
+    void deinitStubAdapter();
 
     virtual const uint32_t& getTestPredefinedTypeAttributeAttribute();
     virtual void setTestPredefinedTypeAttributeAttribute(uint32_t value);