github.com/hduhelp/go-zero@v1.4.3/gateway/internal/eventhandler.go (about) 1 package internal 2 3 import ( 4 "io" 5 6 "github.com/golang/protobuf/jsonpb" 7 "github.com/golang/protobuf/proto" 8 "github.com/jhump/protoreflect/desc" 9 "github.com/hduhelp/go-zero/core/logx" 10 "google.golang.org/grpc/metadata" 11 "google.golang.org/grpc/status" 12 ) 13 14 type EventHandler struct { 15 Status *status.Status 16 writer io.Writer 17 marshaler jsonpb.Marshaler 18 } 19 20 func NewEventHandler(writer io.Writer, resolver jsonpb.AnyResolver) *EventHandler { 21 return &EventHandler{ 22 writer: writer, 23 marshaler: jsonpb.Marshaler{ 24 EmitDefaults: true, 25 AnyResolver: resolver, 26 }, 27 } 28 } 29 30 func (h *EventHandler) OnReceiveResponse(message proto.Message) { 31 if err := h.marshaler.Marshal(h.writer, message); err != nil { 32 logx.Error(err) 33 } 34 } 35 36 func (h *EventHandler) OnReceiveTrailers(status *status.Status, _ metadata.MD) { 37 h.Status = status 38 } 39 40 func (h *EventHandler) OnResolveMethod(_ *desc.MethodDescriptor) { 41 } 42 43 func (h *EventHandler) OnSendHeaders(_ metadata.MD) { 44 } 45 46 func (h *EventHandler) OnReceiveHeaders(_ metadata.MD) { 47 }