tbl/src/game-tbl/schedule.service.ts
        
Schedule service responsible for scheduled tasks - currently it's only game time syncronization of game gateway
| Properties | 
| 
 | 
| Methods | 
| constructor(gameGateway: GameGateway) | ||||||
| Defined in tbl/src/game-tbl/schedule.service.ts:15 | ||||||
| constructor 
                                    Parameters :
                                     
 | 
| checkAwsLead | 
| checkAwsLead() | 
| Decorators : @Interval(5000) | 
| Defined in tbl/src/game-tbl/schedule.service.ts:40 | 
| Check if is aws lead once in 5 sec 
                            Returns :          void | 
| syncTimes | 
| syncTimes() | 
| Decorators : @Interval(1000) | 
| Defined in tbl/src/game-tbl/schedule.service.ts:27 | 
| Send timerSync event to /live socket.io namespace 
                            Returns :          void | 
| Private awsInstanceId | 
| Type : string | 
| Default value : '' | 
| Defined in tbl/src/game-tbl/schedule.service.ts:14 | 
| Private awsIsLead | 
| Default value : process.env.IS_LEAD_SERVER === 'yes' | 
| Defined in tbl/src/game-tbl/schedule.service.ts:15 | 
| Private Readonly logger | 
| Default value : new Logger(LiveScheduleService.name) | 
| Defined in tbl/src/game-tbl/schedule.service.ts:13 | 
| logger | 
import { Injectable, Logger } from '@nestjs/common';
import { Interval } from '@nestjs/schedule';
import { GameGateway } from './game-tbl.gateway';
import { AwsService } from '../../../shared/common/aws-service';
import { CatchAndLogError } from '../../../shared/common/catch-and-log-error.decorator';
/**
 *  Schedule service responsible for scheduled tasks - currently it's only game time syncronization of game gateway
 */
@Injectable()
export class LiveScheduleService {
  /** logger */
  private readonly logger = new Logger(LiveScheduleService.name);
  private awsInstanceId = '';
  private awsIsLead = process.env.IS_LEAD_SERVER === 'yes';
  /**
   *  constructor
   */
  constructor(private readonly gameGateway: GameGateway) {}
  /**
   *  Send timerSync event to /live socket.io namespace
   */
  @Interval(1000)
  @CatchAndLogError(LiveScheduleService.name)
  syncTimes(): void {
    if (!this.awsIsLead) {
      this.logger.log('Not a lead instance');
      return;
    }
    this.gameGateway.syncGameTimer();
  }
  /**
   *  Check if is aws lead once in 5 sec
   */
  @Interval(5000)
  @CatchAndLogError(LiveScheduleService.name)
  checkAwsLead(): void {
    const aws = new AwsService();
    this.awsIsLead = aws.allowLeadRoutines();
  }
}