Remove useless callback layer from Host*Connection 36/40736/3
authorLukasz Kostyra <l.kostyra@samsung.com>
Tue, 26 May 2015 06:52:19 +0000 (08:52 +0200)
committerJan Olszak <j.olszak@samsung.com>
Mon, 8 Jun 2015 15:17:29 +0000 (08:17 -0700)
[Bug]           Host*Connection classes had redundant callback layer.
[Cause]         N/A
[Solution]      Make Host*Connection objects aware of ZonesManager.
                Remove unneeded callbacks.
[Verification]  For both with and without Dbus:
                  * Build
                  * Run tests
                  * Make sure, that vasum-cli works

Change-Id: I8fd76d279731efdf201e797f2ef7600aed355aaa

server/host-dbus-connection.cpp
server/host-dbus-connection.hpp
server/host-ipc-connection.cpp
server/host-ipc-connection.hpp
server/zones-manager.cpp
server/zones-manager.hpp
tests/unit_tests/client/ut-client.cpp

index ad0ba0d..7714b65 100644 (file)
@@ -32,6 +32,7 @@
 
 #include "logger/logger.hpp"
 #include "config/manager.hpp"
+#include "zones-manager.hpp"
 
 namespace vasum {
 
@@ -41,13 +42,15 @@ namespace {
 // Can happen if glib loop is busy or not present.
 // TODO: this should be in host's configuration file
 const unsigned int NAME_ACQUIRED_TIMEOUT = 5 * 1000;
+const std::string EMPTY_CALLER = "";
 
 } // namespace
 
 
-HostDbusConnection::HostDbusConnection()
+HostDbusConnection::HostDbusConnection(ZonesManager* zonesManagerPtr)
     : mNameAcquired(false)
     , mNameLost(false)
+    , mZonesManagerPtr(zonesManagerPtr)
 {
     LOGT("Connecting to host system DBUS");
     mDbusConnection = dbus::DbusConnection::createSystem();
@@ -117,151 +120,6 @@ void HostDbusConnection::setProxyCallCallback(const ProxyCallCallback& callback)
     mProxyCallCallback = callback;
 }
 
-void HostDbusConnection::setGetZoneConnectionsCallback(const GetZoneConnectionsCallback& callback)
-{
-    mGetZoneConnectionsCallback = callback;
-}
-
-void HostDbusConnection::setGetZoneIdsCallback(const GetZoneIdsCallback& callback)
-{
-    mGetZoneIdsCallback = callback;
-}
-
-void HostDbusConnection::setGetActiveZoneIdCallback(const GetActiveZoneIdCallback& callback)
-{
-    mGetActiveZoneIdCallback = callback;
-}
-
-void HostDbusConnection::setGetZoneInfoCallback(const GetZoneInfoCallback& callback)
-{
-    mGetZoneInfoCallback = callback;
-}
-
-void HostDbusConnection::setSetNetdevAttrsCallback(const SetNetdevAttrsCallback& callback)
-{
-    mSetNetdevAttrsCallback = callback;
-}
-
-void HostDbusConnection::setGetNetdevAttrsCallback(const GetNetdevAttrsCallback& callback)
-{
-    mGetNetdevAttrsCallback = callback;
-}
-
-void HostDbusConnection::setGetNetdevListCallback(const GetNetdevListCallback& callback)
-{
-    mGetNetdevListCallback = callback;
-}
-
-void HostDbusConnection::setCreateNetdevVethCallback(const CreateNetdevVethCallback& callback)
-{
-    mCreateNetdevVethCallback = callback;
-}
-
-void HostDbusConnection::setCreateNetdevMacvlanCallback(const CreateNetdevMacvlanCallback& callback)
-{
-    mCreateNetdevMacvlanCallback = callback;
-}
-
-void HostDbusConnection::setCreateNetdevPhysCallback(const CreateNetdevPhysCallback& callback)
-{
-    mCreateNetdevPhysCallback = callback;
-}
-
-void HostDbusConnection::setDestroyNetdevCallback(const DestroyNetdevCallback& callback)
-{
-    mDestroyNetdevCallback = callback;
-}
-
-void HostDbusConnection::setDeleteNetdevIpAddressCallback(const DeleteNetdevIpAddressCallback& callback)
-{
-    mDeleteNetdevIpAddressCallback = callback;
-}
-
-void HostDbusConnection::setDeclareFileCallback(const DeclareFileCallback& callback)
-{
-    mDeclareFileCallback = callback;
-}
-
-void HostDbusConnection::setDeclareMountCallback(const DeclareMountCallback& callback)
-{
-    mDeclareMountCallback = callback;
-}
-
-void HostDbusConnection::setDeclareLinkCallback(const DeclareLinkCallback& callback)
-{
-    mDeclareLinkCallback = callback;
-}
-
-void HostDbusConnection::setGetDeclarationsCallback(const GetDeclarationsCallback& callback)
-{
-    mGetDeclarationsCallback = callback;
-}
-
-void HostDbusConnection::setRemoveDeclarationCallback(const RemoveDeclarationCallback& callback)
-{
-    mRemoveDeclarationCallback =  callback;
-}
-
-void HostDbusConnection::setSetActiveZoneCallback(const SetActiveZoneCallback& callback)
-{
-    mSetActiveZoneCallback = callback;
-}
-
-void HostDbusConnection::setCreateZoneCallback(const CreateZoneCallback& callback)
-{
-    mCreateZoneCallback = callback;
-}
-
-void HostDbusConnection::setDestroyZoneCallback(const DestroyZoneCallback& callback)
-{
-    mDestroyZoneCallback = callback;
-}
-
-void HostDbusConnection::setShutdownZoneCallback(const ShutdownZoneCallback& callback)
-{
-    mShutdownZoneCallback = callback;
-}
-
-void HostDbusConnection::setStartZoneCallback(const StartZoneCallback& callback)
-{
-    mStartZoneCallback = callback;
-}
-
-void HostDbusConnection::setLockZoneCallback(const LockZoneCallback& callback)
-{
-    mLockZoneCallback = callback;
-}
-
-void HostDbusConnection::setUnlockZoneCallback(const UnlockZoneCallback& callback)
-{
-    mUnlockZoneCallback = callback;
-}
-
-void HostDbusConnection::setGrantDeviceCallback(const GrantDeviceCallback& callback)
-{
-    mGrantDeviceCallback = callback;
-}
-
-void HostDbusConnection::setRevokeDeviceCallback(const RevokeDeviceCallback& callback)
-{
-    mRevokeDeviceCallback = callback;
-}
-
-void HostDbusConnection::setNotifyActiveZoneCallback(const NotifyActiveZoneCallback& callback)
-{
-    mNotifyActiveZoneCallback = callback;
-}
-
-void HostDbusConnection::setSwitchToDefaultCallback(const SwitchToDefaultCallback& callback)
-{
-    mSwitchToDefaultCallback = callback;
-}
-
-void HostDbusConnection::setFileMoveCallback(const FileMoveCallback& callback)
-{
-    mFileMoveCallback = callback;
-}
-
 void HostDbusConnection::onMessageCall(const std::string& objectPath,
                                    const std::string& interface,
                                    const std::string& methodName,
@@ -276,10 +134,8 @@ void HostDbusConnection::onMessageCall(const std::string& objectPath,
         api::ZoneId zoneId;
         config::loadFromGVariant(parameters, zoneId);
 
-        if (mSetActiveZoneCallback) {
-            auto rb = std::make_shared<api::DbusMethodResultBuilder<api::Void>>(result);
-            mSetActiveZoneCallback(zoneId, rb);
-        }
+        auto rb = std::make_shared<api::DbusMethodResultBuilder<api::Void>>(result);
+        mZonesManagerPtr->handleSetActiveZoneCall(zoneId, rb);
         return;
     }
 
@@ -313,18 +169,14 @@ void HostDbusConnection::onMessageCall(const std::string& objectPath,
     }
 
     if (methodName == api::dbus::METHOD_GET_ZONE_ID_LIST) {
-        if (mGetZoneIdsCallback) {
-            auto rb = std::make_shared<api::DbusMethodResultBuilder<api::ZoneIds>>(result);
-            mGetZoneIdsCallback(rb);
-        }
+        auto rb = std::make_shared<api::DbusMethodResultBuilder<api::ZoneIds>>(result);
+        mZonesManagerPtr->handleGetZoneIdsCall(rb);
         return;
     }
 
     if (methodName == api::dbus::METHOD_GET_ACTIVE_ZONE_ID) {
-        if (mGetActiveZoneIdCallback) {
-            auto rb = std::make_shared<api::DbusMethodResultBuilder<api::ZoneId>>(result);
-            mGetActiveZoneIdCallback(rb);
-        }
+        auto rb = std::make_shared<api::DbusMethodResultBuilder<api::ZoneId>>(result);
+        mZonesManagerPtr->handleGetActiveZoneIdCall(rb);
         return;
     }
 
@@ -332,10 +184,8 @@ void HostDbusConnection::onMessageCall(const std::string& objectPath,
         api::ZoneId zoneId;
         config::loadFromGVariant(parameters, zoneId);
 
-        if (mGetZoneInfoCallback) {
-            auto rb = std::make_shared<api::DbusMethodResultBuilder<api::ZoneInfoOut>>(result);
-            mGetZoneInfoCallback(zoneId, rb);
-        }
+        auto rb = std::make_shared<api::DbusMethodResultBuilder<api::ZoneInfoOut>>(result);
+        mZonesManagerPtr->handleGetZoneInfoCall(zoneId, rb);
         return;
     }
 
@@ -343,10 +193,8 @@ void HostDbusConnection::onMessageCall(const std::string& objectPath,
         api::SetNetDevAttrsIn data;
         config::loadFromGVariant(parameters, data);
 
-        if (mSetNetdevAttrsCallback) {
-            auto rb = std::make_shared<api::DbusMethodResultBuilder<api::Void>>(result);
-            mSetNetdevAttrsCallback(data, rb);
-        }
+        auto rb = std::make_shared<api::DbusMethodResultBuilder<api::Void>>(result);
+        mZonesManagerPtr->handleSetNetdevAttrsCall(data, rb);
         return;
     }
 
@@ -354,10 +202,8 @@ void HostDbusConnection::onMessageCall(const std::string& objectPath,
         api::GetNetDevAttrsIn data;
         config::loadFromGVariant(parameters, data);
 
-        if (mGetNetdevAttrsCallback) {
-            auto rb = std::make_shared<api::DbusMethodResultBuilder<api::GetNetDevAttrs>>(result);
-            mGetNetdevAttrsCallback(data, rb);
-        }
+        auto rb = std::make_shared<api::DbusMethodResultBuilder<api::GetNetDevAttrs>>(result);
+        mZonesManagerPtr->handleGetNetdevAttrsCall(data, rb);
         return;
     }
 
@@ -365,10 +211,8 @@ void HostDbusConnection::onMessageCall(const std::string& objectPath,
         api::ZoneId data;
         config::loadFromGVariant(parameters, data);
 
-        if (mGetNetdevListCallback) {
-            auto rb = std::make_shared<api::DbusMethodResultBuilder<api::NetDevList>>(result);
-            mGetNetdevListCallback(data, rb);
-        }
+        auto rb = std::make_shared<api::DbusMethodResultBuilder<api::NetDevList>>(result);
+        mZonesManagerPtr->handleGetNetdevListCall(data, rb);
         return;
     }
 
@@ -376,10 +220,8 @@ void HostDbusConnection::onMessageCall(const std::string& objectPath,
         api::CreateNetDevVethIn data;
         config::loadFromGVariant(parameters, data);
 
-        if (mCreateNetdevVethCallback) {
-            auto rb = std::make_shared<api::DbusMethodResultBuilder<api::Void>>(result);
-            mCreateNetdevVethCallback(data, rb);
-        }
+        auto rb = std::make_shared<api::DbusMethodResultBuilder<api::Void>>(result);
+        mZonesManagerPtr->handleCreateNetdevVethCall(data, rb);
         return;
     }
 
@@ -387,49 +229,44 @@ void HostDbusConnection::onMessageCall(const std::string& objectPath,
         api::CreateNetDevMacvlanIn data;
         config::loadFromGVariant(parameters, data);
 
-        if (mCreateNetdevMacvlanCallback) {
-            auto rb = std::make_shared<api::DbusMethodResultBuilder<api::Void>>(result);
-            mCreateNetdevMacvlanCallback(data, rb);
-        }
+        auto rb = std::make_shared<api::DbusMethodResultBuilder<api::Void>>(result);
+        mZonesManagerPtr->handleCreateNetdevMacvlanCall(data, rb);
+        return;
     }
 
     if (methodName == api::dbus::METHOD_CREATE_NETDEV_PHYS) {
         api::CreateNetDevPhysIn data;
         config::loadFromGVariant(parameters, data);
 
-        if (mCreateNetdevPhysCallback) {
-            auto rb = std::make_shared<api::DbusMethodResultBuilder<api::Void>>(result);
-            mCreateNetdevPhysCallback(data, rb);
-        }
+        auto rb = std::make_shared<api::DbusMethodResultBuilder<api::Void>>(result);
+        mZonesManagerPtr->handleCreateNetdevPhysCall(data, rb);
+        return;
     }
 
     if (methodName == api::dbus::METHOD_DESTROY_NETDEV) {
         api::DestroyNetDevIn data;
         config::loadFromGVariant(parameters, data);
 
-        if (mDestroyNetdevCallback) {
-            auto rb = std::make_shared<api::DbusMethodResultBuilder<api::Void>>(result);
-            mDestroyNetdevCallback(data, rb);
-        }
+        auto rb = std::make_shared<api::DbusMethodResultBuilder<api::Void>>(result);
+        mZonesManagerPtr->handleDestroyNetdevCall(data, rb);
+        return;
     }
 
     if (methodName == api::dbus::METHOD_DELETE_NETDEV_IP_ADDRESS) {
         api::DeleteNetdevIpAddressIn data;
         config::loadFromGVariant(parameters, data);
-        if (mDeleteNetdevIpAddressCallback) {
-            auto rb = std::make_shared<api::DbusMethodResultBuilder<api::Void>>(result);
-            mDeleteNetdevIpAddressCallback(data, rb);
-        }
+
+        auto rb = std::make_shared<api::DbusMethodResultBuilder<api::Void>>(result);
+        mZonesManagerPtr->handleDeleteNetdevIpAddressCall(data, rb);
+        return;
     }
 
     if (methodName == api::dbus::METHOD_DECLARE_FILE) {
         api::DeclareFileIn data;
         config::loadFromGVariant(parameters, data);
 
-        if (mDeclareFileCallback) {
-            auto rb = std::make_shared<api::DbusMethodResultBuilder<api::Declaration>>(result);
-            mDeclareFileCallback(data, rb);
-        }
+        auto rb = std::make_shared<api::DbusMethodResultBuilder<api::Declaration>>(result);
+        mZonesManagerPtr->handleDeclareFileCall(data, rb);
         return;
     }
 
@@ -437,10 +274,8 @@ void HostDbusConnection::onMessageCall(const std::string& objectPath,
         api::DeclareMountIn data;
         config::loadFromGVariant(parameters, data);
 
-        if (mDeclareMountCallback) {
-            auto rb = std::make_shared<api::DbusMethodResultBuilder<api::Declaration>>(result);
-            mDeclareMountCallback(data, rb);
-        }
+        auto rb = std::make_shared<api::DbusMethodResultBuilder<api::Declaration>>(result);
+        mZonesManagerPtr->handleDeclareMountCall(data, rb);
         return;
     }
 
@@ -448,10 +283,8 @@ void HostDbusConnection::onMessageCall(const std::string& objectPath,
         api::DeclareLinkIn data;
         config::loadFromGVariant(parameters, data);
 
-        if (mDeclareLinkCallback) {
-            auto rb = std::make_shared<api::DbusMethodResultBuilder<api::Declaration>>(result);
-            mDeclareLinkCallback(data, rb);
-        }
+        auto rb = std::make_shared<api::DbusMethodResultBuilder<api::Declaration>>(result);
+        mZonesManagerPtr->handleDeclareLinkCall(data, rb);
         return;
     }
 
@@ -459,10 +292,8 @@ void HostDbusConnection::onMessageCall(const std::string& objectPath,
         api::ZoneId data;
         config::loadFromGVariant(parameters, data);
 
-        if (mGetDeclarationsCallback) {
-            auto rb = std::make_shared<api::DbusMethodResultBuilder<api::Declarations>>(result);
-            mGetDeclarationsCallback(data, rb);
-        }
+        auto rb = std::make_shared<api::DbusMethodResultBuilder<api::Declarations>>(result);
+        mZonesManagerPtr->handleGetDeclarationsCall(data, rb);
         return;
     }
 
@@ -470,10 +301,8 @@ void HostDbusConnection::onMessageCall(const std::string& objectPath,
         api::RemoveDeclarationIn data;
         config::loadFromGVariant(parameters, data);
 
-        if (mRemoveDeclarationCallback) {
-            auto rb = std::make_shared<api::DbusMethodResultBuilder<api::Void>>(result);
-            mRemoveDeclarationCallback(data, rb);
-        }
+        auto rb = std::make_shared<api::DbusMethodResultBuilder<api::Void>>(result);
+        mZonesManagerPtr->handleRemoveDeclarationCall(data, rb);
         return;
     }
 
@@ -481,10 +310,8 @@ void HostDbusConnection::onMessageCall(const std::string& objectPath,
         api::CreateZoneIn data;
         config::loadFromGVariant(parameters, data);
 
-        if (mCreateZoneCallback) {
-            auto rb = std::make_shared<api::DbusMethodResultBuilder<api::Void>>(result);
-            mCreateZoneCallback(data, rb);
-        }
+        auto rb = std::make_shared<api::DbusMethodResultBuilder<api::Void>>(result);
+        mZonesManagerPtr->handleCreateZoneCall(data, rb);
         return;
     }
 
@@ -492,10 +319,8 @@ void HostDbusConnection::onMessageCall(const std::string& objectPath,
         api::ZoneId data;
         config::loadFromGVariant(parameters, data);
 
-        if (mDestroyZoneCallback) {
-            auto rb = std::make_shared<api::DbusMethodResultBuilder<api::Void>>(result);
-            mDestroyZoneCallback(data, rb);
-        }
+        auto rb = std::make_shared<api::DbusMethodResultBuilder<api::Void>>(result);
+        mZonesManagerPtr->handleDestroyZoneCall(data, rb);
         return;
     }
 
@@ -503,30 +328,25 @@ void HostDbusConnection::onMessageCall(const std::string& objectPath,
         api::ZoneId data;
         config::loadFromGVariant(parameters, data);
 
-        if (mShutdownZoneCallback) {
-            auto rb = std::make_shared<api::DbusMethodResultBuilder<api::Void>>(result);
-            mShutdownZoneCallback(data, rb);
-        }
+        auto rb = std::make_shared<api::DbusMethodResultBuilder<api::Void>>(result);
+        mZonesManagerPtr->handleShutdownZoneCall(data, rb);
+        return;
     }
 
     if (methodName == api::dbus::METHOD_START_ZONE) {
         api::ZoneId data;
         config::loadFromGVariant(parameters, data);
 
-        if (mStartZoneCallback) {
-            auto rb = std::make_shared<api::DbusMethodResultBuilder<api::Void>>(result);
-            mStartZoneCallback(data, rb);
-        }
+        auto rb = std::make_shared<api::DbusMethodResultBuilder<api::Void>>(result);
+        mZonesManagerPtr->handleStartZoneCall(data, rb);
     }
 
     if (methodName == api::dbus::METHOD_LOCK_ZONE) {
         api::ZoneId data;
         config::loadFromGVariant(parameters, data);
 
-        if (mLockZoneCallback) {
-            auto rb = std::make_shared<api::DbusMethodResultBuilder<api::Void>>(result);
-            mLockZoneCallback(data, rb);
-        }
+        auto rb = std::make_shared<api::DbusMethodResultBuilder<api::Void>>(result);
+        mZonesManagerPtr->handleLockZoneCall(data, rb);
         return;
     }
 
@@ -534,10 +354,8 @@ void HostDbusConnection::onMessageCall(const std::string& objectPath,
         api::ZoneId data;
         config::loadFromGVariant(parameters, data);
 
-        if (mUnlockZoneCallback) {
-            auto rb = std::make_shared<api::DbusMethodResultBuilder<api::Void>>(result);
-            mUnlockZoneCallback(data, rb);
-        }
+        auto rb = std::make_shared<api::DbusMethodResultBuilder<api::Void>>(result);
+        mZonesManagerPtr->handleUnlockZoneCall(data, rb);
         return;
     }
 
@@ -545,10 +363,8 @@ void HostDbusConnection::onMessageCall(const std::string& objectPath,
         api::GrantDeviceIn data;
         config::loadFromGVariant(parameters, data);
 
-        if (mGrantDeviceCallback) {
-            auto rb = std::make_shared<api::DbusMethodResultBuilder<api::Void>>(result);
-            mGrantDeviceCallback(data, rb);
-        }
+        auto rb = std::make_shared<api::DbusMethodResultBuilder<api::Void>>(result);
+        mZonesManagerPtr->handleGrantDeviceCall(data, rb);
         return;
     }
 
@@ -556,10 +372,8 @@ void HostDbusConnection::onMessageCall(const std::string& objectPath,
         api::RevokeDeviceIn data;
         config::loadFromGVariant(parameters, data);
 
-        if (mRevokeDeviceCallback) {
-            auto rb = std::make_shared<api::DbusMethodResultBuilder<api::Void>>(result);
-            mRevokeDeviceCallback(data, rb);
-        }
+        auto rb = std::make_shared<api::DbusMethodResultBuilder<api::Void>>(result);
+        mZonesManagerPtr->handleRevokeDeviceCall(data, rb);
         return;
     }
 
@@ -567,20 +381,18 @@ void HostDbusConnection::onMessageCall(const std::string& objectPath,
         api::NotifActiveZoneIn data;
         config::loadFromGVariant(parameters, data);
 
-        if (mNotifyActiveZoneCallback) {
-            auto rb = std::make_shared<api::DbusMethodResultBuilder<api::Void>>(result);
-            mNotifyActiveZoneCallback(data, rb);
-        }
+        auto rb = std::make_shared<api::DbusMethodResultBuilder<api::Void>>(result);
+        mZonesManagerPtr->handleNotifyActiveZoneCall(EMPTY_CALLER, data, rb);
+        return;
     }
 
     if (methodName == api::dbus::METHOD_FILE_MOVE_REQUEST) {
         api::FileMoveRequestIn data;
         config::loadFromGVariant(parameters, data);
 
-        if (mFileMoveCallback) {
-            auto rb = std::make_shared<api::DbusMethodResultBuilder<api::FileMoveRequestStatus>>(result);
-            mFileMoveCallback(data, rb);
-        }
+        auto rb = std::make_shared<api::DbusMethodResultBuilder<api::FileMoveRequestStatus>>(result);
+        mZonesManagerPtr->handleFileMoveCall(EMPTY_CALLER, data, rb);
+        return;
     }
 }
 
@@ -595,9 +407,7 @@ void HostDbusConnection::onSignalCall(const std::string& /* senderBusName */,
     }
 
     if (signalName == api::dbus::SIGNAL_SWITCH_TO_DEFAULT) {
-        if (mSwitchToDefaultCallback) {
-            mSwitchToDefaultCallback();
-        }
+        mZonesManagerPtr->handleSwitchToDefaultCall(EMPTY_CALLER);
     }
 }
 
