blob: 18d05a46e06c34d3f13da390ffa0f69c3d69fe47 [file] [log] [blame]
Jiri Simsad7616c92015-03-24 23:44:30 -07001// Copyright 2015 The Vanadium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style
3// license that can be found in the LICENSE file.
4
Cosmos Nicolaou90610bd2014-12-02 22:31:04 -08005package modules_test
6
7import (
8 "fmt"
Cosmos Nicolaou90610bd2014-12-02 22:31:04 -08009 "os"
10
Cosmos Nicolaou1381f8a2015-03-13 09:40:34 -070011 "v.io/x/ref/test"
12 "v.io/x/ref/test/modules"
Cosmos Nicolaou90610bd2014-12-02 22:31:04 -080013)
14
Todd Wang95873902015-05-22 14:21:30 -070015var Echo = modules.Register(func(env *modules.Env, args ...string) error {
Cosmos Nicolaou90610bd2014-12-02 22:31:04 -080016 for i, a := range args {
Todd Wang95873902015-05-22 14:21:30 -070017 fmt.Fprintf(env.Stdout, "%d: %s\n", i, a)
Cosmos Nicolaou90610bd2014-12-02 22:31:04 -080018 }
19 return nil
Todd Wang95873902015-05-22 14:21:30 -070020}, "echo")
Cosmos Nicolaou90610bd2014-12-02 22:31:04 -080021
22func ExampleDispatch() {
Todd Wang95873902015-05-22 14:21:30 -070023 if modules.IsChildProcess() {
24 // Child process dispatches to the echo program.
Cosmos Nicolaou90610bd2014-12-02 22:31:04 -080025 if err := modules.Dispatch(); err != nil {
Todd Wang95873902015-05-22 14:21:30 -070026 panic(err)
Cosmos Nicolaou90610bd2014-12-02 22:31:04 -080027 }
28 return
29 }
Todd Wang95873902015-05-22 14:21:30 -070030 // Parent process spawns the echo program.
Todd Wang60052d82015-05-22 15:00:10 -070031 ctx, shutdown := test.V23Init()
Todd Wang95873902015-05-22 14:21:30 -070032 defer shutdown()
Cosmos Nicolaou9e909842015-03-17 11:58:59 -070033 sh, _ := modules.NewShell(ctx, nil, false, nil)
Cosmos Nicolaou90610bd2014-12-02 22:31:04 -080034 defer sh.Cleanup(nil, nil)
Todd Wang95873902015-05-22 14:21:30 -070035 h, _ := sh.Start(nil, Echo, "a", "b")
Cosmos Nicolaou90610bd2014-12-02 22:31:04 -080036 h.Shutdown(os.Stdout, os.Stderr)
37 // Output:
Suharsh Sivakumar9d17e4a2015-02-02 22:42:16 -080038 // 0: a
39 // 1: b
Cosmos Nicolaou90610bd2014-12-02 22:31:04 -080040}
41
Todd Wang95873902015-05-22 14:21:30 -070042func ExampleDispatchAndExitIfChild() {
43 // Child process dispatches to the echo program.
44 modules.DispatchAndExitIfChild()
45 // Parent process spawns the echo program.
Todd Wang60052d82015-05-22 15:00:10 -070046 ctx, shutdown := test.V23Init()
Suharsh Sivakumar19fbf992015-01-23 11:02:27 -080047 defer shutdown()
Cosmos Nicolaou9e909842015-03-17 11:58:59 -070048 sh, _ := modules.NewShell(ctx, nil, false, nil)
Cosmos Nicolaou90610bd2014-12-02 22:31:04 -080049 defer sh.Cleanup(nil, nil)
Todd Wang95873902015-05-22 14:21:30 -070050 h, _ := sh.Start(nil, Echo, "c", "d")
Cosmos Nicolaou90610bd2014-12-02 22:31:04 -080051 h.Shutdown(os.Stdout, os.Stderr)
52 // Output:
Suharsh Sivakumar9d17e4a2015-02-02 22:42:16 -080053 // 0: c
54 // 1: d
Cosmos Nicolaou90610bd2014-12-02 22:31:04 -080055}