Ejemplo n.º 1
0
/*
	release memory consumed by the contents
	of a resource.
	NOTE : the memory of the resource entry itself
	is not released(that is released by one or more calls
	to unload_resource).
*/
static __bool _free_resource(
	F8_RESOURCE * res
	)
{		
	ITEMMAP	* imap = res->pItems;

	if(!imap){
		return __true;
	}

	_free_items(imap);

	delete res->pItems;
	res->pItems = 0;

	return __true;
}
Ejemplo n.º 2
0
static void _process_que_item(T _this_, item_ *item ) {

    Table_T items = _this_->items;

    if (item == NULL) {
        return;
    }

    switch (item->type) {
    
    case REG:
        OE_TLOG(0, "Oed_Dispatcher _process_que_item REG\n"); //i18n
        int rc = _add_template(_this_, item);
        //schedule timeout
        _watch_for_timeout(item, _this_->net_obj);

        break;

    case UNREG:
        _remove_item(items, item, false);
        break;

    case PROCESS:
        OE_TLOG(0, "Oed_Dispatcher _process_que_item PROCESS\n"); //i18n
        //run match tests
        _process(items, item);
        if (item->free_alloc) {
            _free_object(item->object);
        }
        Mem_free(item, __FILE__, __LINE__);
        break;

    case EXECUTE:
        //run now
        if (item->match_handler) {
            _process_fun(item->match_handler, item->args);
        }
        Mem_free(item, __FILE__, __LINE__);
        break;

    case HEARTBEAT:
        timeout_del(item->timer_event);
        Mem_free(item->timer_event, __FILE__, __LINE__);
        Mem_free(item, __FILE__, __LINE__);
        _schedule_heartbeat(_this_);
        break;

    case DIAG:
        Mem_free(item, __FILE__, __LINE__);
        _print_diag(_this_);
        break;

    case TQUIT:
        Mem_free(item, __FILE__, __LINE__);
        event_base_loopexit(_this_->net_obj, 0);
        _free_items(items);
        break;

    default:
        assert(0); //should never get here
        break;
    }
}