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  }