private static void Create <T>(ProudCoreOpCode opCode)
            where T : CoreMessage, new()
        {
            var type = typeof(T);

            s_opCodeLookup.Add(type, opCode);
            s_typeLookup.Add(opCode, type);
        }
        public static CoreMessage GetMessage(ProudCoreOpCode opCode, BinaryReader r)
        {
            var type = s_typeLookup.GetValueOrDefault(opCode);

            if (type == null)
#if DEBUG
            { throw new ProudBadOpCodeException(opCode, r.ReadToEnd()); }
#else
            { throw new ProudBadOpCodeException(opCode); }
#endif

            return((CoreMessage)Serializer.Deserialize(r, type));
        }
Exemple #3
0
 internal ProudBadOpCodeException(ProudCoreOpCode opCode, IEnumerable <byte> data)
     : base($"Invalid opcode {opCode}: {data.ToHexString()}")
 {
 }
Exemple #4
0
 internal ProudBadOpCodeException(ProudCoreOpCode opCode)
     : base($"Invalid opcode {opCode}")
 {
 }