Add vine_dp_get_id() #2 27/259127/2 accepted/tizen/unified/20210602.122354 submit/tizen/20210601.115121
authorSeonah Moon <seonah1.moon@samsung.com>
Tue, 1 Jun 2021 09:35:14 +0000 (18:35 +0900)
committerSeonah Moon <seonah1.moon@samsung.com>
Tue, 1 Jun 2021 09:37:10 +0000 (18:37 +0900)
Change-Id: I84c80a5f970caa8bee6222ff92a5e407540e3c4c

src/include/vine-dp.h
src/vine-dp.cpp
src/vine.cpp
tests/unittest/vine-unittest-dp.cpp
tool/tool_run.cpp

index 2e9ab9c..d76a553 100644 (file)
@@ -47,6 +47,7 @@ public:
        virtual int send(unsigned char *buf, size_t len) = 0;
        virtual int recv(unsigned char *buf, size_t buf_len, size_t *read_len) = 0;
 
+       virtual int get_id(char **id) = 0;
        virtual int set_addr_family(vine_address_family_e addr_family) = 0;
        virtual int set_remote_ip(vine_address_family_e, const std::string &ip) = 0;
        virtual int get_remote_ip(vine_address_family_e *addr_family, char **ip) = 0;
@@ -104,6 +105,7 @@ public:
        virtual int send(unsigned char *buf, size_t len);
        virtual int recv(unsigned char *buf, size_t buf_len, size_t *read_len);
 
+       virtual int get_id(char **id);
        virtual int set_addr_family(vine_address_family_e addr_family);
        virtual int set_remote_ip(vine_address_family_e, const std::string &ip);
        virtual int get_remote_ip(vine_address_family_e *addr_family, char **ip);
@@ -147,6 +149,7 @@ public:
        virtual int send(unsigned char *buf, size_t len);
        virtual int recv(unsigned char *buf, size_t buf_len, size_t *read_len);
 
+       virtual int get_id(char **id);
        virtual int set_addr_family(vine_address_family_e addr_family);
        virtual int set_remote_ip(vine_address_family_e, const std::string &ip);
        virtual int get_remote_ip(vine_address_family_e *addr_family, char **ip);
@@ -200,6 +203,7 @@ public:
        virtual int send(unsigned char *buf, size_t len);
        virtual int recv(unsigned char *buf, size_t buf_len, size_t *read_len);
 
+       virtual int get_id(char **id);
        virtual int set_addr_family(vine_address_family_e addr_family);
        virtual int set_remote_ip(vine_address_family_e, const std::string &ip);
        virtual int get_remote_ip(vine_address_family_e *addr_family, char **ip);
@@ -234,7 +238,7 @@ public:
 
        int publish_service();
        int subscribe_service();
-       void set_id(const char *id) { mId = id; }
+       void set_id(const char *id);
        bool check_if_connect(const char *peer_rank,
                        vine_address_family_e ip_type, const char *peer_ip, int peer_port);
        int get_rank() { return mRank; }
@@ -273,6 +277,7 @@ private:
 
 int _vine_dp_create(vine_session_h session, vine_dp_type_e type, vine_dp_h *dp);
 int _vine_dp_destroy(vine_dp_h dp);
+int _vine_dp_get_id(vine_dp_h dp, char **id);
 int _vine_dp_set_iface_name(vine_dp_h dp, const char *iface_name);
 int _vine_dp_set_addr_family(vine_dp_h dp, vine_address_family_e addr_family);
 int _vine_dp_set_remote_ip(vine_dp_h dp, vine_address_family_e addr_family, const char *ip);
index 3a77b0d..9fe1f4c 100644 (file)
@@ -474,6 +474,11 @@ DPServer::~DPServer()
        vine_data_path_destroy(mDataPath);
 }
 
+int DPServer::get_id(char **id)
+{
+       return VINE_ERROR_INVALID_OPERATION;
+}
+
 int DPServer::set_addr_family(vine_address_family_e addr_family)
 {
        mAddrFamily = addr_family;
@@ -671,6 +676,11 @@ DPClient::~DPClient()
        vine_data_path_destroy(mDataPath);
 }
 
+int DPClient::get_id(char **id)
+{
+       return VINE_ERROR_INVALID_OPERATION;
+}
+
 int DPClient::set_addr_family(vine_address_family_e addr_family)
 {
        return VINE_ERROR_INVALID_OPERATION;
@@ -843,6 +853,21 @@ DPPubSub::~DPPubSub()
        close();
 }
 
