Full Mattermost server source with integrated Community Enterprise features. Includes vendor directory for offline/air-gapped builds. Structure: - enterprise-impl/: Enterprise feature implementations - enterprise-community/: Init files that register implementations - enterprise/: Bridge imports (community_imports.go) - vendor/: All dependencies for offline builds Build (online): go build ./cmd/mattermost Build (offline/air-gapped): go build -mod=vendor ./cmd/mattermost 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
56 lines
1.1 KiB
Go
56 lines
1.1 KiB
Go
package dsig
|
|
|
|
import (
|
|
"time"
|
|
|
|
"github.com/jonboulle/clockwork"
|
|
)
|
|
|
|
// Clock wraps a clockwork.Clock (which could be real or fake) in order
|
|
// to default to a real clock when a nil *Clock is used. In other words,
|
|
// if you attempt to use a nil *Clock it will defer to the real system
|
|
// clock. This allows Clock to be easily added to structs with methods
|
|
// that currently reference the time package, without requiring every
|
|
// instantiation of that struct to be updated.
|
|
type Clock struct {
|
|
wrapped clockwork.Clock
|
|
}
|
|
|
|
func (c *Clock) getWrapped() clockwork.Clock {
|
|
if c == nil {
|
|
return clockwork.NewRealClock()
|
|
}
|
|
|
|
return c.wrapped
|
|
}
|
|
|
|
func (c *Clock) After(d time.Duration) <-chan time.Time {
|
|
return c.getWrapped().After(d)
|
|
}
|
|
|
|
func (c *Clock) Sleep(d time.Duration) {
|
|
c.getWrapped().Sleep(d)
|
|
}
|
|
|
|
func (c *Clock) Now() time.Time {
|
|
return c.getWrapped().Now()
|
|
}
|
|
|
|
func NewRealClock() *Clock {
|
|
return &Clock{
|
|
wrapped: clockwork.NewRealClock(),
|
|
}
|
|
}
|
|
|
|
func NewFakeClock(wrapped clockwork.Clock) *Clock {
|
|
return &Clock{
|
|
wrapped: wrapped,
|
|
}
|
|
}
|
|
|
|
func NewFakeClockAt(t time.Time) *Clock {
|
|
return &Clock{
|
|
wrapped: clockwork.NewFakeClockAt(t),
|
|
}
|
|
}
|