5397
}
5398
5399
>
event := ms.hBuilder.AddTimerStartedEvent(workflowTaskCompletedEventID, command)
mutable_state_impl.go
5400
>
ti, err := ms.ApplyTimerStartedEvent(event)
5401
>
if err != nil {
5402
return nil, nil, err
5403
}
5405
}
5406
5407
func (ms *MutableStateImpl) ApplyTimerStartedEvent(
5408
event *historypb.HistoryEvent,
5410
>
attributes := event.GetTimerStartedEventAttributes()
5411
>
timerID := attributes.GetTimerId()
5412
>
5413
>
startToFireTimeout := attributes.GetStartToFireTimeout().AsDuration()
5414
>
// TODO: Time skew needs to be taken in to account.
5415
>
expiryTime := timestamp.TimeValue(event.GetEventTime()).Add(startToFireTimeout)
5416
>
5417
>
ti := &persistencespb.TimerInfo{
5418
>
Version: event.GetVersion(),
5419
>
TimerId: timerID,
5420
>
ExpiryTime: timestamppb.New(expiryTime),
5421
>
StartedEventId: event.GetEventId(),
5422
>
TaskStatus: TimerTaskStatusNone,
5423
>
}
5424
>
5425
>
ms.pendingTimerInfoIDs[ti.TimerId] = ti
5426
>
ms.pendingTimerEventIDToID[ti.StartedEventId] = ti.TimerId
5427
>
ms.updateTimerInfos[ti.TimerId] = ti
5428
>
ms.timerInfosUserDataUpdated[ti.TimerId] = struct{}{}
5429
>
ms.approximateSize += ti.Size() + len(ti.TimerId)
5430
>
ms.executionInfo.UserTimerCount++
5431
>
5432
>
return ti, nil
5433
>
}
5434
5435
func (ms *MutableStateImpl) AddTimerFiredEvent(