(data any, done bool)
| 679 | } |
| 680 | |
| 681 | func (handler *RpcResponseHandler) SendResponse(data any, done bool) error { |
| 682 | defer func() { |
| 683 | panichandler.PanicHandler("SendResponse", recover()) |
| 684 | }() |
| 685 | if handler.done.Load() { |
| 686 | return fmt.Errorf("request already done, cannot send additional response") |
| 687 | } |
| 688 | if done { |
| 689 | defer handler.close() |
| 690 | } |
| 691 | if handler.reqId == "" { |
| 692 | return nil |
| 693 | } |
| 694 | msg := &RpcMessage{ |
| 695 | ResId: handler.reqId, |
| 696 | Data: data, |
| 697 | Cont: !done, |
| 698 | } |
| 699 | barr, err := json.Marshal(msg) |
| 700 | if err != nil { |
| 701 | return err |
| 702 | } |
| 703 | select { |
| 704 | case handler.w.OutputCh <- barr: |
| 705 | return nil |
| 706 | case <-handler.ctx.Done(): |
| 707 | return fmt.Errorf("timeout sending response") |
| 708 | } |
| 709 | } |
| 710 | |
| 711 | func (handler *RpcResponseHandler) SendResponseError(err error) { |
| 712 | defer func() { |
no test coverage detected