Пример #1
0
void stats_event_category_register(const char *name,
				   struct event_category *parent)
{
	struct event_category *category =
		p_new(categories_pool, struct event_category, 1);
	category->parent = parent;
	category->name = p_strdup(categories_pool, name);

	/* Create a temporary event to register the category. A bit slower
	   than necessary, but this code won't be called often. */
	struct event *event = event_create(NULL);
	struct event_category *categories[] = { category, NULL };
	event_add_categories(event, categories);
	event_unref(&event);
}
Пример #2
0
void scheduler_push(Scheduler* scheduler, Event* event, GQuark senderHostID, GQuark receiverHostID) {
    MAGIC_ASSERT(scheduler);

    SimulationTime eventTime = event_getTime(event);
    if(eventTime > scheduler->endTime) {
        event_unref(event);
        return;
    }

    /* parties involved. sender may be NULL, receiver may not!
     * we MAY NOT OWN the receiver, so do not write to it! */
    Host* sender = scheduler_getHost(scheduler, senderHostID);
    Host* receiver = scheduler_getHost(scheduler, receiverHostID);
    utility_assert(receiver);
    utility_assert(receiver == event_getHost(event));

    /* push to a queue based on the policy */
    scheduler->policy->push(scheduler->policy, event, sender, receiver, scheduler->currentRound.endTime);
}