CDSVmsObjectF.h 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. //---------------------------------------------------------------------------
  2. #ifndef CDSVmsObjectFH
  3. #define CDSVmsObjectFH
  4. //---------------------------------------------------------------------------
  5. #include <Classes.hpp>
  6. #include "LibSTLF.hpp"
  7. #include "ITSLogF.h"
  8. #include "VmsProtocolF.h"
  9. #include "CommonHdr.h"
  10. #include "CDSVmsFormF.h"
  11. #include "CDSVmsAxisF.h"
  12. //---------------------------------------------------------------------------
  13. #define CHANGEDATE (Now().FormatString("yyyymmddhhnnss"))
  14. //통신프로세스 정보
  15. typedef struct tagCommProcessInfo
  16. {
  17. ULONG ID;
  18. BYTE UseFlag : 1; /* 사용여부, 0:미사용 1:사용 */
  19. BYTE Status : 2; /* 프로세스 상태, 0:비정상 1:정상 2:정지 */
  20. BYTE dummy : 5; /* 임시 */
  21. bool ActiveIndicator; /* 스레드 실행 상태 */
  22. TDateTime wTimer; /* timer for connect wait time check */
  23. void *pThread; /* 스레드 포인터 */
  24. BYTE *pData; /* 데이터 포인터 */
  25. int CmdTimeOut;
  26. int WatchDogTime;
  27. int PollingTime;
  28. } COMM_PROCESS_INFO;
  29. //---------------------------------------------------------------------------
  30. class TVmsObj
  31. {
  32. public:
  33. TVmsObj(AnsiString AVMSID);
  34. virtual ~TVmsObj();
  35. public:
  36. BYTE UseFlag : 1; //사용여부, 0:미사용 1:사용
  37. BYTE Status : 2; //프로세스 상태, 0:비정상 1:정상 2:정지
  38. BYTE dummy : 5; //임시
  39. bool USE;
  40. bool MEMDEL;
  41. AnsiString VMSID; // N VARCHAR2(10) N VMS ID
  42. AnsiString VMSTYPE; // N CHAR(1) Y '0' VMS종류-VMS01
  43. AnsiString NAME; // N VARCHAR2(50) Y 명칭
  44. AnsiString IPADDRESS; // N VARCHAR2(15) Y IP Address
  45. BYTE LOCALNO; // N NUMBER(5) Y Local번호
  46. AnsiString WLTELNO; // N VARCHAR2(15) Y 무선통신연결번호
  47. AnsiString WLIP; // N VARCHAR2(15) Y 무선통신 IP Address(터미널서버)
  48. int WLPORT; // N NUMBER(5) Y 무선통신 Port(터미널서버)
  49. VMS_CURRENT_STATE State; /* VMS 상태 정보 수집 */
  50. VMS_ON_OFF OnOff; /* VMS ON/OFF 정보 */
  51. VMS_DOWNLOAD Download; /* VMS 다운로드 정보 */
  52. VMS_MODE Mode; /* VMS 제어모드 */
  53. VMS_AXIS_TRAFFIC Axis; /* VMS 축 교통정보 */
  54. VMS_INCIDENT Inc; /* VMS 돌발정보 표출 */
  55. VMS_DISPLAY_SET DspSet; /* VMS 표출설정 */
  56. VMS_CELL_LINK CellLink; /* VMS 이미지 배경 셀 링크 정보 */
  57. VMS_SEMIAUTO SemiAuto; /* VMS 반자동 메시지 정보 */
  58. IntMap<TVmsForm> FormLists; /* VMS 폼 리스트 */
  59. COMM_PROCESS_INFO Server; // 서버모듈 실행시 서버프로세스 정보
  60. COMM_PROCESS_INFO Client; // 클라이언트모듈 실행시 클라이언트 정보(For ASN.1)
  61. AnsiString ChangeDate; //상태변경시각(생성,접속,종료 등...
  62. TThreadList *pPackQueue; //운영단말의 처리를 수행할 패킷버퍼리스트
  63. int RowIdx;
  64. TStringList *FLogList; //로그를 화면에 출력할 TStringList
  65. TITSLog *FLogFile;
  66. void ClearFormList();
  67. TVmsForm *FindVmsForm(int AScenarioSeq, AnsiString AFormId);
  68. };
  69. //---------------------------------------------------------------------------
  70. class TVmsManager
  71. {
  72. public:
  73. TVmsManager();
  74. virtual ~TVmsManager();
  75. private:
  76. bool FLock;
  77. int GetVmsCount();
  78. public:
  79. ListMap<TVmsObj> FLists;
  80. void Lock();
  81. void UnLock();
  82. TVmsObj *FindVms(AnsiString AIPADDRESS);
  83. __property int Count = {read = GetVmsCount};
  84. };
  85. //---------------------------------------------------------------------------
  86. extern TVmsManager *VmsManager;
  87. //---------------------------------------------------------------------------
  88. #endif