public NetMessage(byte[] receiveBytes, IPEndPoint endpoint) { this.Serial = -1; this.Buffer = new byte[0]; this.IsValid = true; this.MessageType = NetMessageTypes.Unknown; this.EndPoint = endpoint; if ((receiveBytes != null) && (receiveBytes.Length > 0)) { this.Buffer = receiveBytes; if (((receiveBytes.Length > 4) && (receiveBytes[0] == 8)) && ((receiveBytes[1] == 0) && (receiveBytes[2] == 0))) { if (receiveBytes[3] == 0) { this.MessageType = NetMessageTypes.Nat; } else if ((receiveBytes.Length > 11) && (receiveBytes[3] == 1)) { this.MessageType = NetMessageTypes.GPGText; this.ReadMessage(receiveBytes); } else if ((receiveBytes.Length > 11) && (receiveBytes[3] == 2)) { this.MessageType = NetMessageTypes.GPGBinary; this.ReadMessage(receiveBytes); } else if ((receiveBytes.Length > 11) && (receiveBytes[3] == 3)) { this.MessageType = NetMessageTypes.GPGBinary; this.ReadMessage(receiveBytes); } } } }
public NetMessage() { this.Serial = -1; this.Buffer = new byte[0]; this.IsValid = true; this.MessageType = NetMessageTypes.Unknown; }
public static List <DMETypePacketFragment> FromPayload(NetMessageTypes msgClass, byte msgType, byte[] payload, int index, int length) { List <DMETypePacketFragment> fragments = new List <DMETypePacketFragment>(); int i = 0; while (i < length) { ushort subPacketSize = (ushort)(length - i); if (subPacketSize > Constants.DME_FRAGMENT_MAX_PAYLOAD_SIZE) { subPacketSize = Constants.DME_FRAGMENT_MAX_PAYLOAD_SIZE; } var frag = new DMETypePacketFragment() { FragmentMessageClass = (byte)msgClass, FragmentMessageType = msgType, SubPacketSize = subPacketSize, SubPacketCount = 0, SubPacketIndex = (ushort)fragments.Count, MultiPacketindex = 0, PacketBufferSize = length, PacketBufferOffset = i, Payload = new byte[subPacketSize] }; // Copy payload segment into fragment payload Array.Copy(payload, i + index, frag.Payload, 0, subPacketSize); // fragments.Add(frag); // Increment i i += subPacketSize; } // Recorrect fragment counts foreach (var frag in fragments) { frag.SubPacketCount = (ushort)fragments.Count; } return(fragments); }
public RawMediusMessage(NetMessageTypes msgClass, byte messageType) { _class = msgClass; _messageType = messageType; }
public MediusMessageAttribute(NetMessageTypes msgClass, MediusLobbyExtMessageIds msgType) { MessageClass = msgClass; MessageType = (byte)msgType; }
public static BaseMediusMessage Instantiate(BinaryReader reader) { BaseMediusMessage msg; Type classType = null; // Init Initialize(); NetMessageTypes msgClass = reader.Read <NetMessageTypes>(); var msgType = reader.ReadByte(); switch (msgClass) { case NetMessageTypes.MessageClassDME: { if (!_dmeMessageClassById.TryGetValue((MediusDmeMessageIds)msgType, out classType)) { classType = null; } break; } case NetMessageTypes.MessageClassLobbyReport: { if (!_mgclMessageClassById.TryGetValue((MediusMGCLMessageIds)msgType, out classType)) { classType = null; } break; } case NetMessageTypes.MessageClassLobby: { if (!_lobbyMessageClassById.TryGetValue((MediusLobbyMessageIds)msgType, out classType)) { classType = null; } break; } case NetMessageTypes.MessageClassLobbyExt: { if (!_lobbyExtMessageClassById.TryGetValue((MediusLobbyExtMessageIds)msgType, out classType)) { classType = null; } break; } } // Instantiate if (classType == null) { msg = new RawMediusMessage(msgClass, msgType); } else { msg = (BaseMediusMessage)Activator.CreateInstance(classType); } // Deserialize msg.Deserialize(reader); return(msg); }
public static List <DMETypePacketFragment> FromPayload(NetMessageTypes msgClass, byte msgType, byte[] payload) { return(FromPayload(msgClass, msgType, payload, 0, payload.Length)); }