index cdd8dda..23bb9d9 100644 (file)
 
 namespace vasum {
 
+class ZonesManager;
 
 class HostDbusConnection {
 
 public:
-    HostDbusConnection();
+    HostDbusConnection(ZonesManager* zm);
     ~HostDbusConnection();
 
     // ------------- API --------------
@@ -56,89 +57,6 @@ public:
                                GVariant* parameters,
                                dbus::MethodResultBuilder::Pointer result
                               )> ProxyCallCallback;
-    typedef std::function<void(api::MethodResultBuilder::Pointer result
-                              )> GetZoneConnectionsCallback;
-    typedef std::function<void(api::MethodResultBuilder::Pointer result
-                              )> GetZoneIdsCallback;
-    typedef std::function<void(api::MethodResultBuilder::Pointer result
-                              )> GetActiveZoneIdCallback;
-    typedef std::function<void(const api::ZoneId& dataIn,
-                               api::MethodResultBuilder::Pointer result
-                              )> GetZoneInfoCallback;
-    typedef std::function<void(const api::SetNetDevAttrsIn& dataIn,
-                               api::MethodResultBuilder::Pointer result
-                              )> SetNetdevAttrsCallback;
-    typedef std::function<void(const api::GetNetDevAttrsIn& dataIn,
-                               api::MethodResultBuilder::Pointer result
-                              )> GetNetdevAttrsCallback;
-    typedef std::function<void(const api::ZoneId& dataIn,
-                               api::MethodResultBuilder::Pointer result
-                              )> GetNetdevListCallback;
-    typedef std::function<void(const api::CreateNetDevVethIn& dataIn,
-                               api::MethodResultBuilder::Pointer result
-                              )> CreateNetdevVethCallback;
-    typedef std::function<void(const api::CreateNetDevMacvlanIn& dataIn,
-                               api::MethodResultBuilder::Pointer result
-                              )> CreateNetdevMacvlanCallback;
-    typedef std::function<void(const api::CreateNetDevPhysIn& dataIn,
-                               api::MethodResultBuilder::Pointer result
-                              )> CreateNetdevPhysCallback;
-    typedef std::function<void(const api::DeleteNetdevIpAddressIn& dataIn,
-                               api::MethodResultBuilder::Pointer result
-                              )> DeleteNetdevIpAddressCallback;
-    typedef std::function<void(const api::DestroyNetDevIn& dataIn,
-                               api::MethodResultBuilder::Pointer result
-                              )> DestroyNetdevCallback;
-    typedef std::function<void(const api::DeclareFileIn& dataIn,
-                               api::MethodResultBuilder::Pointer result
-                              )> DeclareFileCallback;
-    typedef std::function<void(const api::DeclareMountIn& dataIn,
-                               api::MethodResultBuilder::Pointer result
-                              )> DeclareMountCallback;
-    typedef std::function<void(const api::DeclareLinkIn& dataIn,
-                               api::MethodResultBuilder::Pointer result
-                              )> DeclareLinkCallback;
-    typedef std::function<void(const api::ZoneId& dataIn,
-                               api::MethodResultBuilder::Pointer result
-                              )> GetDeclarationsCallback;
-    typedef std::function<void(const api::RemoveDeclarationIn& dataIn,
-                               api::MethodResultBuilder::Pointer result
-                              )> RemoveDeclarationCallback;
-    typedef std::function<void(const api::ZoneId& dataIn,
-                               api::MethodResultBuilder::Pointer result
-                              )> SetActiveZoneCallback;
-    typedef std::function<void(const api::CreateZoneIn& dataIn,
-                               api::MethodResultBuilder::Pointer result
-                              )> CreateZoneCallback;
-    typedef std::function<void(const api::ZoneId& dataIn,
-                               api::MethodResultBuilder::Pointer result
-                              )> DestroyZoneCallback;
-    typedef std::function<void(const api::ZoneId& dataIn,
-                               api::MethodResultBuilder::Pointer result
-                              )> ShutdownZoneCallback;
-    typedef std::function<void(const api::ZoneId& dataIn,
-                               api::MethodResultBuilder::Pointer result
-                              )> StartZoneCallback;
-    typedef std::function<void(const api::ZoneId& dataIn,
-                               api::MethodResultBuilder::Pointer result
-                              )> LockZoneCallback;
-    typedef std::function<void(const api::ZoneId& dataIn,
-                               api::MethodResultBuilder::Pointer result
-                              )> UnlockZoneCallback;
-    typedef std::function<void(const api::GrantDeviceIn& dataIn,
-                               api::MethodResultBuilder::Pointer result
-                              )> GrantDeviceCallback;
-    typedef std::function<void(const api::RevokeDeviceIn& dataIn,
-                               api::MethodResultBuilder::Pointer result
-                              )> RevokeDeviceCallback;
-    typedef std::function<void(const api::NotifActiveZoneIn& notify,
-                               api::MethodResultBuilder::Pointer result
-                              )> NotifyActiveZoneCallback;
-    typedef std::function<void(const api::FileMoveRequestIn& request,
-                               api::MethodResultBuilder::Pointer result
-                              )> FileMoveCallback;
-    typedef std::function<void()> SwitchToDefaultCallback;
-
 
     /**
      * Register proxy call callback
@@ -146,156 +64,6 @@ public:
     void setProxyCallCallback(const ProxyCallCallback& callback);
 
     /**
-     * Register get zone connections callback
-     */
-    void setGetZoneConnectionsCallback(const GetZoneConnectionsCallback& callback);
-
-    /**
-     * Send signal describing dbus address state change
-     */
-    void signalZoneConnectionState(const api::ConnectionState& state);
-
-    /**
-     * Register a callback called to get a list of zone ids
-     */
-    void setGetZoneIdsCallback(const GetZoneIdsCallback& callback);
-
-    /**
-     * Register a callback called to get the active zone id
-     */
-    void setGetActiveZoneIdCallback(const GetActiveZoneIdCallback& callback);
-
-    /**
-     * Register a callback called to get the zone informations
-     */
-    void setGetZoneInfoCallback(const GetZoneInfoCallback& callback);
-
-    /**
-     * Register a callback called to set network device attributes
-     */
-    void setSetNetdevAttrsCallback(const SetNetdevAttrsCallback& callback);
-
-    /**
-     * Register a callback called to get network device attributes
-     */
-    void setGetNetdevAttrsCallback(const GetNetdevAttrsCallback& callback);
-
-    /**
-     * Register a callback called to get network device list
-     */
-    void setGetNetdevListCallback(const GetNetdevListCallback& callback);
-
-    /**
-     * Register a callback called to create veth
-     */
-    void setCreateNetdevVethCallback(const CreateNetdevVethCallback& callback);
-
-    /**
-     * Register a callback called to create macvlan
-     */
-    void setCreateNetdevMacvlanCallback(const CreateNetdevMacvlanCallback& callback);
-
-    /**
-     * Register a callback called to create/move phys
-     */
-    void setCreateNetdevPhysCallback(const CreateNetdevPhysCallback& callback);
-
-    /**
-     * Register a callback called to destroy netdev
-     */
-    void setDestroyNetdevCallback(const DestroyNetdevCallback& callback);
-
-    /**
-     * Register a callback called to remove ip address from netdev
-     */
-    void setDeleteNetdevIpAddressCallback(const DeleteNetdevIpAddressCallback& callback);
-
-    /**
-     * Register a callback called to declare file
-     */
-    void setDeclareFileCallback(const DeclareFileCallback& callback);
-
-    /**
-     * Register a callback called to declare mount point
-     */
-    void setDeclareMountCallback(const DeclareMountCallback& callback);
-
-    /**
-     * Register a callback called to declare link
-     */
-    void setDeclareLinkCallback(const DeclareLinkCallback& callback);
-
-    /**
-     * Register a callback called to list declarations
-     */
-    void setGetDeclarationsCallback(const GetDeclarationsCallback& callback);
-
-    /**
-     * Register a callback called to remove declarartion
-     */
-    void setRemoveDeclarationCallback(const RemoveDeclarationCallback& callback);
-
-    /**
-     * Register a callback called to set the active zone
-     */
-    void setSetActiveZoneCallback(const SetActiveZoneCallback& callback);
-
-    /**
-     * Register a callback called to create new zone
-     */
-    void setCreateZoneCallback(const CreateZoneCallback& callback);
-
-    /**
-     * Register a callback called to destroy zone
-     */
-    void setDestroyZoneCallback(const DestroyZoneCallback& callback);
-
-    /**
-     * Register a callback called to shutdown zone
-     */
-    void setShutdownZoneCallback(const ShutdownZoneCallback& callback);
-
-    /**
-     * Register a callback called to start zone
-     */
-    void setStartZoneCallback(const StartZoneCallback& callback);
-
-    /**
-     * Register a callback called to lock zone
-     */
-    void setLockZoneCallback(const LockZoneCallback& callback);
-
-    /**
-     * Register a callback called to unlock zone
-     */
-    void setUnlockZoneCallback(const UnlockZoneCallback& callback);
-
-    /**
-     * Register a callback called to grant device
-     */
-    void setGrantDeviceCallback(const GrantDeviceCallback& callback);
-
-    /**
-     * Register a callback called to revoke device
-     */
-    void setRevokeDeviceCallback(const RevokeDeviceCallback& callback);
-
-    /**
-     * Register notification request callback
-     */
-    void setNotifyActiveZoneCallback(const NotifyActiveZoneCallback& callback);
-
-    /**
-     * Register switch to default request callback
-     */
-    void setSwitchToDefaultCallback(const SwitchToDefaultCallback& callback);
-
-    /*
-     * Register file move request callback
-     */
-    void setFileMoveCallback(const FileMoveCallback& callback);
-
-    /**
      * Send notification signal to this zone
      */
     void sendNotification(const api::Notification& notify);
@@ -318,35 +86,7 @@ private:
     bool mNameLost;
     dbus::DbusConnection::SubscriptionId mSubscriptionId;
     ProxyCallCallback mProxyCallCallback;
-    GetZoneConnectionsCallback mGetZoneConnectionsCallback;
-    GetZoneIdsCallback mGetZoneIdsCallback;
-    GetActiveZoneIdCallback mGetActiveZoneIdCallback;
-    GetZoneInfoCallback mGetZoneInfoCallback;
-    SetNetdevAttrsCallback mSetNetdevAttrsCallback;
-    GetNetdevAttrsCallback mGetNetdevAttrsCallback;
-    GetNetdevListCallback mGetNetdevListCallback;
-    CreateNetdevVethCallback mCreateNetdevVethCallback;
-    CreateNetdevMacvlanCallback mCreateNetdevMacvlanCallback;
-    CreateNetdevPhysCallback mCreateNetdevPhysCallback;
-    DestroyNetdevCallback mDestroyNetdevCallback;
-    DeleteNetdevIpAddressCallback mDeleteNetdevIpAddressCallback;
-    DeclareFileCallback mDeclareFileCallback;
-    DeclareMountCallback mDeclareMountCallback;
-    DeclareLinkCallback mDeclareLinkCallback;
-    GetDeclarationsCallback mGetDeclarationsCallback;
-    RemoveDeclarationCallback mRemoveDeclarationCallback;
-    SetActiveZoneCallback mSetActiveZoneCallback;
-    CreateZoneCallback mCreateZoneCallback;
-    DestroyZoneCallback mDestroyZoneCallback;
-    ShutdownZoneCallback mShutdownZoneCallback;
-    StartZoneCallback mStartZoneCallback;
-    LockZoneCallback mLockZoneCallback;
-    UnlockZoneCallback mUnlockZoneCallback;
-    GrantDeviceCallback mGrantDeviceCallback;
-    RevokeDeviceCallback mRevokeDeviceCallback;
-    NotifyActiveZoneCallback mNotifyActiveZoneCallback;
-    SwitchToDefaultCallback mSwitchToDefaultCallback;
-    FileMoveCallback mFileMoveCallback;
+    ZonesManager* mZonesManagerPtr;
 
     void onNameAcquired();
     void onNameLost();
index d6519e9..1a003d4 100644 (file)
 
 #include "config.hpp"
 
+#include <functional>
+
 #include "host-ipc-connection.hpp"
 #include "host-ipc-definitions.hpp"
 #include "exception.hpp"
 #include "logger/logger.hpp"
+#include "zones-manager.hpp"
+
 
 namespace vasum {
 
-HostIPCConnection::HostIPCConnection()
+HostIPCConnection::HostIPCConnection(ZonesManager* zonesManagerPtr)
+    : mZonesManagerPtr(zonesManagerPtr)
 {
     LOGT("Connecting to host IPC socket");
     mService.reset(new ipc::Service(mDispatcher.getPoll(), HOST_IPC_SOCKET));
@@ -39,6 +44,91 @@ HostIPCConnection::HostIPCConnection()
     LOGT("Starting IPC");
     mService->start();
     LOGD("Connected");
+
+    using namespace std::placeholders;
+    setGetZoneIdsCallback(std::bind(&ZonesManager::handleGetZoneIdsCall,
+                                    mZonesManagerPtr, _1));
+
+    setGetActiveZoneIdCallback(std::bind(&ZonesManager::handleGetActiveZoneIdCall,
+                                         mZonesManagerPtr, _1));
+
+    setGetZoneInfoCallback(std::bind(&ZonesManager::handleGetZoneInfoCall,
+                                     mZonesManagerPtr, _1, _2));
+
+    setSetNetdevAttrsCallback(std::bind(&ZonesManager::handleSetNetdevAttrsCall,
+                                        mZonesManagerPtr, _1, _2));
+
+    setGetNetdevAttrsCallback(std::bind(&ZonesManager::handleGetNetdevAttrsCall,
+                                        mZonesManagerPtr, _1, _2));
+
+    setGetNetdevListCallback(std::bind(&ZonesManager::handleGetNetdevListCall,
+                                       mZonesManagerPtr, _1, _2));
+
+    setCreateNetdevVethCallback(std::bind(&ZonesManager::handleCreateNetdevVethCall,
+                                          mZonesManagerPtr, _1, _2));
+
+    setCreateNetdevMacvlanCallback(std::bind(&ZonesManager::handleCreateNetdevMacvlanCall,
+                                             mZonesManagerPtr, _1, _2));
+
+    setCreateNetdevPhysCallback(std::bind(&ZonesManager::handleCreateNetdevPhysCall,
+                                          mZonesManagerPtr, _1, _2));
+
+    setDestroyNetdevCallback(std::bind(&ZonesManager::handleDestroyNetdevCall,
+                                       mZonesManagerPtr, _1, _2));
+
+    setDeleteNetdevIpAddressCallback(std::bind(&ZonesManager::handleDeleteNetdevIpAddressCall,
+                                               mZonesManagerPtr, _1, _2));
+
+    setDeclareFileCallback(std::bind(&ZonesManager::handleDeclareFileCall,
+                                     mZonesManagerPtr, _1, _2));
+
+    setDeclareMountCallback(std::bind(&ZonesManager::handleDeclareMountCall,
+                                      mZonesManagerPtr, _1, _2));
+
+    setDeclareLinkCallback(std::bind(&ZonesManager::handleDeclareLinkCall,
+                                     mZonesManagerPtr, _1, _2));
+
+    setGetDeclarationsCallback(std::bind(&ZonesManager::handleGetDeclarationsCall,
+                                         mZonesManagerPtr, _1, _2));
+
+    setRemoveDeclarationCallback(std::bind(&ZonesManager::handleRemoveDeclarationCall,
+                                           mZonesManagerPtr, _1, _2));
+
+    setSetActiveZoneCallback(std::bind(&ZonesManager::handleSetActiveZoneCall,
+                                       mZonesManagerPtr, _1, _2));
+
+    setCreateZoneCallback(std::bind(&ZonesManager::handleCreateZoneCall,
+                                    mZonesManagerPtr, _1, _2));
+
+    setDestroyZoneCallback(std::bind(&ZonesManager::handleDestroyZoneCall,
+                                     mZonesManagerPtr, _1, _2));
+
+    setShutdownZoneCallback(std::bind(&ZonesManager::handleShutdownZoneCall,
+                                      mZonesManagerPtr, _1, _2));
+
+    setStartZoneCallback(std::bind(&ZonesManager::handleStartZoneCall,
+                                   mZonesManagerPtr, _1, _2));
+
+    setLockZoneCallback(std::bind(&ZonesManager::handleLockZoneCall,
+                                  mZonesManagerPtr, _1, _2));
+
+    setUnlockZoneCallback(std::bind(&ZonesManager::handleUnlockZoneCall,
+                                    mZonesManagerPtr, _1, _2));
+
+    setGrantDeviceCallback(std::bind(&ZonesManager::handleGrantDeviceCall,
+                                     mZonesManagerPtr, _1, _2));
+
+    setRevokeDeviceCallback(std::bind(&ZonesManager::handleRevokeDeviceCall,
+                                      mZonesManagerPtr, _1, _2));
+
+    setNotifyActiveZoneCallback(std::bind(&ZonesManager::handleNotifyActiveZoneCall,
+                                          mZonesManagerPtr, "", _1, _2));
+
+    setSwitchToDefaultCallback(std::bind(&ZonesManager::handleSwitchToDefaultCall,
+                                         mZonesManagerPtr, ""));
+
+    setFileMoveCallback(std::bind(&ZonesManager::handleFileMoveCall,
+                                  mZonesManagerPtr, "", _1, _2));
 }
 
 HostIPCConnection::~HostIPCConnection()
index b5d671e..3e4e7ff 100644 (file)
@@ -33,6 +33,7 @@
 
 namespace vasum {
 
+class ZonesManager;
 
 class HostIPCConnection {
 public:
@@ -47,11 +48,15 @@ public:
         typedef typename IPCSignalWrapper<ArgIn>::type type;
     };
 
-    HostIPCConnection();
+    HostIPCConnection(ZonesManager* zm);
     ~HostIPCConnection();
 
-    void setGetZoneConnectionsCallback(const Method<api::Connections>::type& callback);
+    void signalZoneConnectionState(const api::ConnectionState& connectionState);
+    void sendNotification(const api::Notification& notification);
+
+private:
     void setGetZoneIdsCallback(const Method<api::ZoneIds>::type& callback);
+    void setGetZoneConnectionsCallback(const Method<api::Connections>::type& callback);
     void setGetActiveZoneIdCallback(const Method<api::ZoneId>::type& callback);
     void setGetZoneInfoCallback(const Method<const api::ZoneId, api::ZoneInfoOut>::type& callback);
     void setSetNetdevAttrsCallback(const Method<const api::SetNetDevAttrsIn>::type& callback);
@@ -80,12 +85,10 @@ public:
     void setSwitchToDefaultCallback(const Signal<const api::Void>::type& callback);
     void setFileMoveCallback(const Method<const api::FileMoveRequestIn,
                              api::FileMoveRequestStatus>::type& callback);
-    void signalZoneConnectionState(const api::ConnectionState& connectionState);
-    void sendNotification(const api::Notification& notification);
 
-private:
     ipc::epoll::ThreadDispatcher mDispatcher;
     std::unique_ptr<ipc::Service> mService;
+    ZonesManager* mZonesManagerPtr;
 };
 
 } // namespace vasum
index 0762294..a66eff1 100644 (file)
@@ -112,98 +112,14 @@ bool zoneIsRunning(const std::unique_ptr<Zone>& zone) {
 
 } // namespace
 
-template<typename Connection>
-void ZonesManager::setHandlers(Connection& connection)
-{
-    using namespace std::placeholders;
-    connection.setGetZoneIdsCallback(bind(&ZonesManager::handleGetZoneIdsCall,
-                                          this, _1));
-
-    connection.setGetActiveZoneIdCallback(bind(&ZonesManager::handleGetActiveZoneIdCall,
-                                               this, _1));
-
-    connection.setGetZoneInfoCallback(bind(&ZonesManager::handleGetZoneInfoCall,
-                                           this, _1, _2));
-
-    connection.setSetNetdevAttrsCallback(bind(&ZonesManager::handleSetNetdevAttrsCall,
-                                              this, _1, _2));
-
-    connection.setGetNetdevAttrsCallback(bind(&ZonesManager::handleGetNetdevAttrsCall,
-                                              this, _1, _2));
-
-    connection.setGetNetdevListCallback(bind(&ZonesManager::handleGetNetdevListCall,
-                                             this, _1, _2));
-
-    connection.setCreateNetdevVethCallback(bind(&ZonesManager::handleCreateNetdevVethCall,
-                                                this, _1, _2));
-
-    connection.setCreateNetdevMacvlanCallback(bind(&ZonesManager::handleCreateNetdevMacvlanCall,
-                                                   this, _1, _2));
-
-    connection.setCreateNetdevPhysCallback(bind(&ZonesManager::handleCreateNetdevPhysCall,
-                                                this, _1, _2));
-
-    connection.setDestroyNetdevCallback(bind(&ZonesManager::handleDestroyNetdevCall,
-                                             this, _1, _2));
-
-    connection.setDeleteNetdevIpAddressCallback(bind(&ZonesManager::handleDeleteNetdevIpAddressCall,
-                                                     this, _1, _2));
-
-    connection.setDeclareFileCallback(bind(&ZonesManager::handleDeclareFileCall,
-                                           this, _1, _2));
-
-    connection.setDeclareMountCallback(bind(&ZonesManager::handleDeclareMountCall,
-                                            this, _1, _2));
-
-    connection.setDeclareLinkCallback(bind(&ZonesManager::handleDeclareLinkCall,
-                                           this, _1, _2));
-
-    connection.setGetDeclarationsCallback(bind(&ZonesManager::handleGetDeclarationsCall,
-                                               this, _1, _2));
-
-    connection.setRemoveDeclarationCallback(bind(&ZonesManager::handleRemoveDeclarationCall,
-                                                 this, _1, _2));
-
-    connection.setSetActiveZoneCallback(bind(&ZonesManager::handleSetActiveZoneCall,
-                                             this, _1, _2));
-
-    connection.setCreateZoneCallback(bind(&ZonesManager::handleCreateZoneCall,
-                                          this, _1, _2));
-
-    connection.setDestroyZoneCallback(bind(&ZonesManager::handleDestroyZoneCall,
-                                           this, _1, _2));
-
-    connection.setShutdownZoneCallback(bind(&ZonesManager::handleShutdownZoneCall,
-                                            this, _1, _2));
-
-    connection.setStartZoneCallback(bind(&ZonesManager::handleStartZoneCall,
-                                         this, _1, _2));
-
-    connection.setLockZoneCallback(bind(&ZonesManager::handleLockZoneCall,
-                                        this, _1, _2));
-
-    connection.setUnlockZoneCallback(bind(&ZonesManager::handleUnlockZoneCall,
-                                          this, _1, _2));
-
-    connection.setGrantDeviceCallback(bind(&ZonesManager::handleGrantDeviceCall,
-                                           this, _1, _2));
-
-    connection.setRevokeDeviceCallback(bind(&ZonesManager::handleRevokeDeviceCall,
-                                            this, _1, _2));
-
-    connection.setNotifyActiveZoneCallback(bind(&ZonesManager::handleNotifyActiveZoneCall,
-                                      this, "", _1, _2));
-
-    connection.setSwitchToDefaultCallback(bind(&ZonesManager::handleSwitchToDefaultCall,
-                                     this, ""));
-
-    connection.setFileMoveCallback(bind(&ZonesManager::handleFileMoveCall,
-                                        this, "", _1, _2));
-}
 
 ZonesManager::ZonesManager(const std::string& configPath)
     : mWorker(utils::Worker::create())
+    , mHostIPCConnection(this)
     , mDetachOnExit(false)
+#ifdef DBUS_CONNECTION
+    , mHostDbusConnection(this)
+#endif
 {
     LOGD("Instantiating ZonesManager object...");
 
@@ -213,13 +129,11 @@ ZonesManager::ZonesManager(const std::string& configPath)
                                         mDynamicConfig,
                                         getVasumDbPrefix());
 
-    setHandlers(mHostIPCConnection);
 #ifdef DBUS_CONNECTION
     using namespace std::placeholders;
     mProxyCallPolicy.reset(new ProxyCallPolicy(mConfig.proxyCallRules));
     mHostDbusConnection.setProxyCallCallback(bind(&ZonesManager::handleProxyCall,
                                                   this, HOST_ID, _1, _2, _3, _4, _5, _6, _7));
-    setHandlers(mHostDbusConnection);
 #endif //DBUS_CONNECTION
 
     for (const auto& zoneId : mDynamicConfig.zoneIds) {
@@ -237,8 +151,6 @@ ZonesManager::ZonesManager(const std::string& configPath)
                              std::bind(&ZonesManager::switchingSequenceMonitorNotify,
                                        this)));
     }
