예제 #1
0
 public void WriteObject(BinSerializer bs)
 {
     bs.Write(Id, 1);
     bs.Write(Name, 2);
     bs.Write((byte)Kind, 3);
     bs.Write(0u);
 }
예제 #2
0
        public unsafe void WriteObject(BinSerializer bs)
        {
            bs.Write(WaitHandle.ToInt64());
            bs.Write(TxnPtr.ToInt64());
            bs.Write(Require.RaftGroupId);
            bs.Write(Require.SchemaVersion);
            bs.Write((byte)Require.DataCF);
            bs.Write(Require.OverrideIfExists);

            bs.Write(Require.KeySize.ToInt32());
            var span = new ReadOnlySpan <byte>(Require.KeyPtr.ToPointer(), Require.KeySize.ToInt32());

            bs.Stream.Write(span);

            bs.Write(Require.RefsSize.ToInt32());
            if (Require.RefsSize.ToInt32() > 0)
            {
                span = new ReadOnlySpan <byte>(Require.RefsPtr.ToPointer(), Require.RefsSize.ToInt32());
                bs.Stream.Write(span);
            }
            int dataSize = Require.DataPtr == IntPtr.Zero ? 0 : NativeBytes.GetSize(Require.DataPtr);

            bs.Write(dataSize);
            if (dataSize > 0)
            {
                span = new ReadOnlySpan <byte>((Require.DataPtr + 4).ToPointer(), dataSize);
                bs.Stream.Write(span);
            }
        }
예제 #3
0
        public void ReadObject(BinSerializer bs)
        {
            uint propIndex;

            do
            {
                propIndex = bs.ReadUInt32();
                switch (propIndex)
                {
                case 1: Application = (ApplicationModel)bs.Deserialize(); break;

                case 2: Folders = bs.ReadList <ModelFolder>(); break;

                case 3: Models = bs.ReadList <ModelBase>(); break;

                case 4: SourceCodes = bs.ReadDictionary <ulong, byte[]>(); break;

                case 5: ServiceAssemblies = bs.ReadDictionary <string, byte[]>(); break;

                case 6: ViewAssemblies = bs.ReadDictionary <string, byte[]>(); break;

                case 7: DataStores = bs.ReadList <DataStoreInfo>(); break;

                case 0: break;

                default: throw new Exception($"Deserialize_ObjectUnknownFieldIndex: {GetType().Name} at {propIndex}");
                }
            } while (propIndex != 0);
        }
예제 #4
0
        void OnOpenBombReceived(EventData eventData)
        {
            byte[] bytes = (byte[])DictTool.GetValue <byte, object>(eventData.Parameters, 1);

            ProtoData.OpemBombS2CEvt openBombS2CEvt = BinSerializer.DeSerialize <ProtoData.OpemBombS2CEvt>(bytes);

            BattleMgr.Instance.bombMgr.OpenBomb(openBombS2CEvt);
        }
예제 #5
0
        public override void WriteObject(BinSerializer bs)
        {
            base.WriteObject(bs);

            bs.Write(Global, 1);
            bs.Write((byte)State, 2);
            bs.Write(0u);
        }
예제 #6
0
 public static byte[] Serialize <T>(T obj)
 {
     using (MemoryStream stream = new MemoryStream())
     {
         BinSerializer.Serialize(stream, obj);
         return(stream.ToArray());
     }
 }
예제 #7
0
        public override void WriteObject(BinSerializer bs)
        {
            base.WriteObject(bs);

            bs.Write(ReportXmlVersion, 1);

            bs.Write(0u);
        }
        public string ReadFile(int addr, int size)
        {
            var r       = base.ReadPage(addr, BinSerializer.ComputeFileSizePerSector(size, PAGE_SIZE));
            var encoder = new UnicodeEncoding();
            var s       = encoder.GetString(r.Buffer.Take(size).ToArray());

            return(s);
        }
예제 #9
0
 void IBinSerializable.WriteObject(BinSerializer bs)
 {
     bs.Write(Id, 1);
     bs.Write(DevModelIdSeq, 2);
     bs.Write(Owner, 3);
     bs.Write(Name, 4);
     bs.Write(0u);
 }
