yimultiscreenserver-sdk-web
Version:
YiMultiScreenServer SDK for Web
132 lines (111 loc) • 5.29 kB
text/typescript
import { Utils } from "../util/Utils";
import { CastSessionVO } from "../vo/cast/CastSessionVO";
import { ControllerDeviceVO } from "../vo/device/ControllerDeviceVO";
import { CastSlot } from "../vo/report/CastSlot";
import { DisplayReportVO } from "../vo/report/DisplayReportVO";
export class GlobalCache {
private readonly onlineDisplays: Map<string, number>;//显示端id为key,显示端code为value
private readonly connectedDisplays: Map<string, number>;//控制端guid为key,显示端code为value
private readonly displayReports: Map<number, DisplayReportVO>;//显示端code为key,实体为value
private readonly castSessions: Map<number, CastSessionVO>;//显示&控制终端均使用,castSessionId为key
private readonly controllers: Map<string, ControllerDeviceVO>;//控制终端&云端使用,guid为key
constructor() {
this.onlineDisplays = new Map();
this.connectedDisplays = new Map();
this.displayReports = new Map();
this.castSessions = new Map();
this.controllers = new Map();
}
public addOnlineDisplay(displayDeviceId: string, displayCode: number, report: DisplayReportVO): void {
this.onlineDisplays.set(displayDeviceId, displayCode);
this.displayReports.set(displayCode, report);
}
public removeOnlineDisplay(displayDeviceId: string, displayCode: number): void {
this.displayReports.delete(displayCode);
this.onlineDisplays.delete(displayDeviceId);
}
public clearOnlineDisplay(): void {
this.displayReports.clear();
this.onlineDisplays.clear();
}
public getOnlineDisplayByID(displayDeviceId: string): DisplayReportVO | null {
let displayCode: number | undefined = this.onlineDisplays.get(displayDeviceId)
if (undefined === displayCode || null === displayCode) {
return null;
}
return this.getOnlineDisplayByCode(displayCode!);
}
public getOnlineDisplayByCode(displayCode: number): DisplayReportVO | null {
let ori: DisplayReportVO | undefined = this.displayReports.get(displayCode);
if (undefined === ori || null === ori) {
return null;
}
return DisplayReportVO.copy(ori!);
}
public addConnectedDisplay(controllerGuid: string, displayCode: number, report: DisplayReportVO): void {
this.connectedDisplays.set(controllerGuid, displayCode);
this.onlineDisplays.set(report.displayDevice.displayDeviceId, displayCode);
this.displayReports.set(displayCode, report);
}
public removeConnectedDisplay(controllerGuid: string, displayCode: number): void {
this.connectedDisplays.delete(controllerGuid);
}
public clearConnectedDisplay(): void {
this.connectedDisplays.clear();
}
public getConnectedDisplayByID(controllerGuid: string): DisplayReportVO | null {
let displayCode: number | undefined = this.connectedDisplays.get(controllerGuid);
if (undefined === displayCode || null === displayCode) {
return null;
}
return this.getConnectedDisplayByCode(displayCode);
}
public getConnectedDisplayByCode(displayCode: number): DisplayReportVO | null {
return this.getOnlineDisplayByCode(displayCode);
}
public addCastSession(castSessionId: number, session: CastSessionVO): void {
this.castSessions.set(castSessionId, session);
}
public removeCastSession(castSessionId: number): void {
this.castSessions.delete(castSessionId);
}
public castSessionValues(): IterableIterator<CastSessionVO> {
return this.castSessions.values();
}
public getCastSession(castSessionId: number): CastSessionVO | null {
let session: CastSessionVO = new CastSessionVO();
if (0 === this.castSessions.size || !this.castSessions.has(castSessionId)) {
return null;
}
let ori: CastSessionVO | undefined = this.castSessions.get(castSessionId);
session.castSessionId = ori!.castSessionId;
session.displayCode = ori!.displayCode;
session.guid = ori!.guid;
session.castType = ori!.castType;;
session.castProtocol = ori!.castProtocol;
return session;
}
public clearCastSessions(): void {
this.castSessions.clear();
}
public addControllerDevice(guid: string, device: ControllerDeviceVO): void {
this.controllers.set(guid, device);
}
public removeControllerDevice(guid: string): void {
this.controllers.delete(guid);
}
public getControllerDevice(guid: string): ControllerDeviceVO | null {
let copy: ControllerDeviceVO = new ControllerDeviceVO();
if (0 === this.controllers.size || !this.controllers.has(guid)) {
return null;
}
let ori: ControllerDeviceVO | undefined = this.controllers.get(guid);
copy.guid = ori!.guid;
copy.controllerDeviceType = ori!.controllerDeviceType;
copy.ip = ori!.ip;
copy.gateway = ori!.gateway;
copy.mask = ori!.mask;
copy.outIp = ori!.outIp;
return copy;
}
}