@litert/televoke
Version:
A simple RPC service framework.
128 lines • 4.51 kB
TypeScript
/**
* Copyright 2025 Angus.Fenying <fenying@litert.org>
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import type * as CS from './Constants.v2';
import type { TelevokeError } from '../../Errors';
export type IBinLike = Buffer | string;
export type IBinLikeArray = IBinLike[];
export type IDecBinItem = Buffer[];
export type IEncBinItem = IBinLike | IBinLikeArray;
export interface ICommandPacket {
/**
* The command of this packet.
*/
cmd: CS.ECommand;
/**
* The type of this packet.
*/
typ: CS.EPacketType;
/**
* The sequence number of this packet.
*/
seq: number;
/**
* The content of this packet.
*/
ct: unknown;
}
export interface IRequestPacket extends ICommandPacket {
typ: CS.EPacketType.REQUEST;
}
export interface IErrorReplyPacket extends ICommandPacket {
typ: CS.EPacketType.ERROR_RESPONSE;
ct: TelevokeError;
}
export interface IOkReplyPacket extends ICommandPacket {
typ: CS.EPacketType.SUCCESS_RESPONSE;
}
export interface IApiRequestPacket<TIsReq extends boolean> extends IRequestPacket {
cmd: CS.ECommand.API_CALL;
ct: {
/**
* The name of the API to be invoked.
*/
name: string;
/**
* The arguments of the API to be invoked.
*/
body: TIsReq extends true ? IEncBinItem : Buffer[];
/**
* The encoding identifier of the body.
*
* @default 0 which means JSON
*/
bodyEnc?: number;
/**
* The extension binary chunks of the API to be invoked.
*/
binChunks?: TIsReq extends true ? IEncBinItem[] : Buffer[][];
};
}
export type IApiRequestPacketEncoding = IApiRequestPacket<true>;
export type IApiRequestPacketDecoded = IApiRequestPacket<false>;
export interface IApiReplyPacket<TIsReq extends boolean> extends IOkReplyPacket {
cmd: CS.ECommand.API_CALL;
ct: {
body: TIsReq extends true ? IEncBinItem : Buffer[];
/**
* The extension binary chunks of the API to be invoked.
*/
binChunks?: TIsReq extends true ? IEncBinItem[] : Buffer[][];
};
}
export type IApiReplyPacketEncoding = IApiReplyPacket<true>;
export type IApiReplyPacketDecoded = IApiReplyPacket<false>;
export interface IPingRequestPacket<TIsReq extends boolean> extends IRequestPacket {
cmd: CS.ECommand.PING;
ct: TIsReq extends true ? IEncBinItem : IDecBinItem;
}
export type IPingRequestPacketEncoding = IPingRequestPacket<true>;
export type IPingRequestPacketDecoded = IPingRequestPacket<false>;
export interface IPingReplyPacket<TIsReq extends boolean> extends IOkReplyPacket {
cmd: CS.ECommand.PING;
ct: TIsReq extends true ? IEncBinItem : Buffer[];
}
export type IPingReplyPacketEncoding = IPingReplyPacket<true>;
export type IPingReplyPacketDecoded = IPingReplyPacket<false>;
export interface IPushMessageRequestPacket<TIsReq extends boolean> extends IRequestPacket {
cmd: CS.ECommand.PUSH_MESSAGE;
ct: TIsReq extends true ? IEncBinItem : Buffer[];
}
export type IPushMessageRequestPacketEncoding = IPushMessageRequestPacket<true>;
export type IPushMessageRequestPacketDecoded = IPushMessageRequestPacket<false>;
export interface ICloseRequestPacket extends IRequestPacket {
cmd: CS.ECommand.CLOSE;
ct: null;
}
export interface IBinaryChunkRequestPacket<TIsReq extends boolean> extends IRequestPacket {
cmd: CS.ECommand.BINARY_CHUNK;
ct: {
/**
* The stream ID of this chunk should be sent to.
*/
streamId: number;
/**
* The index of this chunk in the stream.
*/
index: number;
/**
* The chunk data.
*/
body: TIsReq extends true ? IEncBinItem : Buffer[];
};
}
export type IBinaryChunkRequestPacketEncoding = IBinaryChunkRequestPacket<true>;
export type IBinaryChunkRequestPacketDecoded = IBinaryChunkRequestPacket<false>;
//# sourceMappingURL=Encoding.v2.decl.d.ts.map