public BSPMessage(IPEndPoint address, BSPMessageType type, int sourceID, NetworkBuffer messageData) { this.address = address; this.type = type; this.sourceID = sourceID; this.messageData = messageData; }
private BSPMessage parse(Message message) { if (message == null) { Console.Error.WriteLine("Could not parse null message"); return(null); } NetworkBuffer buffer = new NetworkBuffer(message.data); if (buffer.size() < HEADER_LENGTH) { throw new Exception("Invalid message: " + System.Text.Encoding.Default.GetString(buffer.getBuffer())); } int messageType = buffer.parseInt32(HEADER_TYPE_OFFSET); BSPMessageType type = BSPMessageType.UNKNOWN; if (Enum.IsDefined(typeof(BSPMessageType), messageType)) { type = (BSPMessageType)messageType; } int sourceID = buffer.parseInt32(HEADER_SOURCE_OFFSET); int bytesRemaining = buffer.size() - HEADER_LENGTH; NetworkBuffer data = new NetworkBuffer(bytesRemaining); if (bytesRemaining > 0) { data.writeBytes(buffer.getBuffer(), HEADER_LENGTH, 0, bytesRemaining); } return(new BSPMessage(message.address, type, sourceID, data)); }