using FLY.Thick.Base.OBJ_INTERFACE; using FLY.Thick.Blowing.Common; using FLY.Thick.Blowing.IService; using FLY.Thick.Blowing.OBJ_INTERFACE; using FObjBase; using Newtonsoft.Json; using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace FLY.Thick.Blowing.Client { public class BlowingFixProfileServiceClient : FObj, IBlowingFixProfileService { IFConn mConn; UInt32 mServerID; public BlowingFixProfileServiceClient() { mServerID = FLY.Thick.Blowing.OBJ_INTERFACE.OBJ_INTERFACE_ID.BFPROFILE_ID; } public BlowingFixProfileServiceClient(UInt32 id) { mServerID = id; } #region IProfileService 接口 BlowingFixProfileParam param = new BlowingFixProfileParam(); public BlowingFixProfileParam Param { get { return param; } } /// <summary> /// 应用 & 保存 /// </summary> public void Apply() { string json = JsonConvert.SerializeObject(Param); CurrObjSys.SetValueEx(mConn, mServerID, ID, BLOWINGFIX_PROFILE_OBJ_INTERFACE.SET_PARAMS, Misc.Converter.StringToBytes(json)); } /// <summary> /// 获取产品列表, 返回类型为 List<string> /// </summary> /// <param name="AsyncDelegate"></param> /// <param name="AsyncState"></param> public void GetList(AsyncCBHandler AsyncDelegate, object AsyncState) { CurrObjSys.CallFunctionEx(mConn, mServerID, ID, BLOWINGFIX_PROFILE_OBJ_INTERFACE.CALL_GETLIST, null, AsyncDelegate, AsyncState); } /// <summary> /// 删除指定产品 /// </summary> /// <param name="productname"></param> public void Del(string productname) { string json = JsonConvert.SerializeObject(productname); CurrObjSys.CallFunctionEx(mConn, mServerID, ID, BLOWINGFIX_PROFILE_OBJ_INTERFACE.CALL_DEL, Misc.Converter.StringToBytes(json)); } /// <summary> /// 读取指定产品,返回类型为 ProfileParam /// </summary> /// <param name="productname"></param> /// <param name="AsyncDelegate"></param> /// <param name="AsyncState"></param> public void Read(string productname, AsyncCBHandler AsyncDelegate, object AsyncState) { string json = JsonConvert.SerializeObject(productname); CurrObjSys.CallFunctionEx(mConn, mServerID, ID, BLOWINGFIX_PROFILE_OBJ_INTERFACE.CALL_READ, Misc.Converter.StringToBytes(json), AsyncDelegate, AsyncState); } #endregion public override void Dispose() { CurrObjSys.ObjRemove( this, mConn); } public override void ConnectNotify(IFConn from) { mConn = from; if (from.IsConnected) { //获取所有数据,设置推送 CurrObjSys.GetValueEx( mConn, mServerID, ID, BLOWINGFIX_PROFILE_OBJ_INTERFACE.GET_PARAMS); CurrObjSys.SenseConfigEx( mConn, mServerID, ID, 0xffffffff, SENSE_CONFIG.ADD); } } public override void PushGetValue(IFConn from, uint srcid, ushort memid, byte[] infodata) { switch (memid) { case BLOWINGFIX_PROFILE_OBJ_INTERFACE.GET_PARAMS: { string json = Misc.Converter.BytesToString(infodata); BlowingFixProfileParam p = JsonConvert.DeserializeObject<BlowingFixProfileParam>(json); Misc.PropertiesManager.CopyTo(p, Param); } break; } } public override void PushInfo(IFConn from, uint srcid, ushort infoid, byte[] infodata) { PushGetValue(from, srcid, infoid, infodata); } public override void PushCallFunction(IFConn from, uint srcid, uint magic, ushort funcid, byte[] retdata, object AsyncDelegate, object AsyncState) { switch (funcid) { case BLOWINGFIX_PROFILE_OBJ_INTERFACE.CALL_GETLIST: { string json = Misc.Converter.BytesToString(retdata); List<string> p = JsonConvert.DeserializeObject<List<string>>(json); ((AsyncCBHandler)AsyncDelegate)(AsyncState, p); } break; case BLOWINGFIX_PROFILE_OBJ_INTERFACE.CALL_READ: { string json = Misc.Converter.BytesToString(retdata); BlowingFixProfileParam p = JsonConvert.DeserializeObject<BlowingFixProfileParam>(json); ((AsyncCBHandler)AsyncDelegate)(AsyncState, p); } break; } } } }