/** * Copyright (C) 2009 - present by OpenGamma Inc. and the OpenGamma group of companies * * Please see distribution for license. */ package com.opengamma.livedata; import java.io.Serializable; import org.apache.commons.lang.ObjectUtils; import org.fudgemsg.FudgeMsg; import com.opengamma.util.PublicAPI; /** * A simple implementation of a market data update sent from server to client. */ @PublicAPI public class LiveDataValueUpdateBean implements LiveDataValueUpdate, Serializable { /** Serialization version. */ private static final long serialVersionUID = 1L; /** * The sequence number. */ private final long _sequenceNumber; /** * The live data specification. */ private final LiveDataSpecification _specification; /** * The data fields. */ private final FudgeMsg _fieldContainer; /** * Creates an instance. * * @param sequenceNumber the sequence number * @param specification the specification * @param fieldContainer the fields held as a Fudge message */ public LiveDataValueUpdateBean(long sequenceNumber, LiveDataSpecification specification, FudgeMsg fieldContainer) { // TODO kirk 2009-09-29 -- Check Inputs. _sequenceNumber = sequenceNumber; _specification = specification; _fieldContainer = fieldContainer; } //------------------------------------------------------------------------- @Override public long getSequenceNumber() { return _sequenceNumber; } @Override public LiveDataSpecification getSpecification() { return _specification; } @Override public FudgeMsg getFields() { return _fieldContainer; } //------------------------------------------------------------------------- @Override public boolean equals(Object obj) { if (this == obj) { return true; } if (obj instanceof LiveDataValueUpdateBean) { LiveDataValueUpdateBean other = (LiveDataValueUpdateBean) obj; return _sequenceNumber == other._sequenceNumber && ObjectUtils.equals(_specification, other._specification) && ObjectUtils.equals(_fieldContainer, other._fieldContainer); } return false; } @Override public int hashCode() { return ((int) (_sequenceNumber ^ (_sequenceNumber >>> 32))) ^ ObjectUtils.hashCode(_specification) ^ ObjectUtils.hashCode(_fieldContainer); } @Override public String toString() { StringBuilder buf = new StringBuilder(); buf.append("LiveDataValueUpdateBean["); buf.append(_sequenceNumber); buf.append(", "); buf.append(_specification); buf.append(", "); buf.append(_fieldContainer); buf.append("]"); return buf.toString(); } }