コード例 #1
0
ファイル: DicBit.cs プロジェクト: dsstest/SiennaCore
        public override bool Serialize(ref PacketOutStream Data)
        {
            if (val is Dictionary <long, ISerializablePacket> )
            {
                Dictionary <long, ISerializablePacket> Dic = val as Dictionary <long, ISerializablePacket>;
                int KeyType   = (int)EPacketFieldType.Unsigned7BitEncoded;
                int ValueType = (int)EPacketFieldType.Packet;
                int Count     = Dic.Count;

                if (Count <= 0)
                {
                    return(false);
                }

                long DicData;
                PacketOutStream.Encode3Parameters(out DicData, KeyType, ValueType, Count);
                Data.WriteEncoded7Bit(DicData);

                foreach (KeyValuePair <long, ISerializablePacket> KP in Dic)
                {
                    PacketProcessor.WriteField(ref Data, (EPacketFieldType)KeyType, KP.Key);
                    PacketProcessor.WriteField(ref Data, (EPacketFieldType)ValueType, KP.Value);
                }

                return(true);
            }

            return(false);
        }