eventhandler.go 1.0 KB

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