github.com/evdatsion/aphelion-dpos-bft@v0.32.1/tools/tm-monitor/mock/eventmeter.go (about) 1 package mock 2 3 import ( 4 stdlog "log" 5 "reflect" 6 7 amino "github.com/evdatsion/go-amino" 8 "github.com/evdatsion/aphelion-dpos-bft/libs/log" 9 em "github.com/evdatsion/aphelion-dpos-bft/tools/tm-monitor/eventmeter" 10 ) 11 12 type EventMeter struct { 13 latencyCallback em.LatencyCallbackFunc 14 disconnectCallback em.DisconnectCallbackFunc 15 eventCallback em.EventCallbackFunc 16 } 17 18 func (e *EventMeter) Start() error { return nil } 19 func (e *EventMeter) Stop() {} 20 func (e *EventMeter) SetLogger(l log.Logger) {} 21 func (e *EventMeter) RegisterLatencyCallback(cb em.LatencyCallbackFunc) { e.latencyCallback = cb } 22 func (e *EventMeter) RegisterDisconnectCallback(cb em.DisconnectCallbackFunc) { 23 e.disconnectCallback = cb 24 } 25 func (e *EventMeter) Subscribe(query string, cb em.EventCallbackFunc) error { 26 e.eventCallback = cb 27 return nil 28 } 29 func (e *EventMeter) Unsubscribe(query string) error { 30 e.eventCallback = nil 31 return nil 32 } 33 34 func (e *EventMeter) Call(callback string, args ...interface{}) { 35 switch callback { 36 case "latencyCallback": 37 e.latencyCallback(args[0].(float64)) 38 case "disconnectCallback": 39 e.disconnectCallback() 40 case "eventCallback": 41 e.eventCallback(args[0].(*em.EventMetric), args[1]) 42 } 43 } 44 45 type RpcClient struct { 46 Stubs map[string]interface{} 47 cdc *amino.Codec 48 } 49 50 func (c *RpcClient) Call(method string, params map[string]interface{}, result interface{}) (interface{}, error) { 51 s, ok := c.Stubs[method] 52 if !ok { 53 stdlog.Fatalf("Call to %s, but no stub is defined for it", method) 54 } 55 56 rv, rt := reflect.ValueOf(result), reflect.TypeOf(result) 57 rv, rt = rv.Elem(), rt.Elem() 58 rv.Set(reflect.ValueOf(s)) 59 60 return s, nil 61 } 62 63 func (c *RpcClient) Codec() *amino.Codec { 64 return c.cdc 65 } 66 67 func (c *RpcClient) SetCodec(cdc *amino.Codec) { 68 c.cdc = cdc 69 }