Пример #1
0
void	wheel_timer::add_one_shot(timer_callback* callback, tick_ms_t delay_ms)
{
	size_t target = (cursor_ + (delay_ms / slot_interval_)) % slot_count_;
	if (target == cursor_)
	{
		// 현재 실행 중일 수 있기 때문에 다음 슬롯에 등록시킨다.
		target = (cursor_ + 1) % slot_count_;
	}

	slots_[target].push_back(timer_unit(callback, tick::now_ms() + delay_ms));
}
Пример #2
0
void service_start(const char *config) {
	initialize(config);
	worker_queue_init();
	timer_init(service_timer_dispatch, service_alloc);
	socket_init(service_alloc);

	struct module log_mod = {
		log_dispatch,
		log_create,
		log_release,
	};

	g.log = service_create(&log_mod, service_env_get("log"));
	service_create(&lua_mod, service_env_get("main"));

	int thread = atoi(service_env_get("thread"));

	start(thread);

	socket_unit();
	timer_unit();
	finalize();
}
Пример #3
0
void HeapTimer::add_expire_timer(time_t expire, std::string echo){
	tm_queue.push(timer_unit(expire, echo));
}
Пример #4
0
void HeapTimer::add_delay_timer(time_t delay, std::string echo){
	tm_queue.push(timer_unit(time(NULL)+delay, echo));
}