| // Copyright 2015 The Vanadium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style |
| // license that can be found in the LICENSE file. |
| |
| package modules_test |
| |
| import ( |
| "fmt" |
| "os" |
| |
| "v.io/x/ref/test" |
| "v.io/x/ref/test/modules" |
| ) |
| |
| var Echo = modules.Register(func(env *modules.Env, args ...string) error { |
| for i, a := range args { |
| fmt.Fprintf(env.Stdout, "%d: %s\n", i, a) |
| } |
| return nil |
| }, "echo") |
| |
| func ExampleDispatch() { |
| if modules.IsChildProcess() { |
| // Child process dispatches to the echo program. |
| if err := modules.Dispatch(); err != nil { |
| panic(err) |
| } |
| return |
| } |
| // Parent process spawns the echo program. |
| ctx, shutdown := test.V23Init() |
| defer shutdown() |
| sh, _ := modules.NewShell(ctx, nil, false, nil) |
| defer sh.Cleanup(nil, nil) |
| h, _ := sh.Start(nil, Echo, "a", "b") |
| h.Shutdown(os.Stdout, os.Stderr) |
| // Output: |
| // 0: a |
| // 1: b |
| } |
| |
| func ExampleDispatchAndExitIfChild() { |
| // Child process dispatches to the echo program. |
| modules.DispatchAndExitIfChild() |
| // Parent process spawns the echo program. |
| ctx, shutdown := test.V23Init() |
| defer shutdown() |
| sh, _ := modules.NewShell(ctx, nil, false, nil) |
| defer sh.Cleanup(nil, nil) |
| h, _ := sh.Start(nil, Echo, "c", "d") |
| h.Shutdown(os.Stdout, os.Stderr) |
| // Output: |
| // 0: c |
| // 1: d |
| } |