private void _AddPropertySoul(PackagePropertySoul data) { var owner = _FindGhost(data.OwnerId); var ghost = _FindGhost(data.EntiryId); var accessible = _GetAccesser(data, owner); accessible.Add(ghost.GetInstance()); }
private IObjectAccessible _GetAccesser(PackagePropertySoul data, IGhost owner) { MemberMap map = _Protocol.GetMemberMap(); PropertyInfo info = map.GetProperty(data.PropertyId); var type = _InterfaceProvider.Find(info.DeclaringType); var fieldName = _GetFieldName(info); FieldInfo field = type.GetField(fieldName, BindingFlags.Instance | BindingFlags.Public); object filedValue = field.GetValue(owner.GetInstance()); return(filedValue as IObjectAccessible); }
private ISoul _PropertyBind(long soul_id, int property_id, TypeObject type_object) { var soul = _Bind(type_object.Instance, type_object.Type, false, 0); PackagePropertySoul package = new PackagePropertySoul(); package.OwnerId = soul_id; package.PropertyId = property_id; package.EntiryId = soul.Id; _Queue.Push(ServerToClientOpCode.AddPropertySoul, package.ToBuffer(_Serializer)); return(soul); }
private void _PropertyUnbind(long soul_id, int property_id, long property_soul_id) { PackagePropertySoul package = new PackagePropertySoul(); package.OwnerId = soul_id; package.PropertyId = property_id; package.EntiryId = property_soul_id; _Queue.Push(ServerToClientOpCode.RemovePropertySoul, package.ToBuffer(_Serializer)); SoulProxy soul; _Souls.TryGetValue(property_soul_id, out soul); _Unbind(soul); }
protected void _OnResponse(ServerToClientOpCode id, byte[] args) { if (id == ServerToClientOpCode.Ping) { Ping = _PingTimeCounter.Ticks; _StartPing(); } else if (id == ServerToClientOpCode.SetProperty) { PackageSetProperty data = args.ToPackageData <PackageSetProperty>(_Serializer); _UpdateSetProperty(data.EntityId, data.Property, data.Value); } else if (id == ServerToClientOpCode.InvokeEvent) { PackageInvokeEvent data = args.ToPackageData <PackageInvokeEvent>(_Serializer); _InvokeEvent(data.EntityId, data.Event, data.HandlerId, data.EventParams); } else if (id == ServerToClientOpCode.ErrorMethod) { PackageErrorMethod data = args.ToPackageData <PackageErrorMethod>(_Serializer); _ErrorReturnValue(data.ReturnTarget, data.Method, data.Message); } else if (id == ServerToClientOpCode.ReturnValue) { PackageReturnValue data = args.ToPackageData <PackageReturnValue>(_Serializer); _SetReturnValue(data.ReturnTarget, data.ReturnValue); } else if (id == ServerToClientOpCode.LoadSoulCompile) { PackageLoadSoulCompile data = args.ToPackageData <PackageLoadSoulCompile>(_Serializer); _LoadSoulCompile(data.TypeId, data.EntityId, data.ReturnId); } else if (id == ServerToClientOpCode.LoadSoul) { PackageLoadSoul data = args.ToPackageData <PackageLoadSoul>(_Serializer); _LoadSoul(data.TypeId, data.EntityId, data.ReturnType); } else if (id == ServerToClientOpCode.UnloadSoul) { PackageUnloadSoul data = args.ToPackageData <PackageUnloadSoul>(_Serializer); _UnloadSoul(data.EntityId); } else if (id == ServerToClientOpCode.AddPropertySoul) { PackagePropertySoul data = args.ToPackageData <PackagePropertySoul>(_Serializer); _AddPropertySoul(data); } else if (id == ServerToClientOpCode.RemovePropertySoul) { PackagePropertySoul data = args.ToPackageData <PackagePropertySoul>(_Serializer); _RemovePropertySoul(data); } else if (id == ServerToClientOpCode.ProtocolSubmit) { PackageProtocolSubmit data = args.ToPackageData <PackageProtocolSubmit>(_Serializer); _ProtocolSubmit(data); } }