public constructor()

in src/blob/lease/LeaseBrokenState.ts [16:137]


  public constructor(lease: ILease, context: Context) {
    if (context.startTime === undefined) {
      throw RangeError(
        `LeaseBrokenState:constructor() error, context.startTime is undefined.`
      );
    }

    if (lease.leaseState === LeaseStateType.Broken) {
      /*
       * LeaseState: Broken
       * LeaseStatus: Unlocked
       * LeaseDurationType: undefined
       * LeaseExpireTime: undefined
       * LeaseDurationSeconds: undefined
       * LeaseBreakTime: undefined
       * LeaseId: uuid
       */
      if (lease.leaseStatus !== LeaseStatusType.Unlocked) {
        throw RangeError(
          `LeaseBrokenState:constructor() error, incoming lease status ${lease.leaseStatus} is not ${LeaseStatusType.Unlocked}.`
        );
      }

      if (lease.leaseId === undefined) {
        throw RangeError(
          `LeaseBrokenState:constructor() error, incoming leaseId ${lease.leaseId} should not be undefined.`
        );
      }

      if (lease.leaseExpireTime !== undefined) {
        throw RangeError(
          `LeaseBrokenState:constructor() error, incoming leaseExpireTime ${lease.leaseExpireTime} is not undefined.`
        );
      }

      if (lease.leaseDurationSeconds !== undefined) {
        throw RangeError(
          `LeaseBrokenState:constructor() error, incoming leaseDurationSeconds ${lease.leaseDurationSeconds} is not undefined.`
        );
      }

      if (lease.leaseDurationType !== undefined) {
        throw RangeError(
          `LeaseBrokenState:constructor() error, incoming leaseDurationType ${lease.leaseDurationType} is not undefined.`
        );
      }

      if (lease.leaseBreakTime !== undefined) {
        throw RangeError(
          `LeaseBrokenState:constructor() error, incoming leaseBreakTime ${lease.leaseBreakTime} is not undefined.`
        );
      }

      // Deep copy
      super({ ...lease }, context);
    } else if (lease.leaseState === LeaseStateType.Breaking) {
      /*
       * LeaseState: Breaking
       * LeaseStatus: Locked
       * LeaseDurationType: undefined
       * LeaseExpireTime: undefined
       * LeaseDurationSeconds: undefined
       * LeaseBreakTime: now >= timestamp
       * LeaseId: uuid
       */
      if (lease.leaseStatus !== LeaseStatusType.Locked) {
        throw RangeError(
          `LeaseBrokenState:constructor() error, incoming lease status ${lease.leaseStatus} is not ${LeaseStatusType.Locked}.`
        );
      }

      if (lease.leaseId === undefined) {
        throw RangeError(
          `LeaseBrokenState:constructor() error, incoming leaseId ${lease.leaseId} should not be undefined.`
        );
      }

      if (lease.leaseExpireTime !== undefined) {
        throw RangeError(
          `LeaseBrokenState:constructor() error, incoming leaseExpireTime ${lease.leaseExpireTime} is not undefined.`
        );
      }

      if (lease.leaseDurationSeconds !== undefined) {
        throw RangeError(
          `LeaseBrokenState:constructor() error, incoming leaseDurationSeconds ${lease.leaseDurationSeconds} is not undefined.`
        );
      }

      if (lease.leaseDurationType !== undefined) {
        throw RangeError(
          `LeaseBrokenState:constructor() error, incoming leaseDurationType ${lease.leaseDurationType} is not undefined.`
        );
      }

      if (
        lease.leaseBreakTime === undefined ||
        context.startTime < lease.leaseBreakTime
      ) {
        throw RangeError(
          `LeaseBrokenState:constructor() error, incoming leaseBreakTime ${lease.leaseBreakTime} is undefined, or larger than current time ${context.startTime}.`
        );
      }

      super(
        {
          leaseId: lease.leaseId,
          leaseState: LeaseStateType.Broken,
          leaseStatus: LeaseStatusType.Unlocked,
          leaseDurationType: undefined,
          leaseDurationSeconds: undefined,
          leaseExpireTime: undefined,
          leaseBreakTime: undefined
        },
        context
      );
    } else {
      throw RangeError(
        `LeaseBrokenState:constructor() error, incoming lease state ${lease.leaseState} is neither ${LeaseStateType.Broken} or ${LeaseStateType.Breaking}.`
      );
    }
  }