import { type DynamicNodeData} from '@/ua/DynamicNode'; export class ServerConfig { public configData; constructor(configData: ServerConfigData) { this.configData=configData; } public static load(obj: any) :ServerConfig{ const d:ServerConfigData={}; d.manufacturerName=obj.manufacturerName||""; d.productName=obj.productName||""; d.softwareVersion=obj.softwareVersion||""; d.applicationUri=obj.applicationUri||""; d.productUri=obj.productUri||""; d.applicationName=obj.applicationName||""; d.allowAnonymous=obj.allowAnonymous||false; d.dynamics=obj.dynamics||[]; d.nodesets=obj.nodesets||[]; return new ServerConfig(d); } addDynamic(dyn:DynamicNodeData){ this.configData.dynamics?.forEach((dyn)=>{ if(dyn.ident == dyn.ident){ return false; } }) this.configData.dynamics?.push(dyn); return true; } removeDynamic(ident:string){ this.configData.dynamics?.forEach((dyn, idx)=>{ if(dyn.ident == ident){ this.configData.dynamics?.splice(idx,1); return true; } }) return false; } } export interface ServerConfigData { manufacturerName?: string; productName?: string; softwareVersion?: string; applicationUri?: string; productUri?: string; applicationName?: string; allowAnonymous?: boolean; maxConnections?: number; dynamics?:DynamicNodeData[]; nodesets?:string[]; }