using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Net;

using FObjBase;
using Misc;
using FLY.KSL.Server.Model;

namespace FLY.KSL.Server
{
    public class TDGage
    {
        #region 参数--------------------------------------------------------------------
        #region 初始化------------------------------------------------------------------
        public string mParamDirectory;//参数目录 m_path;//数据文件的 根目录默认是 Gage1
        public string mName;//名字 如:gage0
        #endregion
        #region 本地数据----------------------------------------------------------------
        public SysParam mSysParam;
        public FeedbackHeat mfeedback;
        #endregion
        #region 服务器数据--------------------------------------------------------------
        
        FLY.Thick.Blowing.Client.BlowingServiceClient blowingServiceClient;
        FLY.Thick.Blowing.Client.BlowingDetectServiceClient bDetect;
        FLY.Thick.Blowing.Client.BulkDbServiceClient bulkDbServiceClient;
        /// <summary>
        /// 报警系统
        /// </summary>
        public FLY.OBJComponents.Server.WarningSystem warning;

        public HistoryDb historyDb;

        DbModel dbModel;
        
        #endregion
        #endregion


        public TDGage(string nam)
        {
            mName = nam;
            mParamDirectory = mName;// @"D:\" + m_name;

            if (!System.IO.Directory.Exists(mParamDirectory))
            {
                System.IO.Directory.CreateDirectory(mParamDirectory);
            }
            System.Environment.CurrentDirectory = mParamDirectory;


            Init1();

        }


        #region Init登陆服务器初始化----------------------------------------------------
        /// <summary>
        /// 第1步, 加载本地数据
        /// </summary>
        public void Init1()
        {
            mSysParam = new SysParam();

            #region 与服务器同步的数据
            FObjServiceClientManager.Instance.ConnAddrs.Add(new ConnAddr() { ConnName = "blowing", Addr = mSysParam.BlowingAddr });

            blowingServiceClient = new FLY.Thick.Blowing.Client.BlowingServiceClient(FLY.Thick.Blowing360.OBJ_INTERFACE.OBJ_INTERFACE_ID.RENZIJIA_ID, "blowing");

            bDetect = new FLY.Thick.Blowing.Client.BlowingDetectServiceClient(FLY.Thick.Blowing360.OBJ_INTERFACE.OBJ_INTERFACE_ID.BDETECT_ID, "blowing");

            bulkDbServiceClient = new FLY.Thick.Blowing.Client.BulkDbServiceClient(FLY.Thick.Blowing360.OBJ_INTERFACE.OBJ_INTERFACE_ID.BULKDB_ID, "blowing");
            #endregion

            #region 提取保存的数据

            //---------------------------------------------------------------------------------------------------------------
            //数据库
            dbModel = new DbModel();
            dbModel.Init();
            dbModel.KeepDBSize(mSysParam.DBKeepMonth);
            historyDb = new HistoryDb();
            historyDb.Init(dbModel);

            //---------------------------------------------------------------------------------------------------------------
            //Warning_Create
            warning = new FLY.OBJComponents.Server.WarningSystem();
            warning.Init(historyDb.ErrorBuffer);
            Misc.BindingOperations.SetBinding(warning, nameof(warning.IsRinging), () =>
            {
                //报警不动作
                if (warning.IsRinging)
                {

                }
                else
                {

                }
            });


            mfeedback = new FeedbackHeat();


            mfeedback.Init(
                blowingServiceClient,
                bDetect,
                bulkDbServiceClient,
                warning,
                historyDb
                );
            

            #endregion

        }



        #endregion

    }
}