using FLY.OBJComponents.Server;
using FLY.OBJComponents.Server.OBJProxy;
using FLY.Thick.Base.IService;
using FLY.Thick.Blowing.Common;
using FLY.Thick.Blowing.IService;
using FLY.Thick.Blowing.OBJ_INTERFACE;

namespace FLY.Thick.Blowing.Server.OBJProxy
{
    public class OBJProxy
    {
        public OBJProxy(int objsys_idx, TDGage gage)
        {
            TDGage mGage = gage;

            var ioDefineObjProxy = new FObjBase.Reflect.Reflect_Proxy(objsys_idx, OBJ_INTERFACE_ID.IO_ID,
                typeof(IFlyAdIoDefineService), FlyADIODefine.Instance);

            var gageOBJProxy = new FObjBase.Reflect.Reflect_Proxy(objsys_idx, OBJ_INTERFACE_ID.TDGAGE_ID,
                typeof(ITDGageService), gage);

            var curveOBJProxy = new FObjBase.Reflect.Reflect_Proxy(objsys_idx, OBJ_INTERFACE_ID.CURVE_ID,
                typeof(ICurveService), gage.curve);

            var flyAdOBJProxy = new FObjBase.Reflect.Reflect_Proxy(objsys_idx, OBJ_INTERFACE_ID.FLYAD_ID,
                typeof(IFlyADService), gage.flyAdService);

            var fixOBJProxy = new FObjBase.Reflect.Reflect_Proxy(objsys_idx, OBJ_INTERFACE_ID.FIX_ID,
                typeof(IFixService), gage.gmFix);

            var profileOBJProxy = new FObjBase.Reflect.Reflect_Proxy(objsys_idx, OBJ_INTERFACE_ID.PROFILE_ID, 
                typeof(IBlowingFixProfileService), mGage.profile);

            var scanWarningOBJProxy = new FObjBase.Reflect.Reflect_Proxy(objsys_idx, OBJ_INTERFACE_ID.SCANWARNING_ID,
                typeof(IScanWarningService), gage.scanWarning);

            var bulkDbObjProxy = new FObjBase.Reflect.Reflect_Proxy(objsys_idx, OBJ_INTERFACE_ID.BULKDB_ID,
                typeof(IBulkDbService), gage.bulkDb);


            var bDetectOBJProxy = new FObjBase.Reflect.Reflect_Proxy(objsys_idx, OBJ_INTERFACE_ID.BDETECT_ID, 
                typeof(IBlowingDetectService), mGage.gmRenZiJiaFix.mPDetect);

            var blowingOBJProxy = new FObjBase.Reflect.Reflect_Proxy(objsys_idx, OBJ_INTERFACE_ID.RENZIJIA_ID,
                typeof(IBlowingFixService), mGage.gmRenZiJiaFix);

            var warnSystemOBJProxy = new FObjBase.Reflect.Reflect_Proxy(objsys_idx, OBJ_INTERFACE_ID.WARNING_OBJ_ID,
                typeof(OBJComponents.IService.IWarningSystem2Service), gage.warning);

            var jsonDistOBJProxy = new FObjBase.Reflect.Reflect_Proxy(objsys_idx, OBJ_INTERFACE_ID.JSONDIST_ID,
                typeof(OBJComponents.IService.IJsonDistService), new OBJComponents.Server.JsonDist());

            gageOBJProxy.CurrObjSys.Start_Conn_Server(
                Misc.StringConverter.ToIPEndPoint(gage.sysParam.Addr));
        }
    }
}