question

Upvotes
Accepted
3 0 0 1

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.

trep#technology#productc++
icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

Hello @prateek.sharma2

Thank you for your participation in the forum. Is the reply below satisfactory in resolving your query?


If so please can you click the 'Accept' text next to the appropriate reply? This will guide all community members who have a similar question.

Thanks,


AHS

1 Answer

· Write an Answer
Upvotes
Accepted
79.1k 250 52 74

@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.


1679554117466.png (8.8 KiB)
1679554150506.png (6.8 KiB)
icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

Write an Answer

Hint: Notify or tag a user in this post by typing @username.

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.