using System;
using System.Data;
using System.Runtime.InteropServices;
using System.Threading.Tasks;
using SystemX.Net.BaseProtocol;
using SystemX.Net.Comm;
using SystemX.Net.XAdaptor;
using static SystemX.Net.XAdaptor.PC.XAdaptorPC;

namespace SystemX.Net.XAdaptor.PC
{
    [ComVisible(true)]
    [Guid("EF4648F0-5CAB-42CE-A184-F59D646FC1E3")]
    [InterfaceType(ComInterfaceType.InterfaceIsDual)]
    public interface IComXPCAdaptor
    {
        bool ComGetClientSocketConnect();
        bool ComGetClientStreamSocketConnect();
        bool ComGetClientInfo();
        bool ComGetAdaptorConnectState();

        string ComGetCommandMessage();
        string ComGetStreamMessage();

        Task<bool> ComClientTryConnet(int nCommandPortNum = int.MaxValue, int nStreamPortNum = int.MaxValue);
        Task<bool> ComClientTryDistributionConnet(int nCommandPortNum = int.MaxValue);
        Task<bool> WaitComClientTryDistributionConnet(int nCommandPortNum = int.MaxValue);

        bool ComClientTryDisconnect();
        bool ComCheckConnectState();
        bool ComCheckConnectStreamState();

        string ComSetConfigureFile(string strFilePos);
    }
}
