/**
 * Promise-based timing utilities.
 *
 * License:
 *   This Source Code Form is subject to the terms of
 *   the Mozilla Public License, v. 2.0. If a copy of
 *   the MPL was not distributed with this file, You
 *   can obtain one at http://mozilla.org/MPL/2.0/.
 *
 * Authors:
 *   Vladimir Panteleev <ae@cy.md>
 */

module ae.utils.promise.timing;

import ae.utils.promise;
import ae.sys.timing;

Promise!void sleep(Duration delay)
{
	auto p = new Promise!void;
	setTimeout(&p.fulfill, delay);
	return p;
}

Promise!void sleepUntil(MonoTime when)
{
	auto p = new Promise!void;
	auto task = new TimerTask((Timer /*timer*/, TimerTask /*task*/) {
		p.fulfill();
	});
	mainTimer.add(task, when);
	return p;
}