예제 #10
0
        //object IDynamicObject.GetBoxedPropertyValue(string propertyName)
        //{
        //    return DynamicMembers.GetBoxedPropertyValue(propertyName, this);
        //}

        //void IDynamicObject.SetBoxedPropertyValue(string propertyName, object value)
        //{
        //    DynamicMembers.SetBoxedPropertyValue(propertyName, this, value);
        //}

        //T IDynamicObject.GetPropertyValue<T>(string propertyName)
        //{
        //    return DynamicMembers.GetPropertyValue<T>(propertyName, this);
        //}

        //void IDynamicObject.SetPropertyValue<T>(string propertyName, T value)
        //{
        //    DynamicMembers.SetPropertyValue<T>(propertyName, this, value);
        //}

        //object IDynamicObject.InvokeMethod(string methodName, object[] args)
        //{
        //    return DynamicMembers.InvokeMethod(methodName, this, args);
        //}

        //void IDynamicObject.AddEventHandler(string eventName, EventAction action)
        //{
        //    throw ExceptionHelper.NotImplemented();
        //}
        #endregion

        #region ====IBinSerializable====
        void IBinSerializable.WriteObject(BinSerializer writer)
        {
            writer.Write(this.Count);
            for (int i = 0; i < this.Count; i++)
            {
                writer.Serialize(this[i]);
            }
        }
예제 #11
0
        private static T SerializeDeserialize <T>(T input)
        {
            var stream = new MemoryStream();

            BinSerializer.Serialize(stream, input);
            stream.Position = 0;
            return(BinSerializer.Deserialize <T>(stream));
        }
예제 #12
0
        public unsafe void WriteObject(BinSerializer bs)
        {
            bs.Write(ReadCommitted);
            long hv   = WaitHandle.ToInt64();
            var  span = new Span <byte>(&hv, 8);

            bs.Stream.Write(span);
        }
예제 #13
0
        void OnSyncPositionReceived(EventData eventData)
        {
            byte[] bytes = (byte[])DictTool.GetValue <byte, object>(eventData.Parameters, 1);

            ProtoData.SyncPositionEvtS2C syncPositionEvtS2C = BinSerializer.DeSerialize <ProtoData.SyncPositionEvtS2C>(bytes);

            GameObject.FindGameObjectWithTag("Player").GetComponent <Player>().OnSyncPositionEvent(syncPositionEvtS2C.dataList);
        }
예제 #14
0
        public unsafe void WriteObject(BinSerializer bs)
        {
            long hv   = TxnPtr.ToInt64();
            var  span = new Span <byte>(&hv, 8);

            bs.Stream.Write(span);
            bs.Write(IsAbort);
        }
예제 #15
0
 void IBinSerializable.WriteObject(BinSerializer writer)
 {
     writer.Write(nodes.Length);
     for (int i = 0; i < nodes.Length; i++)
     {
         writer.Write(nodes[i].ID);
         writer.Write(nodes[i].Text);
     }
 }
예제 #16
0
        public override void SendPacket(bool isWait = false, bool reliable = true)
        {
            base.SendPacket(isWait, reliable);
            var packet = new ProtoData.RaidRankingScoreData( );

            packet.score = score;
            Send(OperationCode.ResultRaidRanking, BinSerializer.ConvertPacket(packet));
            Debug.Log("[ResultRaidRankingRequest] Send");
        }
예제 #17
0
        void IBinSerializable.ReadObject(BinSerializer reader)
        {
            var count = reader.ReadInt32();

            for (int i = 0; i < count; i++)
            {
                this.Add(reader.Deserialize());
            }
        }
예제 #18
0
        /// <summary>
        /// 收到状态事件消息
        /// </summary>
        /// <param name="eventData"></param>
        void OnSyncTransitionReceived(EventData eventData)
        {
            byte[]   bytes = (byte[])DictTool.GetValue <byte, object>(eventData.Parameters, 1);
            object[] objs  = (object[])DictTool.GetValue <byte, object>(eventData.Parameters, 2);

            SyncTransitionS2C syncTransitionS2C = BinSerializer.DeSerialize <SyncTransitionS2C>(bytes);

            BattleSyncMgr.Instance.OnSyncTransitionEvent(syncTransitionS2C.username, (FSMTransition)syncTransitionS2C.targetTransition, objs);
        }
예제 #19
0
        void OnSyncAddPlayerReceived(EventData eventData)
        {
            byte[]          bytes        = (byte[])DictTool.GetValue <byte, object>(eventData.Parameters, 1);
            AddPlayerS2CEvt playerS2CEvt = BinSerializer.DeSerialize <AddPlayerS2CEvt>(bytes);

            Debug.LogError("新玩家进入:" + playerS2CEvt.username);

            BattleSyncMgr.Instance.OnAddPlayerEvent(playerS2CEvt.username, playerS2CEvt.modelName, playerS2CEvt.nickName, playerS2CEvt.hp, playerS2CEvt.killCount);
        }
예제 #20
0
        public override void WriteObject(BinSerializer writer)
        {
            base.WriteObject(writer);

            writer.Write(Name, 1);
            writer.Serialize(Owner, 2);

            writer.Write((uint)0);
        }
