services
This commit is contained in:
+51
@@ -0,0 +1,51 @@
|
||||
package dbr
|
||||
|
||||
import "context"
|
||||
|
||||
// EventReceiver gets events from dbr methods for logging purposes.
|
||||
type EventReceiver interface {
|
||||
Event(eventName string)
|
||||
EventKv(eventName string, kvs map[string]string)
|
||||
EventErr(eventName string, err error) error
|
||||
EventErrKv(eventName string, err error, kvs map[string]string) error
|
||||
Timing(eventName string, nanoseconds int64)
|
||||
TimingKv(eventName string, nanoseconds int64, kvs map[string]string)
|
||||
}
|
||||
|
||||
// TracingEventReceiver is an optional interface an EventReceiver type can implement
|
||||
// to allow tracing instrumentation
|
||||
type TracingEventReceiver interface {
|
||||
SpanStart(ctx context.Context, eventName, query string) context.Context
|
||||
SpanError(ctx context.Context, err error)
|
||||
SpanFinish(ctx context.Context)
|
||||
}
|
||||
|
||||
type kvs map[string]string
|
||||
|
||||
var nullReceiver = &NullEventReceiver{}
|
||||
|
||||
// NullEventReceiver is a sentinel EventReceiver.
|
||||
// Use it if the caller doesn't supply one.
|
||||
type NullEventReceiver struct{}
|
||||
|
||||
// Event receives a simple notification when various events occur.
|
||||
func (n *NullEventReceiver) Event(eventName string) {}
|
||||
|
||||
// EventKv receives a notification when various events occur along with
|
||||
// optional key/value data.
|
||||
func (n *NullEventReceiver) EventKv(eventName string, kvs map[string]string) {}
|
||||
|
||||
// EventErr receives a notification of an error if one occurs.
|
||||
func (n *NullEventReceiver) EventErr(eventName string, err error) error { return err }
|
||||
|
||||
// EventErrKv receives a notification of an error if one occurs along with
|
||||
// optional key/value data.
|
||||
func (n *NullEventReceiver) EventErrKv(eventName string, err error, kvs map[string]string) error {
|
||||
return err
|
||||
}
|
||||
|
||||
// Timing receives the time an event took to happen.
|
||||
func (n *NullEventReceiver) Timing(eventName string, nanoseconds int64) {}
|
||||
|
||||
// TimingKv receives the time an event took to happen along with optional key/value data.
|
||||
func (n *NullEventReceiver) TimingKv(eventName string, nanoseconds int64, kvs map[string]string) {}
|
||||
Reference in New Issue
Block a user