using System.Collections.Generic;
using System.ServiceModel;

namespace MECF.Framework.Common.MultiProcess.ProcessCenter
{
    [ServiceContract]
    public interface IMultiProcessService
    {
        /// <summary>
        /// 是否可以进行工艺（向服务器请求2单位加热基数）
        /// </summary>
        /// <param name="sicMachineName">机台名称SIC08</param>
        /// <param name="pmName">腔体PM1</param>
        /// <param name="result">详细信息</param>
        /// <returns>结果</returns>
        [OperationContract]
        bool CanEnterProcessNow(string sicMachineName, string pmName, string state, out string result);

        /// <summary>
        /// 是否可以进行预热（向服务器请求1单位加热基数）
        /// </summary>
        /// <param name="sicMachineName">机台名称SIC08</param>
        /// <param name="pmName">腔体PM1</param>
        /// <param name="result">详细信息</param>
        /// <returns>结果</returns>
        [OperationContract]
        bool CanEnterProcessIdleNow(string sicMachineName, string pmName, string state, out string result);

        /// <summary>
        /// 更新设备腔体当前状态
        /// </summary>
        /// <param name="sicMachineName">机台名称SIC08</param>
        /// <param name="pmName">腔体PM1</param>
        /// <param name="state">腔体当前状态（当前基数：0，1，2，字符串类型）</param>
        /// <returns>更新结果</returns>
        [OperationContract]
        bool UpdateChamberState(string sicMachineName,string pmName, string state, string heatbase);

        /// <summary>
        /// 查询当前局域网内所有机台运行信息
        /// 回传例:
        /// State.Sic08.PM1.Process
        /// Total.4
        /// Process.1
        /// ProcessIdle.2
        /// </summary>
        /// <returns></returns>
        [OperationContract]
        List<string> QueryAllProcessInformation();

        /// <summary>
        /// 查询本机腔体状态
        /// </summary>
        /// <param name="sicMachineName">机台名称SIC08</param>
        /// <param name="pmName">腔体PM1</param>
        /// <returns>0，1，2，或"",字符串类型</returns>
        [OperationContract]
        string QueryMyProcessInformation(string sicMachineName, string pmName);

    }
}
