package edu.washington.escience.myria.parallel.ipc; import java.io.Serializable; /** * * ID of a stream I/O channel. * * */ public class StreamIOChannelID implements Comparable<StreamIOChannelID>, Serializable { /** * */ private static final long serialVersionUID = -5362137244233871013L; /** * remote worker ID. * */ private final int remoteID; /** * operator id. * */ private final long streamID; /** * used in toString. * */ private final String toStringValue; /** * @param streamID stream ID. * @param remoteID worker ID. * */ public StreamIOChannelID(final long streamID, final int remoteID) { this.remoteID = remoteID; this.streamID = streamID; toStringValue = "(opID:" + streamID + ",rmtID:" + remoteID + ")"; } @Override public final String toString() { return toStringValue; } @Override public final int hashCode() { return (int) streamID * MAGIC_HASHCODE_BASE + remoteID; } /** * for generating hash code. * */ private static final int MAGIC_HASHCODE_BASE = 31; @Override public final int compareTo(final StreamIOChannelID o) { if (streamID != o.streamID) { return (int) (streamID - o.streamID); } return remoteID - o.remoteID; } /** * @return the remoteID of this channel. * */ public final int getRemoteID() { return remoteID; } /** * @return the streamID of this channel. * */ public final long getStreamID() { return streamID; } @Override public final boolean equals(final Object oo) { if (oo == null) { return false; } StreamIOChannelID o = (StreamIOChannelID) oo; if (this == o) { return true; } if (streamID == o.streamID && remoteID == o.remoteID) { return true; } return false; } }