using FLY.OBJComponents.IService;
using FLY.OBJComponents.OBJ_INTERFACE;
using FObjBase;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;

namespace FLY.OBJComponents.Client
{
    public class PLCProxySystemServiceClient :  FObjBase.Reflect.Reflect_SeviceClient, IPLCProxySystemService
    {
        protected override Type InterfaceType => typeof(IPLCProxySystemService);

        /// <summary>
        /// 与PLC连接成功
        /// </summary>
        public bool IsConnectedWithPLC { get; set; } = false;
        public PLCProxySystemServiceClient(UInt32 serviceId) : base(serviceId) { }
        public PLCProxySystemServiceClient(UInt32 serviceId, string connName) : base(serviceId, connName) { }




        #region IPLCProxySystemService
        public void FeedPlan(long planID)
        {
            Call(nameof(FeedPlan), new { planID });
        }
        public void RemovePlan(long planID)
        {
            Call(nameof(RemovePlan), new { planID });
        }

        public void SetPlan(string objname, IEnumerable<string> propertynames, long planID)
        {
            Call(nameof(SetPlan), new { objname, propertynames, planID });
        }

        /// <summary>
        /// 设置更新计划
        /// </summary>
        /// <param name="objname">对象名</param>
        /// <param name="propertynames">属性名</param>
        /// <param name="planID">计划的编号,应该全局唯一,建议使用时间ticks</param>
        public void SetPlan(string objname, IEnumerable<string> propertynames, AsyncCBHandler asyncDelegate, object asyncContext)
        {
            Call(nameof(SetPlan), new { objname, propertynames}, asyncDelegate, asyncContext);
        }
        #endregion
    }
}