Files
2025-07-11 09:21:30 +09:00

270 lines
7.4 KiB
C#

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<bool> 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<bool> 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<bool> 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();
}
}
}