Linux, C++ API, the RTRProxyManagedVariable obj type returns String instead of Numeric

The idea is to pull Rmon utility network stats from shared memory by our C++ app and create a suitable JSON output for elasticsearch.

The shared memory data looks something like this:

  • <sync> 2023/03/22 06:49:46 <host>.1.RmonPub.rrmp6.rssl_update/averageRate = value: 17233
  • <sync> 2023/03/22 06:49:46 <host>.1.RmonPub.rrmp6.rssl_update/total = value: 7429584452
  • <sync> 2023/03/22 06:49:46 <host>.1.RmonPub.network/%total = value: 100
  • <sync> 2023/03/22 06:49:46 <host>.1.RmonPub.network/currentLoad = value: 15846500
  • <sync> 2023/03/22 06:49:46 <host>.1.RmonPub.network/currentRate = value: 4263
  • <sync> 2023/03/22 06:49:46 <host>.1.RmonPub.network/averageRate = value: 5561
  • <sync> 2023/03/22 06:49:46 <host>.1.RmonPub.network/total = value: 2397677452

However, in our C++ application the RTRProxyManagedVariable object type instantiated for above highlighted (in bold) are considered as String. Here is the snippet of code we are using for variable type recognition.

void Node::addVariable(RTRProxyManagedVariablePtr obj)
{
std::string varName;
if (mPub.mapVariable(obj->name(), obj->context().instanceId(), varName))
{
VarPtr var;
switch (obj->type())
{
case RTRProxyManagedVariableHandle::Numeric:
var = NumericVarPtr(new NumericVar(varName, obj, *this));
break;
case RTRProxyManagedVariableHandle::Counter:
var = CounterVarPtr(new CounterVar(varName, obj, *this));
break;
case RTRProxyManagedVariableHandle::String:
var = StringVarPtr(new StringVar(varName, obj, *this));
break;
default:
Log::warn("%s type not supported [%s]\n", obj->typeString().to_c(), obj->name().to_c());
break;
}

if (var)
{
Log::trace(Log::L1, " Var: ADD: RMC=\"%s\" \tout=\"%s\" \ttype=%s\n",
obj->name().to_c(), varName.c_str(),
asCStr(var->type()));

mVars.add(var);
}

how can I get the correct variable type as NUMERIC for the above managed variables? Please suggest.

Thanks.

Best Answer

  • Jirapongse
    Jirapongse ✭✭✭✭✭
    Answer ✓

    @prateek.sharma2

    Thanks for reaching out to us.

    I ran "adsmon -mob -key <shmkey>" to verify the values of those variables.

    It shows that those values are strings.

    1679554117466.png

    The %total is numeric.

    1679554150506.png

    According to these findings, I think rmon publishes those values as strings.

    Therefore, this can't be changed at the RMC client side. You need to contact the infrastructure support team via MyRefinitiv to vefify the rmon tool.

    I hope that this information is of help.