+void DPPubSub::set_id(const char *id)
+{
+       if (id == NULL || mId.compare(id) == 0)
+               return;
+
+       VINE_LOGD("Id is changed %s -> %s", mId, id);
+       mId = id;
+}
+
+int DPPubSub::get_id(char **id)
+{
+       *id = STRDUP(mId.c_str());
+       return VINE_ERROR_NONE;
+}
+
 int DPPubSub::set_addr_family(vine_address_family_e addr_family)
 {
        mAddrFamily = addr_family;
@@ -1024,6 +1049,8 @@ int DPPubSub::publish_service()
        sprintf(rank_str, "%d", mRank);
 
        create_id(service_name);
+       set_id(service_name);
+
        vine_service_set_name(service, service_name);
        vine_service_add_attribute(service, VINE_DP_PUBSUB_RANK_KEY, (const char *)rank_str);
 
@@ -1357,6 +1384,15 @@ int _vine_dp_destroy(vine_dp_h dp)
        return VINE_ERROR_NONE;
 }
 
+int _vine_dp_get_id(vine_dp_h dp, char **id)
+{
+       RET_VAL_IF(dp == NULL, VINE_ERROR_INVALID_PARAMETER, "dp is null.");
+       RET_VAL_IF(id == NULL, VINE_ERROR_INVALID_PARAMETER, "id is null.");
+
+       DataPath *_dp = static_cast<DataPath *>(dp);
+       return _dp->get_id(id);
+}
+
 int _vine_dp_set_iface_name(vine_dp_h dp, const char *iface_name)
 {
        RET_VAL_IF(dp == NULL, VINE_ERROR_INVALID_PARAMETER, "dp is null.");
@@ -1416,6 +1452,7 @@ int _vine_dp_get_remote_port(vine_dp_h dp, int *port)
        *port = remote_port;
        return VINE_ERROR_NONE;
 }
+
 int _vine_dp_get_ip(vine_dp_h dp, vine_address_family_e *addr_family, char **ip)
 {
        RET_VAL_IF(dp == NULL, VINE_ERROR_INVALID_PARAMETER, "dp is null.");
index bd16968..29fe7b4 100755 (executable)
@@ -325,6 +325,14 @@ API int vine_dp_destroy(vine_dp_h dp)
        return _vine_dp_destroy(dp);
 }
 
+API int vine_dp_get_id(vine_dp_h dp, char **id)
+{
+       __VINE_FUNC_ENTER__;
+       CHECK_FEATURE_SUPPORTED;
+
+       return _vine_dp_get_id(dp, id);
+}
+
 API int vine_dp_set_iface_name(vine_dp_h dp, const char *iface_name)
 {
        __VINE_FUNC_ENTER__;
index c3f23a7..26fcfac 100755 (executable)
@@ -110,6 +110,20 @@ TEST_F(VineDpTest, DestroyP)
                        vine_dp_destroy(dp));
 }
 
+TEST_F(VineDpTest, GetIdN)
+{
+       char *id = NULL;
+       EXPECT_EQ(VINE_ERROR_INVALID_PARAMETER, vine_dp_get_id(pubsub_dp, NULL));
+       EXPECT_EQ(VINE_ERROR_INVALID_OPERATION, vine_dp_get_id(server_dp, &id));
+       EXPECT_EQ(VINE_ERROR_INVALID_OPERATION, vine_dp_get_id(client_dp, &id));
+}
+
+TEST_F(VineDpTest, GetIdP)
+{
+       char *id = NULL;
+       EXPECT_EQ(VINE_ERROR_NONE, vine_dp_get_id(pubsub_dp, &id));
+}
+
 TEST_F(VineDpTest, SetRemoteIpN)
 {
        EXPECT_EQ(VINE_ERROR_INVALID_PARAMETER,
index d1e06fb..3563524 100644 (file)
@@ -97,17 +97,23 @@ static void __opened_cb(vine_dp_h dp, vine_error_e result, void *user_data)
                return;
 
        vine_address_family_e addr_family;
+       char *id = NULL;
        char *ip = NULL;
        int port = 0;
 
-       vine_dp_get_port(dp, &port);
-       printf("\t> %s port: %d\n",
-               vine_configs.dp_type == VINE_DP_TYPE_CLIENT ? "connected" : "listen",
-               port);
+       if (vine_configs.dp_type == VINE_DP_TYPE_PUBSUB) {
+               vine_dp_get_id(dp, &id);
+               printf("\t> ID: %s\n", id);
+       } else {
+               vine_dp_get_port(dp, &port);
+               printf("\t> %s port: %d\n",
+                               vine_configs.dp_type == VINE_DP_TYPE_CLIENT ? "connected" : "listen",
+                               port);
 
                vine_dp_get_ip(dp, &addr_family, &ip);
-       printf("\t> local IP: %s, address family: %d \n", ip, addr_family);
-       free(ip);
+               printf("\t> local IP: %s, address family: %d \n", ip, addr_family);
+               free(ip);
+       }
 
        vine_dp_set_received_cb(dp, __received_cb, NULL);
        vine_dp_set_terminated_cb(dp, __terminated_cb, NULL);