go-hep.org/x/hep@v0.38.1/fwk/internal/fwktest/task2.go (about) 1 // Copyright ©2017 The go-hep 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 5 package fwktest 6 7 import ( 8 "reflect" 9 10 "go-hep.org/x/hep/fwk" 11 ) 12 13 type task2 struct { 14 fwk.TaskBase 15 16 input string 17 output string 18 fct func(f int64) int64 19 } 20 21 func (tsk *task2) Configure(ctx fwk.Context) error { 22 var err error 23 msg := ctx.Msg() 24 msg.Infof("configure...\n") 25 26 err = tsk.DeclInPort(tsk.input, reflect.TypeOf(int64(1))) 27 if err != nil { 28 return err 29 } 30 31 err = tsk.DeclOutPort(tsk.output, reflect.TypeOf(int64(1))) 32 if err != nil { 33 return err 34 } 35 36 msg.Infof("configure... [done]\n") 37 return err 38 } 39 40 func (tsk *task2) StartTask(ctx fwk.Context) error { 41 msg := ctx.Msg() 42 msg.Infof("start...\n") 43 return nil 44 } 45 46 func (tsk *task2) StopTask(ctx fwk.Context) error { 47 msg := ctx.Msg() 48 msg.Infof("stop...\n") 49 return nil 50 } 51 52 func (tsk *task2) Process(ctx fwk.Context) error { 53 store := ctx.Store() 54 msg := ctx.Msg() 55 v, err := store.Get(tsk.input) 56 if err != nil { 57 return err 58 } 59 i := v.(int64) 60 o := tsk.fct(i) 61 err = store.Put(tsk.output, o) 62 if err != nil { 63 return err 64 } 65 66 msg.Infof("proc... (id=%d|%d) => [%d -> %d]\n", ctx.ID(), ctx.Slot(), i, o) 67 return nil 68 } 69 70 func init() { 71 fwk.Register(reflect.TypeOf(task2{}), 72 func(typ, name string, mgr fwk.App) (fwk.Component, error) { 73 var err error 74 tsk := &task2{ 75 TaskBase: fwk.NewTask(typ, name, mgr), 76 input: "ints1", 77 output: "massaged_ints1", 78 } 79 tsk.fct = func(f int64) int64 { 80 return f * f 81 } 82 83 err = tsk.DeclProp("Input", &tsk.input) 84 if err != nil { 85 return nil, err 86 } 87 88 err = tsk.DeclProp("Output", &tsk.output) 89 if err != nil { 90 return nil, err 91 } 92 93 err = tsk.DeclProp("Fct", &tsk.fct) 94 if err != nil { 95 return nil, err 96 } 97 98 return tsk, err 99 }, 100 ) 101 }