using FLY.OBJComponents.IService; using FLY.OBJComponents.OBJ_INTERFACE; using FObjBase; using Newtonsoft.Json; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace FLY.OBJComponents.Server.OBJProxy { public class JsonDist_OBJProxy : FObj { IJsonDistService jsonDist; public JsonDist_OBJProxy(int objsys_idx, UInt32 id, IJsonDistService jsonDist) : base(objsys_idx) { ID = id; this.jsonDist = jsonDist; this.jsonDist.ValueChanged += JsonDist_ValueChanged; } private void JsonDist_ValueChanged(object sender, JsonDistValueValueChangedEventArgs e) { string j = JsonConvert.SerializeObject(e); CurrObjSys.PushObjInfoEx( this, JSONDIST_OBJ_INTERFACE.PUSH_ValueChanged, Misc.Converter.StringToBytes(j)); } public override void CallFunction(IFConn from, uint srcid, uint magic, ushort funcid, byte[] infodata) { switch (funcid) { case JSONDIST_OBJ_INTERFACE.CALL_GetValue: { string json = Misc.Converter.BytesToString(infodata); var request = JsonConvert.DeserializeObject< JSONDIST_OBJ_INTERFACE.Pack_CallGetValueRequest> (json); jsonDist.GetValue(request.key, (asyncContext, retData) => { string j = JsonConvert.SerializeObject(retData); CurrObjSys.PushCallFunctionEx( from, srcid, ID, magic, funcid, Misc.Converter.StringToBytes(j)); }, null); } break; case JSONDIST_OBJ_INTERFACE.CALL_SetValue: { string json = Misc.Converter.BytesToString(infodata); var request = JsonConvert.DeserializeObject(json); jsonDist.SetValue(request.key, request.value); } break; } } } }