예제 #1
0
        public static void Create <T>(RelayOpCode opCode)
            where T : RelayMessage, new()
        {
            var type = typeof(T);

            OpCodeLookup.Add(type, opCode);
            TypeLookup.Add(opCode, type);
        }
예제 #2
0
        public static RelayMessage GetMessage(RelayOpCode opCode, BinaryReader r)
        {
            var type = TypeLookup.GetValueOrDefault(opCode);

            if (type == null)
            {
                return(new RelayUnknownMessage(opCode, r.ReadToEnd()));
            }
            //throw new NetsphereBadOpCodeException(opCode);

            return((RelayMessage)Serializer.Deserialize(r, type));
        }
예제 #3
0
 public NetsphereBadOpCodeException(RelayOpCode opCode)
     : base($"Bad opCode: {opCode}")
 {
 }
 public RelayUnknownMessage(RelayOpCode opCode, byte[] data)
 {
     OpCode = opCode;
     Data   = data;
 }