package rescuecore2.connection; import static rescuecore2.misc.EncodingTools.writeInt32; import static rescuecore2.misc.EncodingTools.readInt32; import java.util.List; import java.util.ArrayList; import java.util.Arrays; import java.io.InputStream; import java.io.OutputStream; import java.io.IOException; import rescuecore2.messages.Message; public class TestMessage implements Message { private String urn; private int[] data; private String description; public TestMessage(String urn) { this(urn, "", new int[0]); } public TestMessage(String urn, String description) { this(urn, description, new int[0]); } public TestMessage(String urn, String description, int... data) { this.urn = urn; this.description = description; this.data = data; } @Override public int hashCode() { int result = urn.hashCode() ^ data.length; for (int i = 0; i < data.length; ++i) { result = result ^ data[i]; } return result; } @Override public boolean equals(Object other) { if (other instanceof TestMessage) { TestMessage m = (TestMessage)other; if (!this.urn.equals(m.urn)) return false; if (this.data.length != m.data.length) return false; for (int i = 0; i < data.length; ++i) { if (this.data[i] != m.data[i]) { return false; } } return true; } return false; } @Override public String getURN() { return urn; } public String getDescription() { return description; } @Override public void write(OutputStream out) throws IOException { writeInt32(data.length, out); for (int next : data) { writeInt32(next, out); } } @Override public void read(InputStream in) throws IOException { data = new int[readInt32(in)]; for (int i = 0; i < data.length; ++i) { data[i] = readInt32(in); } } @Override public String toString() { return "Test message (" + urn + "): " + description + ": " + Arrays.asList(data); } }