/**
* Copyright (C) 2009 - present by OpenGamma Inc. and the OpenGamma group of companies
*
* Please see distribution for license.
*/
package com.opengamma.engine.calcnode.stats;
import org.fudgemsg.FudgeMsg;
import org.fudgemsg.MutableFudgeMsg;
import org.fudgemsg.mapping.FudgeBuilder;
import org.fudgemsg.mapping.FudgeBuilderFor;
import org.fudgemsg.mapping.FudgeDeserializer;
import org.fudgemsg.mapping.FudgeSerializer;
/**
* Fudge message builder for {@code FunctionInvocationStatistics}.
*/
@FudgeBuilderFor(FunctionInvocationStatistics.class)
public class FunctionInvocationStatisticsFudgeBuilder implements FudgeBuilder<FunctionInvocationStatistics> {
private static final String FUNCTION_IDENTIFIER_FIELD_NAME = "functionIdentifier";
private static final String INVOCATION_COST_FIELD_NAME = "invocationCost";
private static final String DATA_OUTPUT_COST_FIELD_NAME = "dataOutputCost";
private static final String DATA_INPUT_COST_FIELD_NAME = "dataInputCost";
@Override
public MutableFudgeMsg buildMessage(final FudgeSerializer serializer, final FunctionInvocationStatistics statistics) {
final MutableFudgeMsg message = serializer.newMessage();
message.add(FUNCTION_IDENTIFIER_FIELD_NAME, statistics.getFunctionId());
message.add(INVOCATION_COST_FIELD_NAME, statistics.getInvocationCost());
message.add(DATA_INPUT_COST_FIELD_NAME, statistics.getDataInputCost());
message.add(DATA_OUTPUT_COST_FIELD_NAME, statistics.getDataOutputCost());
return message;
}
@Override
public FunctionInvocationStatistics buildObject(final FudgeDeserializer deserializer, final FudgeMsg message) {
final FunctionInvocationStatistics statistics = new FunctionInvocationStatistics(message.getString(FUNCTION_IDENTIFIER_FIELD_NAME));
statistics.recordInvocation(1, message.getDouble(INVOCATION_COST_FIELD_NAME), message.getDouble(DATA_INPUT_COST_FIELD_NAME), message.getDouble(DATA_OUTPUT_COST_FIELD_NAME));
return statistics;
}
}