Add client stubs for getting domain informations 14/30214/2
authorMateusz Malicki <m.malicki2@samsung.com>
Wed, 12 Nov 2014 13:43:18 +0000 (14:43 +0100)
committerMateusz Malicki <m.malicki2@samsung.com>
Thu, 13 Nov 2014 09:48:06 +0000 (10:48 +0100)
[Bug/Feature]   Client stubs for getting domain informations
[Cause]         N/A
[Solution]      N/A
[Verification]  Build

Change-Id: If800ae1396f3ec2e1a39d144ab6e93ea583b8949

client/security-containers-client-impl.cpp
client/security-containers-client-impl.hpp
client/security-containers-client.cpp
client/security-containers-client.h

index fd85d2b..05636fe 100644 (file)
@@ -357,7 +357,19 @@ VsmStatus Client::vsm_lookup_domain_by_pid(int pid, VsmString* id) noexcept
 
     *id = strdup(containerId.c_str());
     mStatus = Status();
-    return vsm_get_status();;
+    return vsm_get_status();
+}
+
+VsmStatus Client::vsm_lookup_domain_by_id(const char*, VsmDomain*) noexcept
+{
+    mStatus = Status(VSMCLIENT_OTHER_ERROR, "Not implemented");
+    return vsm_get_status();
+}
+
+VsmStatus Client::vsm_lookup_domain_by_terminal_id(int, VsmString*) noexcept
+{
+    mStatus = Status(VSMCLIENT_OTHER_ERROR, "Not implemented");
+    return vsm_get_status();
 }
 
 VsmStatus Client::vsm_set_active_container(const char* id) noexcept
index e88da49..bf1c39a 100644 (file)
@@ -124,6 +124,16 @@ public:
     VsmStatus vsm_lookup_domain_by_pid(int pid, VsmString* id) noexcept;
 
     /**
+     * @see ::vsm_lookup_domain_by_id
+     */
+    VsmStatus vsm_lookup_domain_by_id(const char* id, VsmDomain* domain) noexcept;
+
+    /**
+     * @see ::vsm_lookup_domain_by_terminal_id
+     */
+    VsmStatus vsm_lookup_domain_by_terminal_id(int terminal, VsmString* id) noexcept;
+
+    /**
      *  @see ::vsm_set_active_container
      */
     VsmStatus vsm_set_active_container(const char* id) noexcept;
index 2adc702..d1d99e4 100644 (file)
@@ -88,6 +88,12 @@ API void vsm_string_free(VsmString string)
     free(string);
 }
 
+API void vsm_domain_free(VsmDomain domain)
+{
+    free(domain->rootfs_path);
+    free(domain->id);
+    free(domain);
+}
 
 API void vsm_client_free(VsmClient client)
 {
@@ -126,6 +132,16 @@ API VsmStatus vsm_lookup_domain_by_pid(VsmClient client, int pid, VsmString* id)
     return getClient(client).vsm_lookup_domain_by_pid(pid, id);
 }
 
+API VsmStatus vsm_lookup_domain_by_id(VsmClient client, const char* id, VsmDomain* domain)
+{
+    return getClient(client).vsm_lookup_domain_by_id(id, domain);
+}
+
+API VsmStatus vsm_lookup_domain_by_terminal_id(VsmClient client, int terminal, VsmString* id)
+{
+    return getClient(client).vsm_lookup_domain_by_terminal_id(terminal, id);
+}
+
 API VsmStatus vsm_set_active_container(VsmClient client, const char* id)
 {
     return getClient(client).vsm_set_active_container(id);
index 22a2a4e..4fe18f0 100644 (file)
@@ -120,6 +120,38 @@ typedef enum {
 typedef unsigned int VsmSubscriptionId;
 
 /**
+ * States of domain
+ */
+typedef enum {
+    STOPPED,
+    STARTING,
+    RUNNING,
+    STOPPING,
+    ABORTING,
+    FREEZING,
+    FROZEN,
+    THAWED,
+    LOCKED,
+    MAX_STATE,
+    ACTIVATING = 128
+} VsmDomainState;
+
+/**
+ * Domain information structure
+ */
+struct VsmDomainStructure {
+    char* id;
+    int terminal;
+    VsmDomainState state;
+    char *rootfs_path;
+};
+
+/**
+ * Domain information
+ */
+typedef VsmDomainStructure* VsmDomain;
+
+/**
  * Start glib loop.
  *
  * Do not call this function if an application creates a glib loop itself.
@@ -199,6 +231,12 @@ void vsm_array_string_free(VsmArrayString astring);
  */
 void vsm_string_free(VsmString string);
 
+/**
+ * Release VsmDomain
+ *
+ * @param domain VsmDomain
+ */
+void vsm_domain_free(VsmDomain domain);
 
 /**
  * @name Host API
@@ -263,6 +301,28 @@ VsmStatus vsm_get_active_container_id(VsmClient client, VsmString* id);
 VsmStatus vsm_lookup_domain_by_pid(VsmClient client, int pid, VsmString* id);
 
 /**
+ * Get domain informations of domain with given id.
+ *
+ * @param[in] client security-containers-server's client
+ * @param[in] id domain name
+ * @param[out] domain domain informations
+ * @return status of this function call
+ * @remark Use @p vsm_doamin_free() to free memory occupied by @p domain
+ */
+VsmStatus vsm_lookup_domain_by_id(VsmClient client, const char* id, VsmDomain* domain);
+
+/**
+ * Get domain name with given terminal.
+ *
+ * @param[in] client security-containers-server's client
+ * @param[in] terminal terminal id
+ * @param[out] id domain name with given terminal
+ * @return status of this function call
+ * @remark Use @p vsm_string_free() to free memory occupied by @p id.
+ */
+VsmStatus vsm_lookup_domain_by_terminal_id(VsmClient client, int terminal, VsmString* id);
+
+/**
  * Set active (foreground) container.
  *
  * @param[in] client security-containers-server's client