Example #1
0
 public Entry(byte id, Type type, Side validReceivingSide,
              IMessageDeSerializer deSerializer)
 {
     ID   = id;
     Type = type;
     ValidReceivingSide = validReceivingSide;
     ValidSendingSide   = validReceivingSide.Opposite();
     DeSerializer       = deSerializer;
 }
Example #2
0
        public void Register <T>(byte id, Side validReceivingSide,
                                 IMessageDeSerializer <T> deSerializer)
            where T : IMessage
        {
            if (deSerializer == null)
            {
                throw new ArgumentNullException(nameof(deSerializer));
            }
            if (_byID.ContainsKey(id))
            {
                throw new ArgumentException(
                          $"Duplicate registry for message ID '{ id }'");
            }
            if (_byType.ContainsKey(typeof(T)))
            {
                throw new ArgumentException(
                          $"Duplicate registry for message Type '{ typeof(T) }'");
            }

            var entry = new Entry(id, typeof(T), validReceivingSide, deSerializer);

            _byID.Add(id, entry);
            _byType.Add(typeof(T), entry);
        }