INT32 data_release_event() { INT32 ret,i; date_time start_dt, end_dt; ret = ERR_FAILED; epg_enter_mutex(); do { for(i=0; i<db_block.index; i++) { get_event_start_time(&db_block.node[i], &start_dt); get_event_end_time(&db_block.node[i], &end_dt); if(eit_compare_time(&tw1.t_min,&end_dt)<=0 ||eit_compare_time(&tw1.t_max, &start_dt)>=0 ) {// release event data if(db_block.node[i].status==NODE_ACTIVE) MTP_PRINT("%d-%d\n", start_dt.month, start_dt.day); if(db_block.node[i].status==NODE_ACTIVE && SUCCESS==__del_node(&db_block.node[i])) { MTP_PRINT("cnt:%d\n",db_block.count); ret = SUCCESS; } } } }while(ret!=SUCCESS && update_time_window(&tw0, &tw1, EVN_DATA)==SUCCESS); epg_leave_mutex(); return ret; }
INT32 data_release_tp() { INT32 ret=0, i; UINT32 tp_id; if(0==tplist.cnt) return ERR_FAILED; epg_enter_mutex(); tp_id = tplist.tp[tplist.cnt-1]; for(i=0; i<db_block.index; i++) if(db_block.node[i].status==NODE_ACTIVE && db_block.node[i].tp_id==tp_id) { MTP_PRINT("sid=%d,ei=%d,et=%d,tp=%d,i=%d\n",db_block.node[i].service_id,db_block.node[i].event_id,db_block.node[i].event_type,tp_id, i); if(__del_node(&db_block.node[i])==SUCCESS) ret++; } tplist.cnt--; reset_time_window(&tw0,&tw1); g_update_all_events = TRUE; epg_leave_mutex(); if(ret==0) ret = ERR_FAILED; else ret = SUCCESS; return ret; }
//if the node fit the condition, del it. static INT32 _del_node(struct DB_NODE *node, struct DB_CHECK *check) { if (node->status == NODE_ACTIVE) { if (check != NULL && check->check_func != NULL && check->check_func(node, check->priv)) { //del from view??? // _del_from_view(node, &epg_view); __del_node(node); } } return !SUCCESS; }
void del_node(struct node* _node) { __del_node(_node); free(_node); }