import {ObjectBase} from '../../common/lang/ObjectBase';
import {ResultEnum} from '../../common/lang/ResultEnum';
import {ThreadStatusEnum} from './ThreadStatusEnum';
//==========================================================
// 线程。
//
// @class
// @author maocy
// @version 150105
//==========================================================
export abstract class Thread extends ObjectBase {
// 名称
public name: string;
// 延时
public delay: number;
// 间隔
public interval: number;
// 状态
public statusCd: ThreadStatusEnum;
//==========================================================
// 构造处理。
//
// @method
//==========================================================
public constructor() {
super();
// 设置属性
this.delay = 0;
this.interval = 100;
this.statusCd = ThreadStatusEnum.Sleep;
}
//==========================================================
// 启动处理。
//
// @method
//==========================================================
public start() {
this.statusCd = ThreadStatusEnum.Active;
}
//==========================================================
// 停止处理。
//
// @method
//==========================================================
public stop() {
this.statusCd = ThreadStatusEnum.Finish;
}
//==========================================================
// 调用处理。
//
// @return 处理结果
//==========================================================
public abstract onProcess(): ResultEnum;
//==========================================================
// 调用处理。
//
// @param interval:integer 调用间隔
//==========================================================
public process(interval: number) {
if (this.delay <= 0) {
this.onProcess();
} else {
this.delay -= interval;
}
}
}