using System; using System.Collections.Generic; using System.Data; using System.Diagnostics; using System.IO; using System.Linq; using System.Net; using System.Net.Sockets; using System.Reflection; using System.Runtime.InteropServices; using System.Text.RegularExpressions; using System.Threading; using System.Threading.Tasks; using System.Windows.Forms; using SystemX.Common; using SystemX.Common.Serialization; using SystemX.Net.BaseProtocol; using SystemX.Net.Comm; using SystemX.Net.Comm.IIS_FTP; using SystemX.Net.Schedule; using SystemX.Net.XAdaptor.PC; using static SystemX.Net.Platform.Common.Util.LogMessage; namespace SystemX.Net.XAdaptor.Manager { public class XAdaptorManager { private string strCreateConfigFilePos; public XAdaptorManager(string strConfigFilePos = "") { AssemblyName assemblyName = Assembly.GetExecutingAssembly().GetName(); Version assemblyVersion = assemblyName.Version; MessageOutput.ConsoleWrite(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss>>") + @"Use CP-Server[X] Adaptor Version for [CPXV2][" + assemblyVersion.ToString() + "] " + "[SystemX.Net.XAdaptor.Manager : XAdaptorManager]", ConsoleColor.Green, LogMessageLevel.FATAL); strCreateConfigFilePos = string.Empty; Create(); strCreateConfigFilePos = strConfigFilePos; if(strCreateConfigFilePos.Length > 0) SetConfigureFilePos(strCreateConfigFilePos); } public void Create() { xAdaptor = new XAdaptorPC(); if (strCreateConfigFilePos.Length > 0) SetConfigureFilePos(strCreateConfigFilePos); } private XAdaptorPC xAdaptor; public IXPCAdaptor MgrConn { get { return xAdaptor; } } public IUIM MgrUIMConn { get { return xAdaptor; } } public IComXPCAdaptor MgrComConn { get { return xAdaptor; } } public XAdaptorSystem GetAdaptorHandler { get { return xAdaptor; } } public bool GetClientInfoState() { return xAdaptor.StateClientGetInformation; } public long GetLastCommandTime() { return xAdaptor.GetLastCommandTime(); } public long GetLastStreamTime() { return xAdaptor.GetLastStreamTime(); } public bool IsConnect { get { return xAdaptor.StateClientSocketConnect && xAdaptor.StateClientStreamSocketConnect; } } public bool CommandSocketConn { get { return xAdaptor.StateClientSocketConnect; } } public bool StreamSocketConn { get { return xAdaptor.StateClientStreamSocketConnect; } } public bool GetServerTestListLoadState() { return GetAdaptorHandler.ServerTestListLoadState; } public bool CheckStationTestListReload(int nStationID) { bool bNeedReload = false; foreach(int nStID in xAdaptor.GetReloadNeedStation()) { if (nStID == nStationID) { if (xAdaptor.GetStateReloadNeedTestList(nStID)) bNeedReload = true; break; } } return bNeedReload; } private int[] NeedTestListReloadList() { return xAdaptor.GetReloadNeedStation(); } private bool GetStationTestListReload(int nStationID) { return xAdaptor.GetStateReloadNeedTestList(nStationID); } public void SetStationTestListReloadStateOff(int nStationID) { xAdaptor.SetStateReloadNeedTestList(nStationID); } public IControlTestListDataSet GetTestListContainer() { //string v = (xAdaptor.CurrentTestList() as TProdTestListInfo).GetTestListCntID(); return xAdaptor.CurrentTestList(); } public DataSet GetTestListDataSet() { return xAdaptor.CurrentTestList().getTestListDataSet(); } public eSetConfigFileResult SetConfigureFilePos(string strConfigFilePos = "") { return xAdaptor.SetConfigureFile(strConfigFilePos); } /* public bool CheckServerState() { return ((IXPCAdaptor)xAdaptor).WaitCheckServerState(); } */ public async Task AsyncWaitCheckServerState(bool bRetryAutoConnect = true) { bool bResult = await ((IXPCAdaptor)xAdaptor).RestoreConnAfterConfirmConn(bRetryAutoConnect).ConfigureAwait(false); if (bResult) { GetAdaptorHandler.ServerTestListLoadState = false; } return bResult; } public eFTPServiceStatus CheckStateFTP() { return GetAdaptorHandler.StateFTP; } private eFTPServiceStatus CheckFTP() { for (int n = 0; n < 3; n++) { GetAdaptorHandler.StateFTP = xAdaptor.StartFTPService(); if (GetAdaptorHandler.StateFTP == eFTPServiceStatus.Connected) break; if (GetAdaptorHandler.StateFTP == eFTPServiceStatus.Unused) break; } return GetAdaptorHandler.StateFTP; } public async Task Connect(string strConfigFilePos = "") { if (xAdaptor.SetConfigureFile(strConfigFilePos) == eSetConfigFileResult.SetConfigFail) { MessageOutput.ConsoleWrite(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss>>") + @"Config File Error. [SystemX.Net.XAdaptor.Manager : XAdaptorManager : Connect]\r\n", ConsoleColor.Yellow, LogMessageLevel.DEBUG); return false; } // TODO : FTP ALIS CheckFTP(); xAdaptor.ConnectStartStyleAuto = true; bool bGetResult = true; for (int i = 0; i < 3; i++) { bGetResult = await xAdaptor.ComClientTryDistributionConnet(); //return xAdaptor.ComClientTryConnet(); if (bGetResult) break; } return bGetResult; } public async Task WaitConnect(string strConfigFilePos = "") { if (xAdaptor.SetConfigureFile(strConfigFilePos) == eSetConfigFileResult.SetConfigFail) { MessageOutput.ConsoleWrite(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss>>") + @"Config File Error. [SystemX.Net.XAdaptor.Manager : XAdaptorManager : Connect]\r\n", ConsoleColor.Yellow, LogMessageLevel.DEBUG); return false; } // TODO : FTP ALIS CheckFTP(); xAdaptor.ConnectStartStyleAuto = false; bool bGetResult = true; for (int i = 0; i < 3; i++) { bGetResult = await xAdaptor.WaitComClientTryDistributionConnet(); if (bGetResult) break; } return bGetResult; } public bool Disconnect() { return xAdaptor.ComClientTryDisconnect(); } } }