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;
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);
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);
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);
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; }
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);
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;
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;
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;
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);
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.");
*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.");
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__;
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,
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);