89
}
90
91
>
func (k Key) Sub(subtrahend Key) Key {
key.go
92
>
borrow := int64(0)
93
>
differenceTaskID := k.TaskID - subtrahend.TaskID
94
>
if differenceTaskID < 0 {
95
borrow = 1
96
differenceTaskID += MaximumKey.TaskID
97
}
98
99
>
fireTime := k.FireTime.UnixNano() - borrow
key.go
100
>
subtrahendFireTime := subtrahend.FireTime.UnixNano()
101
>
if fireTime < subtrahendFireTime {
102
panic(fmt.Sprintf("Task key Sub encountered underflow: self: %v, subtrahend: %v", k, subtrahend))
103
}
104
106
>
time.Unix(0, fireTime-subtrahendFireTime).UTC(),
107
>
int64(differenceTaskID),
108
>
)
109
}
110