예제 #21
0
        public override void Write(BinSerializer bs, object instance)
        {
            var list = (IList)instance;

            //先写入元素个数
            VariantHelper.WriteInt32(list.Count, bs.Stream);
            //再写入各元素
            bs.WriteCollection(instance.GetType().GetGenericArguments()[0], list.Count, (index) => list[index]);
        }
예제 #22
0
        public override void WriteObject(BinSerializer bs)
        {
            base.WriteObject(bs);

            bs.Write(RefModelId, 1);
            bs.Write(RefMemberId, 2);

            bs.Write((uint)0);
        }
예제 #23
0
        /// <summary>
        /// 保存模型类型的根目录
        /// </summary>
        internal static Task SaveFolderAsync(ModelFolder folder)
        {
            if (folder.Parent != null)
            {
                throw new InvalidOperationException("仅允许保存模型类型的根目录");
            }
            var data = BinSerializer.Serialize(folder, false, null);

            return(SaveAsync(StagedType.Folder, $"{folder.AppId}-{(byte)folder.TargetModelType}" /*不要使用folder.Id*/, data));
        }
예제 #24
0
        public unsafe void WriteObject(BinSerializer bs)
        {
            bs.Write(TxnPtr.ToInt64());
            bs.Write(WaitHandle.ToInt64());
            bs.Write(PartitionInfo.Flags);
            bs.Write(PartitionInfo.KeySize.ToInt32());
            var span = new ReadOnlySpan <byte>(PartitionInfo.KeyPtr.ToPointer(), PartitionInfo.KeySize.ToInt32());

            bs.Stream.Write(span);
        }
예제 #25
0
        public unsafe void WriteObject(BinSerializer bs)
        {
            bs.Write(WaitHandle.ToInt64());
            bs.Write(RaftGroupId);
            bs.Write(DataCF);
            bs.Write(KeySize);
            var span = new ReadOnlySpan <byte>(KeyPtr.ToPointer(), (int)KeySize);

            bs.Stream.Write(span);
        }
예제 #26
0
        public override object Read(BinSerializer bs, object instance)
        {
            var list        = (IList)instance;
            var elementType = instance.GetType().GetGenericArguments()[0];
            //注意:需要读取元素个数
            var count = VariantHelper.ReadInt32(bs.Stream);

            bs.ReadCollection(elementType, count, (index, value) => list.Add(value));
            return(list);
        }
        //获取客户端位置请求的处理的代码
        public void OnSyncPositionReceived(ClientPeer peer, OperationRequest operationRequest, SendParameters sendParameters)
        {
            //接收位置并保持起来
            byte[] bytes = (byte[])DictTool.GetValue <byte, object>(operationRequest.Parameters, 1);
            ProtoData.SyncPositionC2S syncPositionC2S = BinSerializer.DeSerialize <ProtoData.SyncPositionC2S>(bytes);

            peer.x = syncPositionC2S.x;
            peer.y = syncPositionC2S.y;
            peer.z = syncPositionC2S.z;
        }
예제 #28
0
        /// <summary>
        /// 收到位置等消息
        /// </summary>
        /// <param name="eventData"></param>
        void OnSyncTransformReceived(EventData eventData)
        {
            byte[] bytes = (byte[])DictTool.GetValue <byte, object>(eventData.Parameters, 1);

            ProtoData.SyncTransformEvtS2C syncTransformEvtS2C = BinSerializer.DeSerialize <ProtoData.SyncTransformEvtS2C>(bytes);

            BattleSyncMgr.Instance.OnSyncTransformEvent(syncTransformEvtS2C.dataList);

            //Debug.LogWarning(Time.time);
        }
예제 #29
0
        //获取客户端位置请求的处理的代码
        public void OnSyncTransformReceived(Client peer, OperationRequest operationRequest, SendParameters sendParameters)
        {
            //接收位置并保持起来
            byte[] bytes = (byte[])DictTool.GetValue <byte, object>(operationRequest.Parameters, 1);
            ProtoData.SyncTransformC2S syncTransformC2S = BinSerializer.DeSerialize <ProtoData.SyncTransformC2S>(bytes);

            peer.playerData.heroData.x      = syncTransformC2S.x;
            peer.playerData.heroData.y      = syncTransformC2S.y;
            peer.playerData.heroData.z      = syncTransformC2S.z;
            peer.playerData.heroData.angleY = syncTransformC2S.angleY;
        }
예제 #30
0
        public unsafe void ReadObject(BinSerializer bs)
        {
            WaitHandle  = new IntPtr(bs.ReadInt64());
            RaftGroupId = bs.ReadUInt64();
            DataCF      = bs.ReadInt32();
            KeySize     = bs.ReadUInt32();
            KeyPtr      = Marshal.AllocHGlobal((int)KeySize);
            var span = new Span <byte>(KeyPtr.ToPointer(), (int)KeySize);

            bs.Stream.Read(span);
        }