/** * Copyright (C) 2012 - present by OpenGamma Inc. and the OpenGamma group of companies * * Please see distribution for license. */ package com.opengamma.livedata.cogda.msg; import org.fudgemsg.FudgeContext; import org.fudgemsg.FudgeMsg; import org.fudgemsg.MutableFudgeMsg; import org.fudgemsg.mapping.FudgeSerializer; import com.opengamma.id.ExternalId; /** * */ public final class CogdaLiveDataBuilderUtil { private CogdaLiveDataBuilderUtil() { } public static void addExternalId(MutableFudgeMsg msg, ExternalId subscriptionId, String normalizationScheme) { msg.add("subscriptionIdScheme", subscriptionId.getScheme().getName()); msg.add("subscriptionIdValue", subscriptionId.getValue()); if (normalizationScheme != null) { msg.add("normalizationScheme", normalizationScheme); } } public static void addResponseFields(MutableFudgeMsg msg, CogdaLiveDataCommandResponseMessage response) { msg.add("correlationId", response.getCorrelationId()); addExternalId(msg, response.getSubscriptionId(), response.getNormalizationScheme()); msg.add("genericResult", response.getGenericResult().name()); msg.add("userMessage", response.getUserMessage()); } public static ExternalId parseExternalId(FudgeMsg msg) { ExternalId externalId = ExternalId.of(msg.getString("subscriptionIdScheme"), msg.getString("subscriptionIdValue")); return externalId; } public static void setResponseFields(FudgeMsg msg, CogdaLiveDataCommandResponseMessage response) { if (!msg.hasField("correlationId")) { response.setCorrelationId(-1L); } else { response.setCorrelationId(msg.getLong("correlationId")); } response.setSubscriptionId(parseExternalId(msg)); response.setNormalizationScheme(msg.getString("normalizationScheme")); response.setGenericResult(CogdaCommandResponseResult.valueOf(msg.getString("genericResult"))); response.setUserMessage(msg.getString("userMessage")); } public static FudgeMsg buildCommandResponseMessage(FudgeContext fudgeContext, CogdaLiveDataCommandResponseMessage responseMessage) { if (responseMessage instanceof CogdaLiveDataSubscriptionResponseMessage) { return CogdaLiveDataSubscriptionResponseBuilder.buildMessageStatic(new FudgeSerializer(fudgeContext), (CogdaLiveDataSubscriptionResponseMessage) responseMessage); } else if (responseMessage instanceof CogdaLiveDataSnapshotResponseMessage) { return CogdaLiveDataSnapshotResponseBuilder.buildMessageStatic(new FudgeSerializer(fudgeContext), (CogdaLiveDataSnapshotResponseMessage) responseMessage); } return null; } }