/**
* Copyright (C) 2013 - present by OpenGamma Inc. and the OpenGamma group of companies
*
* Please see distribution for license.
*/
package com.opengamma.livedata.client;
import java.util.Collection;
import org.fudgemsg.FudgeContext;
import org.fudgemsg.FudgeMsg;
import org.fudgemsg.mapping.FudgeSerializer;
import com.opengamma.livedata.LiveDataSpecification;
import com.opengamma.livedata.msg.Heartbeat;
import com.opengamma.livedata.server.LiveDataHeartbeat;
import com.opengamma.transport.ByteArrayFudgeMessageSender;
import com.opengamma.transport.ByteArrayMessageSender;
import com.opengamma.transport.FudgeMessageSender;
import com.opengamma.util.ArgumentChecker;
/**
* Basic implementation of a subscription heartbeater that notifies the server(s) but does not receive any information back.
*/
public class HeartbeatSender implements LiveDataHeartbeat {
private final FudgeMessageSender _messageSender;
public HeartbeatSender(final FudgeMessageSender messageSender) {
ArgumentChecker.notNull(messageSender, "messageSender");
_messageSender = messageSender;
}
public HeartbeatSender(final ByteArrayMessageSender messageSender, final FudgeContext fudgeContext) {
this(new ByteArrayFudgeMessageSender(messageSender, fudgeContext));
}
protected FudgeMessageSender getMessageSender() {
return _messageSender;
}
// LiveDataHeartbeat
@Override
public Collection<LiveDataSpecification> heartbeat(final Collection<LiveDataSpecification> activeSubscriptions) {
Heartbeat heartbeat = new Heartbeat(activeSubscriptions);
FudgeMsg heartbeatMsg = heartbeat.toFudgeMsg(new FudgeSerializer(getMessageSender().getFudgeContext()));
getMessageSender().send(heartbeatMsg);
return null;
}
}