morffix/rpc/response.go
2024-04-28 01:58:45 +02:00

27 lines
521 B
Go

package rpc
import (
"context"
"encoding/json"
"log/slog"
)
func (s *server) handleResponse(ctx context.Context, data []byte) {
var response Response
err := json.Unmarshal(data, &response)
if err != nil {
slog.ErrorContext(ctx, "Cannot Parse Response", "err", err)
return
}
s.requestMutex.Lock()
defer s.requestMutex.Unlock()
r, ok := s.requests[response.ID]
if !ok {
slog.ErrorContext(ctx, "Unknown Response", "response", response)
return
}
// Send Response to Original Caller
r <- &response
}