diff --git a/examples/broken/main.go b/examples/broken/main.go new file mode 100644 index 0000000..dece6e7 --- /dev/null +++ b/examples/broken/main.go @@ -0,0 +1,27 @@ +// Example broken demonstrates how the environment will forcibly kill the +// program if an actor cannot shut down. +package main + +import "os" +import "log" +import "context" +import "git.tebibyte.media/sashakoshka/camfish" + +func main() { + camfish.Run("broken", + "Example broken demonstrates how the environment will " + + "forcibly kill the program if an actor cannot shut down", + new(broken)) +} + +// broken is an incorrectly implemented actor that cannot shut down. +type broken struct { } +var _ camfish.Runnable = new(broken) +func (this *broken) Type() string { return "broken" } + +func (this *broken) Run(ctx context.Context) error { + log.Println("(i) [broken] wait for approximately 8 minutes") + log.Printf("(i) [broken] if impatient, run: kill -9 %d", os.Getpid()) + <- (chan struct { })(nil) + return ctx.Err() // unreachable, of course +}