UNPKG

@ntrip/caster

Version:
64 lines (63 loc) 2.68 kB
/// <reference types="node" /> import stream = require('stream'); import events = require('events'); import { AuthManager, AuthRequest, AuthResponse } from './auth'; import { Mountpoint, MountpointOptions } from './mountpoint'; import { Connection } from './connection'; import { Transport } from './transport'; import { Sourcetable } from './sourcetable'; export interface CasterParameters { authManager: AuthManager; mountpointOptions?: MountpointOptions | ((mountpointName: string) => MountpointOptions); } export declare class Caster extends events.EventEmitter { static readonly NAME = "NodeNtripCaster/0.0.1"; private readonly authManager; private readonly mountpointOptions?; readonly _transports: Set<Transport>; get transports(): ReadonlySet<Transport>; readonly _connections: Set<Connection>; get connections(): ReadonlySet<Connection>; readonly _mountpoints: Map<string, Mountpoint>; get mountpoints(): ReadonlyMap<string, Mountpoint>; staticSourcetableEntries: Sourcetable.Entry[]; constructor(parameters: CasterParameters); authenticate(request: AuthRequest): Promise<AuthResponse>; private createMountpoint; private prepareMountpoint; private connect; addTransport(constructor: CasterTransportDefinition): Transport; removeTransport(transport: Transport): void; /** * Gets a list of sourcetable entries for the caster with an optional set of filters * * @param filters Optional filters to apply to the sourcetable list * @param auth Authentication request for auth filter */ getSourcetableEntries(filters?: Sourcetable.Filters, auth?: AuthRequest): Promise<Sourcetable.Entry[]>; /** * Generates the sourcetable for the caster with an optional set of filters * * @param filters Optional filters to apply to the sourcetable list * @param auth Authentication request for auth filter */ generateSourcetable(filters?: Sourcetable.Filters, auth?: AuthRequest): Promise<string>; } export interface CasterTransportInterface { authenticate(request: AuthRequest): Promise<AuthResponse>; connect(params: CasterConnectionParameters): Connection; generateSourcetable(filters?: Sourcetable.Filters, auth?: AuthRequest): Promise<string>; } export declare type CasterTransportDefinition = (caster: CasterTransportInterface) => Transport; export interface CasterConnectionParameters { type: 'server' | 'client'; mountpoint: string; transport: Transport; source: any; gga?: string; str?: string; input?: stream.Readable; output?: stream.Writable; stream?: stream.Duplex; auth?: AuthResponse; }