rsocket-rxjs
Version:
RSocket Protocol Client Implementation
45 lines (44 loc) • 2.11 kB
TypeScript
import { Observable } from "rxjs";
import { RSocket, RSocketResponder, RSocketState } from "../api/rsocket.api";
import { RSocketConfig } from "../core/config/rsocket-config";
import { Payload } from "../core/protocol/payload";
export interface DecodedPayload<DataType = any, MetadataType = any> {
data?: DataType;
dataMimeType?: string;
metadata?: MetadataType;
metadataMimeType?: string;
}
export interface RSocketEncoderRequestOptions {
responseDataMimeType?: string;
responseMetadataMimeType?: string;
}
export interface RSocketEncoder {
mimeType: string;
encode: (data: any, rsocket: EncodingRSocket) => Uint8Array;
}
export interface RSocketDecoder {
mimeType: string;
decode: (buffer: Uint8Array, rsocket: EncodingRSocket) => any;
}
export declare class EncodingRSocket implements RSocket<DecodedPayload, DecodedPayload, RSocketEncoderRequestOptions> {
readonly rsocket: RSocket<Payload, Payload>;
private _encoder;
private _decoder;
constructor(rsocket: RSocket<Payload, Payload>);
get responder(): RSocketResponder;
close(): Observable<void>;
state(): Observable<RSocketState>;
addEncoder(encoder: RSocketEncoder): EncodingRSocket;
addDecoder(decoder: RSocketDecoder): EncodingRSocket;
removeEncoder(mimeType: string): EncodingRSocket;
removeDecoder(mimeType: string): EncodingRSocket;
requestResponse(payload: DecodedPayload, options?: RSocketEncoderRequestOptions): Observable<DecodedPayload>;
requestStream(payload: DecodedPayload, requester?: Observable<number>, options?: RSocketEncoderRequestOptions): Observable<DecodedPayload>;
requestFNF(payload: DecodedPayload): void;
setResponder(responder: RSocketResponder): void;
tryEncodePayload(payload: DecodedPayload): Payload;
tryEncodeObject(object: any, mimeType: string): Uint8Array;
tryDecodePayload(payload: Payload, options?: RSocketEncoderRequestOptions): DecodedPayload<any, any>;
tryDecodeObject(buffer: Uint8Array, mimeType: string): any;
getSetupConfig(): RSocketConfig;
}