move FilterSimpleArgs to the util package

This commit is contained in:
c9s 2022-06-13 11:20:29 +08:00
parent 0164cd1c72
commit eba6706b92
No known key found for this signature in database
GPG Key ID: 7385E7E464CB0A54
3 changed files with 33 additions and 24 deletions

View File

@ -1,11 +1,9 @@
package bbgo package bbgo
import ( import (
"reflect"
"github.com/sirupsen/logrus" "github.com/sirupsen/logrus"
"github.com/c9s/bbgo/pkg/fixedpoint" "github.com/c9s/bbgo/pkg/util"
) )
type Notifier interface { type Notifier interface {
@ -57,7 +55,7 @@ func (m *Notifiability) AddNotifier(notifier Notifier) {
func (m *Notifiability) Notify(obj interface{}, args ...interface{}) { func (m *Notifiability) Notify(obj interface{}, args ...interface{}) {
if str, ok := obj.(string); ok { if str, ok := obj.(string); ok {
simpleArgs := filterSimpleArgs(args) simpleArgs := util.FilterSimpleArgs(args)
logrus.Infof(str, simpleArgs...) logrus.Infof(str, simpleArgs...)
} }
@ -72,23 +70,3 @@ func (m *Notifiability) NotifyTo(channel string, obj interface{}, args ...interf
} }
} }
func filterSimpleArgs(args []interface{}) (simpleArgs []interface{}) {
for _, arg := range args {
switch arg.(type) {
case int, int64, int32, uint64, uint32, string, []byte, float64, float32, fixedpoint.Value:
simpleArgs = append(simpleArgs, arg)
default:
rt := reflect.TypeOf(arg)
if rt.Kind() == reflect.Ptr {
rt = rt.Elem()
}
switch rt.Kind() {
case reflect.Float64, reflect.Float32, reflect.String, reflect.Int, reflect.Int64, reflect.Uint64:
simpleArgs = append(simpleArgs, arg)
}
}
}
return simpleArgs
}

View File

@ -100,3 +100,4 @@ func newTypeValueInterface(typ reflect.Type) interface{} {
dst := reflect.New(typ) dst := reflect.New(typ)
return dst.Interface() return dst.Interface()
} }

30
pkg/util/simple_args.go Normal file
View File

@ -0,0 +1,30 @@
package util
import (
"reflect"
"github.com/c9s/bbgo/pkg/fixedpoint"
)
// FilterSimpleArgs filters out the simple type arguments
// int, string, bool, and []byte
func FilterSimpleArgs(args []interface{}) (simpleArgs []interface{}) {
for _, arg := range args {
switch arg.(type) {
case int, int64, int32, uint64, uint32, string, []byte, float64, float32, fixedpoint.Value:
simpleArgs = append(simpleArgs, arg)
default:
rt := reflect.TypeOf(arg)
if rt.Kind() == reflect.Ptr {
rt = rt.Elem()
}
switch rt.Kind() {
case reflect.Float64, reflect.Float32, reflect.String, reflect.Int, reflect.Int32, reflect.Uint32, reflect.Int64, reflect.Uint64, reflect.Bool:
simpleArgs = append(simpleArgs, arg)
}
}
}
return simpleArgs
}