morffix/rpc/response.go

30 lines
583 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
}
// remove request from map
delete(s.requests, response.ID)
// Send Response to Original Caller
r <- &response
}