forked from quic-go/quic-go
42 lines
771 B
Go
42 lines
771 B
Go
package qlog
|
|
|
|
import (
|
|
"time"
|
|
|
|
"github.com/francoispqt/gojay"
|
|
)
|
|
|
|
var eventFields = [4]string{"time", "category", "event", "data"}
|
|
|
|
type events []event
|
|
|
|
var _ gojay.MarshalerJSONArray = events{}
|
|
|
|
func (e events) IsNil() bool { return e == nil }
|
|
func (e events) MarshalJSONArray(enc *gojay.Encoder) {
|
|
for _, ev := range e {
|
|
enc.Array(ev)
|
|
}
|
|
}
|
|
|
|
type eventDetails interface {
|
|
Category() category
|
|
Name() string
|
|
gojay.MarshalerJSONObject
|
|
}
|
|
|
|
type event struct {
|
|
Time time.Time
|
|
eventDetails
|
|
}
|
|
|
|
var _ gojay.MarshalerJSONArray = event{}
|
|
|
|
func (e event) IsNil() bool { return false }
|
|
func (e event) MarshalJSONArray(enc *gojay.Encoder) {
|
|
enc.Float64(float64(e.Time.UnixNano()) / 1e6)
|
|
enc.String(e.Category().String())
|
|
enc.String(e.Name())
|
|
enc.Object(e.eventDetails)
|
|
}
|