/** * Copyright (C) 2009 - present by OpenGamma Inc. and the OpenGamma group of companies * * Please see distribution for license. */ package com.opengamma.transport; import org.fudgemsg.FudgeContext; import org.fudgemsg.FudgeMsg; import com.opengamma.util.ArgumentChecker; import com.opengamma.util.fudgemsg.OpenGammaFudgeContext; /** * A sender of Fudge messages. */ public class ByteArrayFudgeRequestSender implements FudgeRequestSender { /** * The underlying sender. */ private ByteArrayRequestSender _underlying; /** * The Fudge context. */ private FudgeContext _fudgeContext; /** * Creates an instance based on an underlying sender. * * @param underlying the underlying sender, not null */ public ByteArrayFudgeRequestSender(ByteArrayRequestSender underlying) { this(underlying, OpenGammaFudgeContext.getInstance()); } /** * Creates an instance based on an underlying sender. * * @param underlying the underlying sender, not null * @param fudgeContext the Fudge context, not null */ public ByteArrayFudgeRequestSender(ByteArrayRequestSender underlying, FudgeContext fudgeContext) { ArgumentChecker.notNull(underlying, "underlying"); ArgumentChecker.notNull(fudgeContext, "fudgeContext"); _fudgeContext = fudgeContext; _underlying = underlying; } //------------------------------------------------------------------------- /** * Gets the underlying sender. * * @return the underlying sender, not null */ public ByteArrayRequestSender getUnderlying() { return _underlying; } @Override public FudgeContext getFudgeContext() { return _fudgeContext; } //------------------------------------------------------------------------- @Override public void sendRequest(FudgeMsg request, FudgeMessageReceiver responseReceiver) { ArgumentChecker.notNull(request, "request"); ArgumentChecker.notNull(responseReceiver, "responseReceiver"); byte[] bytes = getFudgeContext().toByteArray(request); ByteArrayMessageReceiver receiver = new ByteArrayFudgeMessageReceiver(responseReceiver, getFudgeContext()); _underlying.sendRequest(bytes, receiver); } }