open-collaboration-server
Version:
Open Collaboration Server implementation, part of the Open Collaboration Tools project
40 lines • 1.56 kB
TypeScript
import { CredentialsManager } from './credentials-manager.js';
import { Peer, Room, User } from './types.js';
import { Info, Event, Disposable, JoinRoomResponse, JoinRoomPollResponse } from 'open-collaboration-protocol';
import { Logger } from './utils/logging.js';
export interface PreparedRoom {
id: string;
jwt: string;
}
export interface RoomClaim {
room: string;
roomClock: number;
user: User;
host?: boolean;
}
export declare function isRoomClaim(obj: unknown): obj is RoomClaim;
export interface RoomJoinInfo extends Info {
failure: boolean;
}
export interface JoinPollResult extends Disposable {
update(result: JoinRoomResponse | JoinRoomPollResponse): void;
onUpdate: Event<JoinRoomResponse | JoinRoomPollResponse>;
result?: JoinRoomResponse | JoinRoomPollResponse;
}
export declare class RoomManager {
protected rooms: Map<string, Room>;
protected peers: Map<string, Room>;
protected pollResults: Map<string, JoinPollResult>;
private readonly messageRelay;
protected readonly credentials: CredentialsManager;
protected logger: Logger;
closeRoom(id: string): Promise<void>;
prepareRoom(user: User): Promise<PreparedRoom>;
join(peer: Peer, roomId: string): Promise<Room>;
leaveRoom(peer: Peer): Promise<void>;
getRoomById(id: string): Room | undefined;
getRoomByPeerId(id: string): Room | undefined;
requestJoin(room: Room, user: User): Promise<string>;
pollJoin(responseId: string): JoinPollResult | undefined;
}
//# sourceMappingURL=room-manager.d.ts.map