EXPORT_API bool datacontrol_provider_map_is_registered();
EXPORT_API bool datacontrol_provider_sql_is_registered();
+/**
+ * @brief Sends select result without selected data.
+ * @details This API is made for C# API. C# API has a different select flow. \n
+ * It will send select result after provider's select callback and \n
+ * do not get db handle for sending result to remove db dependancy. \n
+ * So, this API just send provider's select callback result and pass \n
+ * connected socket fd for sending selected data to consumer.
+ *
+ * @param[in] request_id The request ID
+ * @param[out] fd The socket fd
+ *
+ * @return @c 0 on success,
+ * otherwise a negative error value
+ *
+ * @retval #DATACONTROL_ERROR_NONE Successful
+ * @retval #DATACONTROL_ERROR_IO_ERROR I/O error
+ * @retval #DATACONTROL_ERROR_INVALID_PARAMETER Invalid parameter
+ */
+EXPORT_API int datacontrol_provider_send_select_result_without_data(int request_id, int *fd);
+
+/**
+ * @brief Writes data to socket.
+ * @details This API is made for C# API. C# API has a different select flow. \n
+ * It will send select result after provider's select callback and \n
+ * do not get db handle for sending result to remove db dependancy. \n
+ * So, C# API need native API which get buffer and send it to the consumer.
+ *
+ * @param[in] fd The socket fd
+ * @param[in] buffer The data for sending to the consumer application
+ * @param[in] nbytes The data size
+ * @param[out] bytes_write The data size of sent successfully to the consumer
+ *
+ * @return @c 0 on success,
+ * otherwise a negative error value
+ *
+ * @retval #DATACONTROL_ERROR_NONE Successful
+ * @retval #DATACONTROL_ERROR_IO_ERROR I/O error
+ */
+EXPORT_API int datacontrol_provider_write_socket(int fd, void *buffer, unsigned int nbytes,
+ unsigned int *bytes_write);
#ifdef __cplusplus
}
return DATACONTROL_ERROR_NONE;
}
+int datacontrol_provider_write_socket(int fd, void *buffer, unsigned int nbytes,
+ unsigned int *bytes_write)
+{
+ int ret = _write_socket(fd, buffer, nbytes, bytes_write);
+ return ret;
+}
+
+int datacontrol_provider_send_select_result_without_data(int request_id, int *fd)
+{
+ int ret;
+ bundle *res;
+ bundle *b;
+ datacontrol_socket_info *socket_info;
+ char *caller_app_id;
+
+ LOGI("Send select result by byte array for request id: %d", request_id);
+
+ if (__request_table == NULL)
+ __initialize_provider();
+
+ b = g_hash_table_lookup(__request_table, &request_id);
+ if (!b) {
+ LOGE("No data for the request id: %d", request_id);
+ return DATACONTROL_ERROR_INVALID_PARAMETER;
+ }
+ res = __set_result(b, DATACONTROL_TYPE_SQL_SELECT, NULL);
+ ret = __send_result(res, DATACONTROL_TYPE_UNDEFINED, NULL);
+
+ caller_app_id = (char *)bundle_get_val(b, AUL_K_CALLER_APPID);
+ socket_info = g_hash_table_lookup(__socket_pair_hash, caller_app_id);
+ if (socket_info == NULL) {
+ LOGE("__socket_pair_hash lookup fail");
+ return DATACONTROL_ERROR_IO_ERROR;
+ }
+ *fd = socket_info->socket_fd;
+ g_hash_table_remove(__request_table, &request_id);
+
+ return ret;
+}
+
int datacontrol_provider_send_bulk_insert_result(int request_id, data_control_bulk_result_data_h bulk_result_data)
{
int ret;