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  }