Skip to content

feat: PulseGrpcStreamService and MapStreamQueryGrpc() for gRPC server-streaming (Low Priority) #299

@samtrion

Description

@samtrion

User Story

As a developer exposing Pulse stream queries over gRPC, I want PulseGrpcStreamService and MapStreamQueryGrpc(), so that gRPC clients can consume IMediator.StreamQueryAsync results via server-streaming RPCs.


Background

⚠️ Low priority — implement only after all Tier 1–5 items are complete.


Requirements

  • Create src/NetEvolve.Pulse.AspNetCore/Grpc/PulseGrpcStreamService.cs:
    • �bstract class PulseGrpcStreamService<TQuery, TResponse> that writes to IServerStreamWriter by iterating IMediator.StreamQueryAsync.
    • Concrete subclasses define Protobuf mapping.
  • Add MapStreamQueryGrpc<TQuery, TResponse>(this IEndpointRouteBuilder) extension method.
  • Unit tests for service and extension method.

Acceptance Criteria

  • Service writes all stream items to IServerStreamWriter.
  • Client cancellation stops the stream.
  • MapStreamQueryGrpc() registers the gRPC service correctly.
  • Unit tests pass.

Metadata

Metadata

Assignees

No one assigned

    Labels

    type:featureIndicates a new feature or enhancement to be added.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions