Exemple #1
0
        private Dictionary <MessageID, IPackerMessage> GetDictionary()
        {
            var assemblyType = typeof(Assembly);

            var packers = new Dictionary <MessageID, IPackerMessage>();

            foreach (var type in assemblyType.Assembly.GetTypes())
            {
                if (!type.IsClass)
                {
                    continue;
                }

                if (type.IsAbstract)
                {
                    continue;
                }


                if (typeof(IPackerMessage).IsAssignableFrom(type))
                {
                    IPackerMessage p = Activator.CreateInstance(type) as IPackerMessage;
                    packers.Add(p.Type, p);
                }
            }

            return(packers);
        }
Exemple #2
0
 public void CreatePacket(ref Packet packet, IMessageData message)
 {
     packet = null;
     using (MemoryStream stream = new MemoryStream())
     {
         SizePacket size = 0;
         using (BinaryWriter writer = new BinaryWriter(stream))
         {
             writer.Write(size);
             writer.Write(message.Type);
             IPackerMessage packer = _register.Find(message.Type);
             if (packer == null)
             {
                 return;
             }
             packer.CreatePacket(writer, message);
             size            = (SizePacket)(stream.Length - sizeof(SizePacket));
             stream.Position = 0;
             writer.Write(size);
             packet = new Packet(stream.ToArray());
         }
     }
 }