-
-
 }
 
 ZonesManager::~ZonesManager()
index 2a2f6d7..c74f5ec 100644 (file)
 
 #include "zone.hpp"
 #include "zones-manager-config.hpp"
-#include "host-ipc-connection.hpp"
+#include "api/messages.hpp"
 #include "input-monitor.hpp"
 #include "utils/worker.hpp"
 #include "api/method-result-builder.hpp"
 
+#include "host-ipc-connection.hpp"
 #ifdef DBUS_CONNECTION
 #include "host-dbus-connection.hpp"
 #include "proxy-call-policy.hpp"
@@ -44,7 +45,6 @@
 
 namespace vasum {
 
-
 class ZonesManager final {
 
 public:
@@ -115,62 +115,6 @@ public:
      */
     void setZonesDetachOnExit();
 
-private:
-    typedef std::recursive_mutex Mutex;
-    typedef std::unique_lock<Mutex> Lock;
-
-    utils::Worker::Pointer mWorker;
-    Mutex mMutex; // used to protect mZones
-    ZonesManagerConfig mConfig; //TODO make it const
-    ZonesManagerDynamicConfig mDynamicConfig;
-#ifdef DBUS_CONNECTION
-    HostDbusConnection mHostDbusConnection;
-#endif //DBUS_CONNECTION
-    HostIPCConnection mHostIPCConnection;
-    // to hold InputMonitor pointer to monitor if zone switching sequence is recognized
-    std::unique_ptr<InputMonitor> mSwitchingSequenceMonitor;
-    // like set but keep insertion order
-    // smart pointer is needed because Zone is not moveable (because of mutex)
-    typedef std::vector<std::unique_ptr<Zone>> Zones;
-    Zones mZones;
-    std::string mActiveZoneId;
-    bool mDetachOnExit;
-
-    Zones::iterator findZone(const std::string& id);
-    Zone& getZone(const std::string& id);
-    Zones::iterator getRunningForegroundZoneIterator();
-    Zones::iterator getNextToForegroundZoneIterator();
-    void focusInternal(Zones::iterator iter);
-
-    void saveDynamicConfig();
-    void updateDefaultId();
-    void refocus();
-    void switchingSequenceMonitorNotify();
-    void generateNewConfig(const std::string& id,
-                           const std::string& templatePath);
-    std::string getTemplatePathForExistingZone(const std::string& id);
-    int getVTForNewZone();
-    void insertZone(const std::string& zoneId, const std::string& templatePath);
-
-    // Zone's handlers---------------------------------------------------------
-    void handleNotifyActiveZoneCall(const std::string& caller,
-                                    const api::NotifActiveZoneIn& notif,
-                                    api::MethodResultBuilder::Pointer result);
-    void handleSwitchToDefaultCall(const std::string& caller);
-    void handleFileMoveCall(const std::string& srcZoneId,
-                            const api::FileMoveRequestIn& request,
-                            api::MethodResultBuilder::Pointer result);
-#ifdef DBUS_CONNECTION
-    std::unique_ptr<ProxyCallPolicy> mProxyCallPolicy;
-    void handleProxyCall(const std::string& caller,
-                         const std::string& target,
-                         const std::string& targetBusName,
-                         const std::string& targetObjectPath,
-                         const std::string& targetInterface,
-                         const std::string& targetMethod,
-                         GVariant* parameters,
-                         dbus::MethodResultBuilder::Pointer result);
-#endif //DBUS_CONNECTION
     // Handlers --------------------------------------------------------
     void handleGetZoneIdsCall(api::MethodResultBuilder::Pointer result);
     void handleGetActiveZoneIdCall(api::MethodResultBuilder::Pointer result);
@@ -221,8 +165,61 @@ private:
     void handleRevokeDeviceCall(const api::RevokeDeviceIn& data,
                                 api::MethodResultBuilder::Pointer result);
 
-    template<typename Connection>
-    void setHandlers(Connection& connnection);
+    // Zone's handlers---------------------------------------------------------
+    void handleNotifyActiveZoneCall(const std::string& caller,
+                                    const api::NotifActiveZoneIn& notif,
+                                    api::MethodResultBuilder::Pointer result);
+    void handleSwitchToDefaultCall(const std::string& caller);
+    void handleFileMoveCall(const std::string& srcZoneId,
+                            const api::FileMoveRequestIn& request,
+                            api::MethodResultBuilder::Pointer result);
+
+private:
+    typedef std::recursive_mutex Mutex;
+    typedef std::unique_lock<Mutex> Lock;
+
+    utils::Worker::Pointer mWorker;
+    Mutex mMutex; // used to protect mZones
+    ZonesManagerConfig mConfig; //TODO make it const
+    ZonesManagerDynamicConfig mDynamicConfig;
+    HostIPCConnection mHostIPCConnection;
+    // to hold InputMonitor pointer to monitor if zone switching sequence is recognized
+    std::unique_ptr<InputMonitor> mSwitchingSequenceMonitor;
+    // like set but keep insertion order
+    // smart pointer is needed because Zone is not moveable (because of mutex)
+    typedef std::vector<std::unique_ptr<Zone>> Zones;
+    Zones mZones;
+    std::string mActiveZoneId;
+    bool mDetachOnExit;
+
+    Zones::iterator findZone(const std::string& id);
+    Zone& getZone(const std::string& id);
+    Zones::iterator getRunningForegroundZoneIterator();
+    Zones::iterator getNextToForegroundZoneIterator();
+    void focusInternal(Zones::iterator iter);
+
+    void saveDynamicConfig();
+    void updateDefaultId();
+    void refocus();
+    void switchingSequenceMonitorNotify();
+    void generateNewConfig(const std::string& id,
+                           const std::string& templatePath);
+    std::string getTemplatePathForExistingZone(const std::string& id);
+    int getVTForNewZone();
+    void insertZone(const std::string& zoneId, const std::string& templatePath);
+
+#ifdef DBUS_CONNECTION
+    HostDbusConnection mHostDbusConnection;
+    std::unique_ptr<ProxyCallPolicy> mProxyCallPolicy;
+    void handleProxyCall(const std::string& caller,
+                         const std::string& target,
+                         const std::string& targetBusName,
+                         const std::string& targetObjectPath,
+                         const std::string& targetInterface,
+                         const std::string& targetMethod,
+                         GVariant* parameters,
+                         dbus::MethodResultBuilder::Pointer result);
+#endif //DBUS_CONNECTION
 };
 
 
index 3e83884..ce02a33 100644 (file)
@@ -30,6 +30,7 @@
 #include "utils/latch.hpp"
 #include "utils/scoped-dir.hpp"
 #include "zones-manager.hpp"
+#include "host-ipc-connection.hpp"
 #include "host-ipc-definitions.hpp"
 #include "logger/logger.hpp"