in src/blob/lease/LeaseLeasedState.ts [131:220]
public break(breakPeriod?: number): ILeaseState {
if (this.lease.leaseDurationType === LeaseDurationType.Infinite) {
if (breakPeriod === 0 || breakPeriod === undefined) {
return new LeaseBrokenState(
{
leaseId: this.lease.leaseId,
leaseState: LeaseStateType.Broken,
leaseStatus: LeaseStatusType.Unlocked,
leaseDurationType: undefined,
leaseDurationSeconds: undefined,
leaseExpireTime: undefined,
leaseBreakTime: undefined
},
this.context
);
} else {
return new LeaseBreakingState(
{
leaseId: this.lease.leaseId,
leaseState: LeaseStateType.Breaking,
leaseStatus: LeaseStatusType.Locked,
leaseDurationType: undefined,
leaseDurationSeconds: undefined,
leaseExpireTime: undefined,
leaseBreakTime: new Date(
this.context.startTime!.getTime() + breakPeriod * 1000
)
},
this.context
);
}
}
// Following only cares about this.lease.leaseDurationType === LeaseDurationType.Fixed
if (breakPeriod === 0) {
return new LeaseBrokenState(
{
leaseId: this.lease.leaseId,
leaseState: LeaseStateType.Broken,
leaseStatus: LeaseStatusType.Unlocked,
leaseDurationType: undefined,
leaseDurationSeconds: undefined,
leaseExpireTime: undefined,
leaseBreakTime: undefined
},
this.context
);
}
if (breakPeriod === undefined) {
return new LeaseBreakingState(
{
leaseId: this.lease.leaseId,
leaseState: LeaseStateType.Breaking,
leaseStatus: LeaseStatusType.Locked,
leaseDurationType: undefined,
leaseDurationSeconds: undefined,
leaseExpireTime: undefined,
leaseBreakTime: this.lease.leaseExpireTime
},
this.context
);
}
if (breakPeriod < 0 || breakPeriod > 60) {
throw StorageErrorFactory.getInvalidLeaseBreakPeriod(
this.context.contextId
);
}
// Following only cares about breakPeriod between (0, 60]
const breakTime = new Date(
this.context.startTime!.getTime() + breakPeriod * 1000
);
return new LeaseBreakingState(
{
leaseId: this.lease.leaseId,
leaseState: LeaseStateType.Breaking,
leaseStatus: LeaseStatusType.Locked,
leaseDurationType: undefined,
leaseDurationSeconds: undefined,
leaseExpireTime: undefined,
leaseBreakTime: minDate(this.lease.leaseExpireTime!, breakTime)
},
this.context
);
}