package com.netflix.suro.sink.kafka; import com.netflix.suro.message.Message; import java.io.DataInput; import java.io.DataOutput; import java.io.IOException; public class SuroKeyedMessage extends Message { static { Message.classMap.put((byte) 1, SuroKeyedMessage.class); } private long key; private Message message = new Message(); public SuroKeyedMessage() {} public SuroKeyedMessage(long key, Message message) { this.key = key; this.message = message; } @Override public String getRoutingKey() { return message.getRoutingKey(); } @Override public byte[] getPayload() { return message.getPayload(); } public long getKey() { return key; } @Override public String toString() { return String.format("routingKey: %s, payload byte size: %d", getRoutingKey(), getPayload().length); } @Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; SuroKeyedMessage keyedMessage = (SuroKeyedMessage) o; if (key == keyedMessage.key) { return message.equals(keyedMessage.message); } else { return false; } } @Override public int hashCode() { return (int) (key * 31 + message.hashCode()); } @Override public void write(DataOutput dataOutput) throws IOException { dataOutput.writeLong(key); message.write(dataOutput); } @Override public void readFields(DataInput dataInput) throws IOException { key = dataInput.readLong(); message.readFields(dataInput); } }