Class EventStream<ResponseT extends AsyncResponse,ItemT>
- java.lang.Object
-
- pl.gsmservice.gateway.utils.reactive.EventStream<ResponseT,ItemT>
-
- Type Parameters:
ResponseT- the AsyncResponse type that contains the event streamItemT- the type that events are deserialized into
- All Implemented Interfaces:
org.reactivestreams.Publisher<ItemT>
public class EventStream<ResponseT extends AsyncResponse,ItemT> extends java.lang.Object implements org.reactivestreams.Publisher<ItemT>A reactive event stream publisher that can handle different protocols (SSE, JSONL) and emits typed events with proper backpressure handling.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static interfaceEventStream.Protocol<ParsedT,ItemT>Protocol interface that defines how to parse and process different event stream formats
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description java.util.concurrent.CompletableFuture<ResponseT>body()Returns the AsyncResponse body.java.util.concurrent.CompletableFuture<java.lang.String>contentType()Returns the value of the Content-Type header.static <ResponseT extends AsyncResponse,ItemT>
EventStream<ResponseT,ItemT>forJsonL(java.util.concurrent.CompletableFuture<ResponseT> asyncResponseFuture, com.fasterxml.jackson.core.type.TypeReference<ItemT> typeReference, com.fasterxml.jackson.databind.ObjectMapper objectMapper)Create an EventStream for JSONL (JSON Lines) formatstatic <ResponseT extends AsyncResponse,ItemT>
EventStream<ResponseT,ItemT>forSSE(java.util.concurrent.CompletableFuture<ResponseT> asyncResponseFuture, com.fasterxml.jackson.core.type.TypeReference<ItemT> typeReference, com.fasterxml.jackson.databind.ObjectMapper objectMapper, java.lang.String terminalMessage)Create an EventStream for SSE (Server-Sent Events) formatjava.util.concurrent.CompletableFuture<java.net.http.HttpResponse<Blob>>rawResponse()Returns the raw HTTP response.java.util.concurrent.CompletableFuture<java.lang.Integer>statusCode()Returns the HTTP status code.voidsubscribe(org.reactivestreams.Subscriber<? super ItemT> subscriber)
-
-
-
Method Detail
-
forSSE
public static <ResponseT extends AsyncResponse,ItemT> EventStream<ResponseT,ItemT> forSSE(java.util.concurrent.CompletableFuture<ResponseT> asyncResponseFuture, com.fasterxml.jackson.core.type.TypeReference<ItemT> typeReference, com.fasterxml.jackson.databind.ObjectMapper objectMapper, java.lang.String terminalMessage)
Create an EventStream for SSE (Server-Sent Events) format
-
forJsonL
public static <ResponseT extends AsyncResponse,ItemT> EventStream<ResponseT,ItemT> forJsonL(java.util.concurrent.CompletableFuture<ResponseT> asyncResponseFuture, com.fasterxml.jackson.core.type.TypeReference<ItemT> typeReference, com.fasterxml.jackson.databind.ObjectMapper objectMapper)
Create an EventStream for JSONL (JSON Lines) format
-
contentType
public java.util.concurrent.CompletableFuture<java.lang.String> contentType()
Returns the value of the Content-Type header.
-
statusCode
public java.util.concurrent.CompletableFuture<java.lang.Integer> statusCode()
Returns the HTTP status code.
-
rawResponse
public java.util.concurrent.CompletableFuture<java.net.http.HttpResponse<Blob>> rawResponse()
Returns the raw HTTP response.
-
body
public java.util.concurrent.CompletableFuture<ResponseT> body()
Returns the AsyncResponse body.
-
subscribe
public void subscribe(org.reactivestreams.Subscriber<? super ItemT> subscriber)
- Specified by:
subscribein interfaceorg.reactivestreams.Publisher<ResponseT extends AsyncResponse>
-
-