type waitGroupCounter … var _ … func (wgc *waitGroupCounter) Add(delta int) { … } type stackExcerpt … type stackFrame … var _ … func (se stackExcerpt) String() string { … } func (wgc *waitGroupCounter) Wait() { … } type Fake … var _ … type eventWaiterHeap … var _ … type eventWaiter … // NewFake constructs a new fake event clock. The given `r *rand.Rand` must // henceforth not be used for any other purpose. If `r` is nil then a // fresh one will be constructed, seeded with the current real time. // The clientWG can be `nil` and if not is used to let Run know about // additional work that has to complete before time can advance. func NewFake(t time.Time, fuzz time.Duration, r *rand.Rand) (*Fake, counter.GoRoutineCounter) { … } // GetNextTime returns the next time at which there is work scheduled, // and a bool indicating whether there is any such time func (fec *Fake) GetNextTime() (time.Time, bool) { … } // Run runs all the events scheduled, and all the events they // schedule, and so on, until there are none scheduled or the limit is not // nil and the next time would exceed the limit. The associated // GoRoutineCounter gates the advancing of time. That is, // time is not advanced until all the associated work is finished. func (fec *Fake) Run(limit *time.Time) { … } // SetTime sets the time and runs to completion all events that should // be started by the given time --- including any further events they // schedule func (fec *Fake) SetTime(t time.Time) { … } // Sleep returns after the given duration has passed. // Sleep must only be invoked in a goroutine that is counted // in the Fake's associated GoRoutineCounter. // Unlike the base FakeClock's Sleep, this method does not itself advance the clock // but rather leaves that up to other actors (e.g., Run). func (fec *Fake) Sleep(duration time.Duration) { … } // EventAfterDuration schedules the given function to be invoked once // the given duration has passed. func (fec *Fake) EventAfterDuration(f eventclock.EventFunc, d time.Duration) { … } // EventAfterTime schedules the given function to be invoked once // the given time has arrived. func (fec *Fake) EventAfterTime(f eventclock.EventFunc, t time.Time) { … } func (ewh eventWaiterHeap) Len() int { … } func (ewh eventWaiterHeap) Less(i, j int) bool { … } func (ewh eventWaiterHeap) Swap(i, j int) { … } func (ewh *eventWaiterHeap) Push(x interface{ … } func (ewh *eventWaiterHeap) Pop() interface{ … }