Skip to content
go-libfossil Artifact [572df6dd05]
Login

Artifact [572df6dd05]

Artifact 572df6dd05de503e4add227442f6204b586ef32faf9ed45ff86f632029771def:


package simio

// Env bundles all I/O abstractions needed for deterministic simulation.
// Pass *Env through call chains instead of threading individual interfaces.
type Env struct {
	Clock   Clock
	Rand    Rand
	Storage Storage
}

// RealEnv returns an Env wired to real system I/O (production use).
func RealEnv() *Env {
	return &Env{
		Clock:   RealClock{},
		Rand:    CryptoRand{},
		Storage: OSStorage{},
	}
}

// SimEnv returns an Env wired to deterministic implementations
// controlled by the given seed.
func SimEnv(seed int64) *Env {
	return &Env{
		Clock:   NewSimClock(),
		Rand:    NewSeededRand(seed),
		Storage: NewMemStorage(),
	}
}