int vine_dp_set_security(vine_dp_h dp, vine_security_h security);
/**
+ * @brief Sets the service information.
+ * @remarks This API works only for @a VINE_DP_METHOD_BLE_GATT.
+ * @since_tizen 6.5
+ * @param[in] dp The data path handle
+ * @param[in] service The service handle
+ * @return 0 on success, otherwise a negative error value
+ * @retval #VINE_ERROR_NONE Successful
+ * @retval #VINE_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #VINE_ERROR_INVALID_OPERATION Invalid operation
+ * @retval #VINE_ERROR_NOT_SUPPORTED Not supported
+ * @see vine_dp_create()
+ * @see vine_service_create()
+ */
+int vine_dp_set_service(vine_dp_h dp, vine_service_h service);
+
+/**
* @brief Called whenever the peer is accepted.
* @remarks @a dp must be released by vine_dp_destroy() if you don't use it anymore.
* @since_tizen 6.5
virtual int update_local_address_info() = 0;
virtual int set_topic(std::string topic) = 0;
virtual int set_max_connections(int max_conn) = 0;
+ virtual int set_service(vine_service_h service) = 0;
virtual int set_accepted_cb(vine_dp_accepted_cb callback, void *user_data) = 0;
virtual int unset_accepted_cb() = 0;
virtual int set_peer_joined_cb(vine_dp_peer_joined_cb callback, void *user_data) = 0;
virtual int update_local_address_info();
virtual int set_topic(std::string topic);
virtual int set_max_connections(int max_conn);
+ virtual int set_service(vine_service_h service);
virtual int set_accepted_cb(vine_dp_accepted_cb callback, void *user_data);
virtual int unset_accepted_cb();
virtual int set_peer_joined_cb(vine_dp_peer_joined_cb callback, void *user_data);
int mListenPort;
std::string mLocalIp;
int mMaxConnNum;
+ vine_service_h mService;
vine_dp_accepted_cb mAcceptedCb;
void *mAcceptedCbData;
};
virtual int update_local_address_info();
virtual int set_topic(std::string topic);
virtual int set_max_connections(int max_conn){ return VINE_ERROR_NONE; };
+ virtual int set_service(vine_service_h service);
virtual int set_accepted_cb(vine_dp_accepted_cb callback, void *user_data);
virtual int unset_accepted_cb();
virtual int set_peer_joined_cb(vine_dp_peer_joined_cb callback, void *user_data);
int mPeerPort;
std::string mLocalIp;
int mPort;
+ vine_service_h mService;
bool isCreatedByServerDp;
};
virtual int set_topic(std::string topic);
virtual std::string get_topic() { return mTopic; }
virtual int set_max_connections(int max_conn);
+ virtual int set_service(vine_service_h service);
virtual int set_accepted_cb(vine_dp_accepted_cb callback, void *user_data);
virtual int unset_accepted_cb();
virtual int set_peer_joined_cb(vine_dp_peer_joined_cb callback, void *user_data);
int _vine_dp_set_topic(vine_dp_h dp, const char *topic);
int _vine_dp_set_max_connections(vine_dp_h dp, int max_conn);
int _vine_dp_set_security(vine_dp_h dp, vine_security_h security);
+int _vine_dp_set_service(vine_dp_h dp, vine_service_h service);
int _vine_dp_set_accepted_cb(vine_dp_h dp, vine_dp_accepted_cb callback, void *user_data);
int _vine_dp_unset_accepted_cb(vine_dp_h dp);
int _vine_dp_open(vine_dp_h dp, vine_dp_opened_cb callback, void *user_data);
mDataPath = NULL;
mListenPort = 0;
mMaxConnNum = VINE_DP_DEFAULT_CONNECTIONS_NUM;
+ mService = NULL;
mAcceptedCb = NULL;
mAcceptedCbData = NULL;
mReceivedCb = NULL;
{
VINE_LOGD("DPServer[%p] is deleted.", this);
_vine_security_destroy(mSecurity);
+ vine_service_destroy(mService);
vine_data_path_destroy(mDataPath);
}
return VINE_ERROR_NONE;
}
+int DPServer::set_service(vine_service_h service)
+{
+ if (mMethod != VINE_DATA_PATH_METHOD_BLE_GATT)
+ return VINE_ERROR_INVALID_OPERATION;
+ return vine_service_clone(service, &mService);
+}
+
int DPServer::set_accepted_cb(vine_dp_accepted_cb callback, void *user_data)
{
mAcceptedCb = callback;
mPeerIp = "";
mPeerPort = 0;
mPort = 0;
+ mService = NULL;
mReceivedCb = NULL;
mReceivedCbData = NULL;
mOpenedCb = NULL;
{
VINE_LOGD("DPClient[%p] is deleted.", this);
_vine_security_destroy(mSecurity);
+ vine_service_destroy(mService);
vine_data_path_destroy(mDataPath);
}
return VINE_ERROR_INVALID_OPERATION;
}
+int DPClient::set_service(vine_service_h service)
+{
+ if (mMethod != VINE_DATA_PATH_METHOD_BLE_GATT)
+ return VINE_ERROR_INVALID_OPERATION;
+ return vine_service_clone(service, &mService);
+}
+
int DPClient::set_accepted_cb(vine_dp_accepted_cb callback, void *user_data)
{
return VINE_ERROR_INVALID_OPERATION;
return VINE_ERROR_NONE;
}
+int DPPubSub::set_service(vine_service_h service)
+{
+ return VINE_ERROR_INVALID_OPERATION;
+}
+
int DPPubSub::set_accepted_cb(vine_dp_accepted_cb callback, void *user_data)
{
return VINE_ERROR_INVALID_OPERATION;
return _dp->set_security(security);
}
+int _vine_dp_set_service(vine_dp_h dp, vine_service_h service)
+{
+ RET_VAL_IF(dp == NULL, VINE_ERROR_INVALID_PARAMETER, "dp is null.");
+ RET_VAL_IF(service == NULL, VINE_ERROR_INVALID_PARAMETER, "service is null.");
+
+ DataPath *_dp = static_cast<DataPath *>(dp);
+ return _dp->set_service(service);
+}
+
int _vine_dp_set_accepted_cb(vine_dp_h dp, vine_dp_accepted_cb callback, void *user_data)
{
RET_VAL_IF(dp == NULL, VINE_ERROR_INVALID_PARAMETER, "dp is null.");
return _vine_dp_set_security(dp, security);
}
+API int vine_dp_set_service(vine_dp_h dp, vine_service_h service)
+{
+ __VINE_FUNC_ENTER__;
+ CHECK_FEATURE_SUPPORTED;
+
+ return _vine_dp_set_service(dp, service);
+}
+
API int vine_dp_set_accepted_cb(vine_dp_h dp, vine_dp_accepted_cb callback, void *user_data)
{
__VINE_FUNC_ENTER__;
vine_security_destroy(security);
}
+TEST_F(VineDpTest, SetServiceN)
+{
+ vine_service_h service;
+
+ vine_service_create(&service);
+ EXPECT_EQ(VINE_ERROR_INVALID_PARAMETER,
+ vine_dp_set_service(NULL, service));
+ EXPECT_EQ(VINE_ERROR_INVALID_PARAMETER,
+ vine_dp_set_service(client_dp, NULL));
+ EXPECT_EQ(VINE_ERROR_INVALID_PARAMETER,
+ vine_dp_set_service(pubsub_dp, service));
+ vine_service_destroy(service);
+}
+
+TEST_F(VineDpTest, SetServiceP)
+{
+ vine_service_h service;
+
+ vine_service_create(&service);
+ vine_dp_set_method(server_dp, VINE_DP_METHOD_BLE_GATT);
+ EXPECT_EQ(VINE_ERROR_NONE, vine_dp_set_service(server_dp, service));
+ vine_service_destroy(service);
+}
+
TEST_F(VineDpTest, SetIfaceNameN)
{
EXPECT_EQ(VINE_ERROR_INVALID_PARAMETER,