QoS monitoring

2 posts / 0 new
Last post
Last seen: 9 years 4 months ago
Joined: 09/26/2013
Posts: 3
QoS monitoring

Dear Sir,

Could you kindly list the most important QoSs that should be monitor in the real time system in dynamic environments ?

How we can monitor a specific QoS at running time?

How we can modify a specific parameters of some QoS at running time?

Best regards,



rip's picture
Last seen: 2 months 2 weeks ago
Joined: 04/06/2012
Posts: 324

most important:  All of them.  Or rather, "It depends".  Your question is too broad.

Monitoring specific QoS at runtime is what Analyzer does.  It is possible to write a standalone application that does the same thing.  Use the builtin publisher/subscriber topics, see chapter 16 of the documentation.  The QoS of the remote entities that are discovered is made available to the eavesdropping application (this is how Analyzer knows what QoS the entities it sees are using, so that it can do static analysis).

Modifing specific parameters (IF the QoS parameter supports it) is done via the application that created the entity. An external entity can not change the QoS of some remote participant/entity directly, that is not how QoS works -- Except you can do it indirectly, if you write your applications to support this, by for example creating a Topic that you publish on, and your subscribers understand the semantics of what you are publishing. 

Some QoS MUST be set prior to CREATION of an entity (it has to be set in the QoS object passed to the factory for a child entity).  Some MAY be set after creation, but before ENABLE (meaning you have to create your entities with auto-enable turned off).  Some (very small) subset can be changed at any time.  See the documentation for each given QoS setting.  Do not take the below to indicate that I recommend you do this, I'm only showing that in theory it can be done.  You should be asking yourself "why do I want this?"

Ownership Strength is one such "even after enable" parameter.  Assume a topic "OwnershipStrengthTopic", using

struct OwnershipStrength {
    string<32> id;//@key
    string<64> topicName;
    long       strength;

One application has an id of some arbitrary string, let's use "foo".

Another application could publish

    OwnershipStrength instance = new OwnershipStrength();
    instance.id = "foo";
    instance.topicName = "SomeOtherTopic";
    instance.strength = 123;
    strWriter.write(instance, InstanceHandle_t.HANDLE_NIL);

The application that knows itself as "foo" is subscribed to this topic (OwnershipStrengthTopic) with a reader pended on a waitset, it receives the new state (123), and uses the API to change the OwnershipStrength state of its "SomeOtherTopic" datawriter to the new state value.