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  }