rsocket-rxjs
Version:
RSocket Protocol Client Implementation
40 lines (39 loc) • 1.63 kB
TypeScript
import { Observable } from "rxjs";
import { RSocketConfig } from '../core/config/rsocket-config';
import { Payload } from '../core/protocol/payload';
export declare enum RSocketState {
Disconnected = "Disconnected",
Connected = "Connected",
Error = "Error",
Reconnecting = "Reconnecting"
}
export declare enum BackpressureStrategy {
BufferDelay = 0,
Drop = 1
}
export declare type RequestResponseHandler = (payload: Payload) => Observable<Payload>;
/**
* Use the requester to pull elements from the stream => "backpressure" support
*/
export declare type RequestStreamHandler = (payload: Payload) => {
stream: Observable<Payload>;
backpressureStrategy: BackpressureStrategy;
};
export declare type RequestFNFHandler = (payload: Payload) => void;
export interface RSocket<RequestPayload, ResponsePayload, RequestOptions = never> {
responder: RSocketResponder;
close(): Observable<void>;
state(): Observable<RSocketState>;
requestResponse(payload: RequestPayload, options?: RequestOptions): Observable<ResponsePayload>;
requestStream(payload: RequestPayload, requester?: Observable<number>, options?: RequestOptions): Observable<ResponsePayload>;
requestFNF(payload: RequestPayload, options?: RequestOptions): void;
getSetupConfig(): RSocketConfig;
}
export interface RSocketResponder {
handleRequestStream(payload: Payload): {
stream: Observable<Payload>;
backpressureStrategy: BackpressureStrategy;
};
handleRequestResponse(payload: Payload): Observable<Payload>;
handleFNF(payload: Payload): void;
}