@ntrip/caster
Version:
NTRIP caster
64 lines (63 loc) • 2.68 kB
TypeScript
/// <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;
}