ServerConfig.ts 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  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.port=obj.port||4840;
  16. d.allowAnonymous=obj.allowAnonymous||false;
  17. d.maxConnections=obj.maxConnections||1000;
  18. d.dynamics=obj.dynamics||[];
  19. d.nodesets=obj.nodesets||[];
  20. return new ServerConfig(d);
  21. }
  22. addDynamic(dyn:DynamicNodeData){
  23. this.configData.dynamics?.forEach((dyn)=>{
  24. if(dyn.ident == dyn.ident){
  25. return false;
  26. }
  27. })
  28. this.configData.dynamics?.push(dyn);
  29. return true;
  30. }
  31. removeDynamic(ident:string){
  32. this.configData.dynamics?.forEach((dyn, idx)=>{
  33. if(dyn.ident == ident){
  34. this.configData.dynamics?.splice(idx,1);
  35. return true;
  36. }
  37. })
  38. return false;
  39. }
  40. }
  41. export interface ServerConfigData {
  42. manufacturerName?: string;
  43. productName?: string;
  44. softwareVersion?: string;
  45. applicationUri?: string;
  46. productUri?: string;
  47. applicationName?: string;
  48. port?: number;
  49. allowAnonymous?: boolean;
  50. maxConnections?: number;
  51. dynamics?:DynamicNodeData[];
  52. nodesets?:string[];
  53. }