go-hep.org/x/hep@v0.38.1/fads/cmd/fads-app/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 main 6 7 import ( 8 "reflect" 9 10 "go-hep.org/x/hep/fwk" 11 ) 12 13 type task2 struct { 14 fwk.TaskBase 15 16 fct func(f float64) float64 17 } 18 19 func (tsk *task2) Configure(ctx fwk.Context) error { 20 var err error 21 msg := ctx.Msg() 22 msg.Infof("configure...\n") 23 24 msg.Infof("configure... [done]\n") 25 return err 26 } 27 28 func (tsk *task2) StartTask(ctx fwk.Context) error { 29 msg := ctx.Msg() 30 msg.Infof("start...\n") 31 return nil 32 } 33 34 func (tsk *task2) StopTask(ctx fwk.Context) error { 35 msg := ctx.Msg() 36 msg.Infof("stop...\n") 37 return nil 38 } 39 40 func (tsk *task2) Process(ctx fwk.Context) error { 41 store := ctx.Store() 42 msg := ctx.Msg() 43 msg.Infof("proc...\n") 44 v, err := store.Get("floats1") 45 if err != nil { 46 return err 47 } 48 v = tsk.fct(v.(float64)) 49 err = store.Put("massaged_floats1", v) 50 if err != nil { 51 return err 52 } 53 return nil 54 } 55 56 func init() { 57 fwk.Register(reflect.TypeOf(task2{}), 58 func(typ, name string, mgr fwk.App) (fwk.Component, error) { 59 var err error 60 tsk := &task2{ 61 TaskBase: fwk.NewTask(typ, name, mgr), 62 } 63 tsk.fct = func(f float64) float64 { 64 return f * f 65 } 66 67 err = tsk.DeclProp("Fct", &tsk.fct) 68 if err != nil { 69 return nil, err 70 } 71 72 err = tsk.DeclInPort("floats1", reflect.TypeOf(float64(1.0))) 73 if err != nil { 74 return nil, err 75 } 76 77 err = tsk.DeclOutPort("massaged_floats1", reflect.TypeOf(float64(1.0))) 78 if err != nil { 79 return nil, err 80 } 81 return tsk, err 82 }, 83 ) 84 }