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)); }
internal ProudBadOpCodeException(ProudCoreOpCode opCode, IEnumerable <byte> data) : base($"Invalid opcode {opCode}: {data.ToHexString()}") { }
internal ProudBadOpCodeException(ProudCoreOpCode opCode) : base($"Invalid opcode {opCode}") { }