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);
        }
Example #3
0
        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);
        }
Example #4
0
        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);
            }
        }