int msc_remove_extract_request(const ms_comm_msg_s *recv_msg)
{
- int i = 0;
- int j = 0;
-
- if (recv_msg == NULL) {
- MS_DBG_ERR("recv_msg is null");
- return MS_MEDIA_ERR_INVALID_PARAMETER;
- }
- const char *storageid = recv_msg->storage_id;
- int len = g_async_queue_length(storage_extract_queue);
+ int items_to_find = 0;
ms_comm_msg_s *msg = NULL;
- GAsyncQueue *temp_queue = NULL;
- MS_DBG_WARN("exactor_req_mutex is LOCKED");
- g_mutex_lock(&extract_req_mutex);
+ MS_DBG_RETVM_IF(!recv_msg, MS_MEDIA_ERR_INVALID_PARAMETER, "recv_msg is null");
- if (len <= 0) {
- MS_DBG_ERR("Request is not stacked");
- goto END_REMOVE_REQUEST;
- }
+ g_mutex_lock(&extract_req_mutex);
+ MS_DBG_WARN("extract_req_mutex is LOCKED");
- temp_queue = g_async_queue_new();
+ items_to_find = g_async_queue_length(storage_extract_queue);
- for (i = 0; i < len; i++) {
- /*create new queue to compare request*/
+ while (items_to_find-- > 0) {
msg = g_async_queue_pop(storage_extract_queue);
- if ((strcmp(msg->storage_id, storageid) == 0)) {
+ if ((g_strcmp0(msg->storage_id, recv_msg->storage_id) == 0)) {
if (msg->result) {
MS_DBG_WARN("force stop storage scan");
msg->msg_type = MS_MSG_EXTRACTOR_COMPLETE;
}
g_free(msg);
} else {
- g_async_queue_push(temp_queue, msg);
- }
- }
- len = g_async_queue_length(temp_queue);
-
- for (j = 0; j < len; j++) {
- msg = g_async_queue_pop(temp_queue);
- if (msg)
g_async_queue_push(storage_extract_queue, msg);
+ }
}
- g_async_queue_unref(temp_queue);
-END_REMOVE_REQUEST:
g_mutex_unlock(&extract_req_mutex);
- MS_DBG_WARN("exactor_req_mutex is UNLOCKED");
+ MS_DBG_WARN("extract_req_mutex is UNLOCKED");
__msc_del_extract_blocked_path(recv_msg->msg);
return MS_MEDIA_ERR_NONE;
void msc_remove_folder_extract_request(ms_comm_msg_s *recv_msg)
{
- int i = 0;
- char *cancel_path = recv_msg->msg;
- int pid = recv_msg->pid;
- GAsyncQueue *temp_extract_queue = NULL;
ms_comm_msg_s *msg = NULL;
- int len = g_async_queue_length(folder_extract_queue);
+ int items_to_find = g_async_queue_length(folder_extract_queue);
- MS_DBG_WARN("folder_extract_queue len [%d]", len);
-
- if (len == 0) {
- MS_DBG_ERR("Request is not stacked");
- return;
- }
+ MS_DBG_WARN("folder_extract_queue len [%d]", items_to_find);
- temp_extract_queue = g_async_queue_new();
-
- MS_DBG_WARN("start update folder_extract_queue");
-
- for (i = 0; i < len; i++) {
+ while (items_to_find-- > 0) {
msg = g_async_queue_pop(folder_extract_queue);
- if ((strcmp(msg->msg, cancel_path) == 0) && (pid == msg->pid)) {
- MS_DBG_WARN("Remove request. cancel path [%s]", cancel_path);
+ if ((msg->pid == recv_msg->pid) && (g_strcmp0(msg->msg, recv_msg->msg) == 0)) {
+ MS_DBG_WARN("Remove request. cancel path [%s]", recv_msg->msg);
g_free(msg);
} else {
- g_async_queue_push(temp_extract_queue, msg);
+ g_async_queue_push(folder_extract_queue, msg);
}
}
- g_async_queue_unref(folder_extract_queue);
- folder_extract_queue = temp_extract_queue;
-
MS_DBG_FLEAVE();
}
void msc_remove_dir_scan_request(ms_comm_msg_s *recv_msg)
{
- char *cancel_path = recv_msg->msg;
- int pid = recv_msg->pid;
- int i = 0;
- int len = g_async_queue_length(scan_queue2);
+ int items_to_find = 0;
ms_comm_msg_s *msg = NULL;
- GAsyncQueue *temp_scan_queue = NULL;
- MS_DBG_WARN("scan_req_mutex2 is LOCKED");
g_mutex_lock(&scan_req_mutex2);
+ MS_DBG_WARN("scan_req_mutex2 is LOCKED");
- if (len <= 0 && g_directory_scan_processing2 == 0) {
- MS_DBG_WARN("Request is not stacked[%d]", len);
- goto END_REMOVE_REQUEST;
- }
+ items_to_find = g_async_queue_length(scan_queue2);
- MS_DBG_WARN("len == [%d] pid=[%d], cancel_path[%s]", len, pid, cancel_path);
+ if (items_to_find == 0 && g_directory_scan_processing2 == DIR_SCAN_NON_SCAN) {
+ MS_DBG_WARN("Request is not stacked");
+ goto FINALIZE;
+ }
msc_set_cancel_scan_item(recv_msg->msg, recv_msg->pid);
- if (len > 0) {
- temp_scan_queue = g_async_queue_new();
-
- MS_DBG_WARN("start update scan_queue2");
- for (i = 0; i < len; i++) {
- /*create new queue to compare request*/
- msg = g_async_queue_pop(scan_queue2);
- MS_DBG_WARN("msg->msg[%.*s], msg->pid[%d]", MAX_MSG_SIZE, msg->msg, msg->pid);
- if ((strcmp(msg->msg, cancel_path) == 0) && (pid == msg->pid)) {
- MS_DBG_WARN("Remove request. cancel path [%s]", cancel_path);
- g_free(msg);
- } else {
- g_async_queue_push(temp_scan_queue, msg);
- }
- }
-
- len = g_async_queue_length(temp_scan_queue);
- int j = 0;
- for (; j < len; j++) {
- msg = g_async_queue_pop(temp_scan_queue);
+ MS_DBG_WARN("start update scan_queue2. len[%d]", items_to_find);
+ while (items_to_find-- > 0) {
+ msg = g_async_queue_pop(scan_queue2);
+ if ((msg->pid == recv_msg->pid) && (g_strcmp0(msg->msg, recv_msg->msg) == 0)) {
+ MS_DBG_WARN("Remove request. cancel path [%s]", recv_msg->msg);
+ g_free(msg);
+ } else {
g_async_queue_push(scan_queue2, msg);
}
- g_async_queue_unref(temp_scan_queue);
- MS_DBG_WARN("end update scan_queue2");
}
-END_REMOVE_REQUEST:
+ MS_DBG_WARN("end update scan_queue2");
+
+FINALIZE:
msc_set_cancel_extract_item(recv_msg->msg, recv_msg->pid);
msc_remove_folder_extract_request(recv_msg);