ServerConfig.ts 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. import { type DynamicNodeData} from '@/ua/DynamicNode';
  2. export class ServerConfig {
  3. public configData;
  4. constructor(configData: ServerConfigData) {
  5. this.configData=configData;
  6. }
  7. public static load(obj: any) :ServerConfig{
  8. const d:ServerConfigData={};
  9. d.manufacturerName=obj.manufacturerName||"";
  10. d.productName=obj.productName||"";
  11. d.softwareVersion=obj.softwareVersion||"";
  12. d.applicationUri=obj.applicationUri||"";
  13. d.productUri=obj.productUri||"";
  14. d.applicationName=obj.applicationName||"";
  15. d.allowAnonymous=obj.allowAnonymous||false;
  16. d.dynamics=obj.dynamics||[];
  17. d.nodesets=obj.nodesets||[];
  18. return new ServerConfig(d);
  19. }
  20. addDynamic(dyn:DynamicNodeData){
  21. this.configData.dynamics?.forEach((dyn)=>{
  22. if(dyn.ident == dyn.ident){
  23. return false;
  24. }
  25. })
  26. this.configData.dynamics?.push(dyn);
  27. return true;
  28. }
  29. removeDynamic(ident:string){
  30. this.configData.dynamics?.forEach((dyn, idx)=>{
  31. if(dyn.ident == ident){
  32. this.configData.dynamics?.splice(idx,1);
  33. return true;
  34. }
  35. })
  36. return false;
  37. }
  38. }
  39. export interface ServerConfigData {
  40. manufacturerName?: string;
  41. productName?: string;
  42. softwareVersion?: string;
  43. applicationUri?: string;
  44. productUri?: string;
  45. applicationName?: string;
  46. allowAnonymous?: boolean;
  47. maxConnections?: number;
  48. dynamics?:DynamicNodeData[];
  49. nodesets?:string[];
  50. }