#
TAO's Notification Service

- Options to Notify_Service
- Feature Matrix
- Notification Service Testing framework

##
Options to Notify_Service

The Notify_Service driver program options are:

Command | Description
--- | ---
-Factory factory_name | Uses the <factory_name> as the default name for the Channel Factory. The default is "NotifyEventChannelFactory".
-Boot | Flag asking that the factory_name be registered in the IOR table. The option is disabled by default. See the "Using the Boot option" section in the README for details.
-NameSvc | Registers the Factory and if specified, an Event Channel with the Naming Service. if this option is used, a Naming Service must be accessible. This option is enabled by default.
-NoNameSvc | Asks to skip any registration with the Naming Service. This option is disabled by default.
-IORoutput file_name | The IOR is output to the file file_name. By default, the IOR is printed out.
-Channel | If this option is specified, a EventChannel is created and registered with the Naming Service. This option is disabled by default.
-ChannelName channel_name | Specifes the channel_name to register with the Naming Service. The default is "NotifyEventChannel".
-ORBRunThreads threads | Specifies the number of threads that will run the ORB::run method.

The Notify_Service driver can be used to load the CosNotification service or it's Real-Time CORBA extension, the RT-Notification.
By using the svc.conf file, the appropriate service is loaded.

To load the CosNotification do:
`dynamic TAO_Notify_Service Service_Object * TAO_CosNotification:_make_TAO_CosNotify_Service () ""`

or
`static TAO_CosNotify_Service ""`

To load the RT-Notification Service, do:
`dynamic TAO_Notify_Service Service_Object * TAO_RT_Notification:_make_TAO_RT_Notify_Service () ""`

If your application links to the RT-Notification library, you can configure the RT-Notification statically via:
`static TAO_RT_Notify_Service ""`

The service objects also accept the following options to control concurrency in the Notification.
Note that the Notification extensions allow threads to be specified at the EventChannel, Admin and Proxy levels via QoS parameters at run-time.

Option | Description
--- | ---
-DispatchingThreads [thread_count] | Specifies the number of threads for dispatching.
-SourceThreads [thread_count] | Specifies the number of threads for ProxyConsumer filter evaluation.
-ListenerThreads [thread_count] | Specifies the number of threads for ProxySupplier filter evaluation.
-AsynchUpdates | Send subscription and publication updates asynchronously.
-NoUpdates | Do not send any subscription and publication updates.
-AllocateTaskperProxy | Allocate threads for the -LookupThreads and -ListenerThreads per proxy See the README for further explaination.

##
Feature matrix for the Cos Notification Service

#### Supported Interfaces

CosNotification::QoSAdmin
CosNotification::AdminPropertiesAdmin
CosNotifyComm::NotifyPublish
CosNotifyComm::NotifySubscribe
CosNotifyComm::PushConsumer
CosNotifyComm::PushSupplier
CosNotifyComm::StructuredPushConsumer
CosNotifyComm::StructuredPushSupplier
CosNotifyComm::SequencePushConsumer
CosNotifyComm::SequencePushSupplier
CosNotifyFilter::Filter
CosNotifyFilter::MappingFilter
CosNotifyFilter::FilterFactory
CosNotifyFilter::FilterAdmin
CosNotifyChannelAdmin::ProxyConsumer
CosNotifyChannelAdmin::ProxySupplier
CosNotifyChannelAdmin::ProxyPushConsumer
CosNotifyChannelAdmin::StructuredProxyPushConsumer
CosNotifyChannelAdmin::SequenceProxyPushConsumer
CosNotifyChannelAdmin::ProxyPushSupplier
CosNotifyChannelAdmin::StructuredProxyPushSupplier
CosNotifyChannelAdmin::SequenceProxyPushSupplier
CosNotifyChannelAdmin::ConumerAdmin
CosNotifyChannelAdmin::SupplierAdmin
CosNotifyChannelAdmin::EventChannel
CosNotifyChannelAdmin::EventChannelFactory

#### UnSupported Interfaces

CosNotifyComm::PullConsumer
CosNotifyComm::PullSupplier
CosNotifyComm::StructuredPullConsumer
CosNotifyComm::StructuredPullSupplier
CosNotifyComm::SequencePullConsumer
CosNotifyComm::SequencePullSupplier
CosNotifyChannelAdmin::ProxyPullSupplier
CosNotifyChannelAdmin::StructuredProxyPullSupplier
CosNotifyChannelAdmin::SequenceProxyPullSupplier
CosNotifyChannelAdmin::ProxyPullConsumer
CosNotifyChannelAdmin::StructuredProxyPullConsumer
CosNotifyChannelAdmin::SequenceProxyPullConsumer

#### Interfaces Extensions for RTCORBA support

NotifyExt::EventChannelFactory
NotifyExt::ConsumerAdmin
NotifyExt::SupplierAdmin

Interface : `CosNotification::QoSAdmin`
Base Interface(s) : none

Method | Supported | Tested | Notes
--- | --- | --- | ---
`get_qos` | Yes | No |
`set_qos` | Yes | Yes, see Ordering Discarding |
`validate_qos` | No |  |

QoS Properties support on all interfaces supporting CosNotification::QoSAdmin

- EventReliability : Not supported
- ConnectionReliability : Not supported
- Priority : Supported Per Message, Priority applied to Channel, Admin or proxy Objects are NOT applied to the events.
- StartTime : Not supported
- StopTime : Not Supported
- Timeout : Supported Per Message, Timeouts applied to Channel, Admin or proxy Objects are NOT applied to the events.
- StartTimeSupported : Not Supported
- StopTimeSupported : Not Supported
- MaxEventsPerConsumer : Supported (Only applies to ProxySuppliers)
- OrderPolicy : Supported policies - PriorityOrder, AnyOrder, FifoOrder, LifoOrder, DeadlineOrder
- DiscardPolicy : : Supported policies - PriorityOrder, AnyOrder, FifoOrder, LifoOrder, DeadlineOrder
- MaximumBatchSize : Supported and applied to SequenceProxySuppliers
- PacingInterval : Supported and applied to SequenceProxySuppliers

Interface : `CosNotification::AdminPropertiesAdmin`
Base Interface(s) : none

Method | Supported | Tested | Notes
--- | --- | --- | ---
`get_admin` | Yes | No |
`set_admin` | Yes | Yes, see Events |

Interface : `CosNotifyComm::NotifyPublish`
Base Interface(s) : none

Method | Supported | Tested | Notes
--- | --- | --- | ---
`offer_change` | Yes | Yes, see Updates |

Interface : `CosNotifyComm::NotifySubscribe`
Base Interface(s) : none

Method | Supported | Tested | Notes
--- | --- | --- | ---
`subscription_change` | Yes | see Updates |

Interface : `CosNotifyComm::PushConsumer`
Base Interface(s) : `CosNotifyComm::NotifyPublish`, CosEventComm::PushConsumer

Method | Supported | Tested | Notes
--- | --- | --- | ---
`CosEventComm::PushConsumer::push` | Yes | Yes, see MultiTypes,Simple |
`CosEventComm::PushConsumer::disconnect_push_consumer` | Yes | Yes, see ConnectDisconnect |

Interface : `CosNotifyComm::PullConsumer`
Not Supported .

Interface : `CosNotifyComm::PushSupplier`
Base Interface(s) : `CosNotifyComm::NotifySubscribe, CosEventComm::PushSupplier`

Method | Supported | Tested | Notes
--- | --- | --- | ---
`CosEventComm::PushConsumer::disconnect_push_supplier` | Yes | Yes, see ConnectDisconnect |

Interface : `CosNotifyComm::PullSupplier`
Not Supported .

Interface : `CosNotifyComm::StructuredPushConsumer`
Base Interface(s) CosNotifyComm::NotifyPublish

Method | Supported | Tested | Notes
--- | --- | --- | ---
`push_structured_event` | Yes | Yes, see MultiTypes |
`disconnect_structured_push_consumer` | Yes | Yes, see ConnectDisconnect |

Interface : `CosNotifyComm::StructuredPullConsumer`
Not Supported .

Interface : `CosNotifyComm::StructuredPullSupplier`
Not Supported .

Interface : `CosNotifyComm::StructuredPushSupplier`
Base Interface(s) CosNotifyComm::NotifySubscribe

Method | Supported | Tested | Notes
--- | --- | --- | ---
`disconnect_structured_push_supplier` | Yes | Yes, see ConnectDisconnect |

Interface : `CosNotifyComm::SequencePushConsumer`
Base Interface(s) `CosNotifyComm::NotifyPublish`

Method | Supported | Tested | Notes
--- | --- | --- | ---
`push_structured_events` | Yes | Yes, see MultiTypes |
`disconnect_sequence_push_consumer` | Yes | Yes, see ConnectDisconnect |

Interface : `CosNotifyComm::SequencePullConsumer`
Not Supported .

Interface : `CosNotifyComm::SequencePullSupplier`
Not Supported .

Interface : `CosNotifyComm::SequencePushSupplier`
Base Interface(s) CosNotifyComm::NotifySubscribe

Method | Supported | Tested | Notes
--- | --- | --- | ---
`disconnect_sequence_push_supplier` | Yes | Yes, see ConnectDisconnect |

Interface : `CosNotifyFilter::Filter`
Base Interface(s) none

Method | Supported | Tested | Notes
--- | --- | --- | ---
`constraint_grammar` | Yes | No |
`add_constraints` | Yes | Yes, see Filter |
`modify_constraints` | Yes | No |
`get_constraints` | Yes | No |
`get_all_constraints` | Yes | No |
`remove_all_constraints` | Yes | No |
`destroy` | Yes | No |
`match` | Yes | No |
`match_structured` | Yes | yes, called internally by Notification during execution of Structured_Filter |
`match_typed` | No | No |
`attach_callback` | No | No |
`detach_callback` | No | No |
`get_callbacks` | No | No |

Interface : `CosNotifyFilter::MappingFilter`
Not Supported .

Interface : `CosNotifyFilter::FilterFactory`
Base Interface(s) none

Method | Supported | Tested | Notes
--- | --- | --- | ---
`create_filter` | Yes | Yes, see Filter |
`create_mapping_filter` | No |  |

Interface : `CosNotifyFilter::FilterAdmin`
Base Interface(s)

Method | Supported | Tested | Notes
--- | --- | --- | ---
`add_filter` | Yes | Yes, see Filter |
`remove_filter` | Yes | Yes, see Filter |
`get_filter` | Yes | No |
`get_all_filters` | Yes | Yes, see Filter |
`remove_all_filters` | Yes | Yes, see Filter |

Interface : `CosNotifyChannelAdmin::ProxyConsumer`
Base Interface(s) `CosNotification::QoSAdmin `, `CosNotifyFilter::FilterAdmin`

Method | Supported | Tested | Notes
--- | --- | --- | ---
`MyType` | Yes | No |
`MyAdmin` | Yes | No |
`obtain_subscription_types` | Yes | Yes, see Updates | Only CosNotifyChannelAdmin::ALL_NOW_UPDATES_ON tested
`validate_event_qos` | No |  |

Interface : `CosNotifyChannelAdmin::ProxySupplier`
Base Interface(s) `CosNotification::QoSAdmin `, `CosNotifyFilter::FilterAdmin`

Method | Supported | Tested | Notes
--- | --- | --- | ---
`MyType` | Yes | No |
`MyAdmin` | Yes | No |
`priority_filter` | No |  |
`lifetime_filter` | No |  |
`obtain_offered_types` | Yes | Yes, see Updates | Only CosNotifyChannelAdmin::ALL_NOW_UPDATES_ON tested
`validate_event_qos` | No |  |

Interface : `CosNotifyChannelAdmin::ProxyPushConsumer`
Base Interface(s) `CosNotification::ProxyConsumer , CosNotifyComm::PushConsumer ``

Method | Supported | Tested | Notes
--- | --- | --- | ---
`connect_any_push_supplier` | Yes | Yes, see MultiTypes,ConnectDisconnect |

Interface : `CosNotifyChannelAdmin::StructuredProxyPushConsumer`
Base Interface(s) `CosNotification::ProxyConsumer , CosNotifyComm::StructuredPushConsumer `

Method | Supported | Tested | Notes
--- | --- | --- | ---
`connect_structured_push_supplier` | Yes | Yes, see MultiTypes,ConnectDisconnect |

Interface : `CosNotifyChannelAdmin::SequenceProxyPushConsumer`
Base Interface(s) `CosNotification::ProxyConsumer , CosNotifyComm::SequencePushConsumer `

Method | Supported | Tested | Notes
--- | --- | --- | ---
`connect_sequence_push_supplier` | Yes | Yes, see MultiTypes,ConnectDisconnect |

Interface : `CosNotifyChannelAdmin::ProxyPullSupplier`
Not Supported .

Interface : `CosNotifyChannelAdmin::StructuredProxyPullSupplier`
Not Supported .

Interface : `CosNotifyChannelAdmin::SequenceProxyPullSupplier`
Not Supported .

Interface : `CosNotifyChannelAdmin::ProxyPullConsumer`
Not Supported .

Interface : `CosNotifyChannelAdmin::StructuredProxyPullConsumer`
Not Supported .

Interface : `CosNotifyChannelAdmin::SequenceProxyPullConsumer`
Not Supported .

Interface : `CosNotifyChannelAdmin::ProxyPushSupplier`
Base Interface(s) `CosNotification::ProxySupplier, CosNotifyComm::PushSupplier `

Method | Supported | Tested | Notes
--- | --- | --- | ---
`connect_any_push_consumer` | Yes | Yes, see MultiTypes,ConnectDisconnect |
`suspend_connection` | Yes | No |
`resume_connection` | Yes | No |

Interface : `CosNotifyChannelAdmin::StructuredProxyPushSupplier`
Base Interface(s) `CosNotification::ProxySupplier, CosNotifyComm::StructuredPushSupplier `

Method | Supported | Tested | Notes
--- | --- | --- | ---
`connect_structured_push_consumer` | Yes | Yes, see MultiTypes,ConnectDisconnect |
`suspend_connection` | Yes | No |
`resume_connection` | Yes | No |

Interface : `CosNotifyChannelAdmin::SequenceProxyPushSupplier`
Base Interface(s) `CosNotification::ProxySupplier , CosNotifyComm::SequencePushSupplier `

Method | Supported | Tested | Notes
--- | --- | --- | ---
`connect_sequence_push_consumer` | Yes | Yes, see MultiTypes,ConnectDisconnect |
`suspend_connection` | Yes | No |
`resume_connection` | Yes | No |

Interface : `CosNotifyChannelAdmin::ConsumerAdmin`
Base Interface(s) `CosNotification::QoSAdmin , CosNotifyComm::NotifySubscribe , CosNotifyFilter::FilterAdmin , CosEventChannelAdmin::ConsumerAdmin`

Method | Supported | Tested | Notes
--- | --- | --- | ---
`CosEventChannelAdmin::ConsumerAdmin::obtain_push_supplier` | Yes | No |
`CosEventChannelAdmin::ConsumerAdmin::obtain_pull_supplier` | No |  |
`MyID` | Yes | No |
`MyChannel` | Yes | No |
`MyOperator` | Yes | No |
`priority_filter` | No |  |
`lifetime_filter` | No |  |
`pull_suppliers` | No |  |
`push_suppliers` | Yes | No |
`get_proxy_supplier` | Yes | Yes, see Updates |
`obtain_notification_pull_supplier` | No |  |
`obtain_notification_push_supplier` | Yes | Yes, see MultiTypes, ConnectDisconnect |
`destroy` | Yes | Yes, see LifeCycle, IdAssignment |

Interface : `CosNotifyChannelAdmin::SupplierAdmin`
Base Interface(s) `CosNotification::QoSAdmin , CosNotifyComm::NotifyPublish , CosNotifyFilter::FilterAdmin , CosEventChannelAdmin::SupplierAdmin`

Method | Supported | Tested | Notes
--- | --- | --- | ---
`CosEventChannelAdmin::SupplierAdmin::obtain_push_consumer` | Yes | No |
`CosEventChannelAdmin::SupplierAdmin::obtain_pull_consumer` | No |  |
`MyID` | Yes | No |
`MyChannel` | Yes | No |
`MyOperator` | Yes | No |
`pull_consumers` | No |  |
`push_consumers` | Yes | No |
`get_proxy_consumer` | Yes | Yes, see Updates |
`obtain_notification_pull_supplier` | No |  |
`obtain_notification_push_consumer` | Yes | Yes, see MultiTypes, ConnectDisconnect |
`destroy` | Yes | Yes, see LifeCycle, IdAssignment |

Interface : `CosNotifyChannelAdmin::EventChannel`
Base Interface(s) `CosNotification::QoSAdmin , CosNotification::AdminPropertiesAdmin , CosEventChannelAdmin::EventChannel`

Method | Supported | Tested | Notes
--- | --- | --- | ---
`CosEventChannelAdmin::EventChannel::for_consumers` | Yes | No |
`CosEventChannelAdmin::EventChannel::for_suppliers` | Yes | No |
`CosEventChannelAdmin::EventChannel::destroy` | Yes | yes, see Events, Filter |
`MyFactory` | Yes | No |
`default_consumer_admin` | Yes | Yes, see Events |
`default_supplier_admin` | Yes | Yes, see Events |
`default_filter_factory` | Yes | Yes, see Filter |
`new_for_consumers` | Yes | Yes, see Simple,Events |
`new_for_suppliers` | Yes | Yes, see Simple,Events |
`get_consumeradmin` | Yes | Yes, see IdAssignment |
`get_supplieradmin` | Yes | Yes, see IdAssignment |
`get_all_consumeradmins` | Yes | No |
`get_all_supplieradmins` | Yes | No |

AdminProperties supported at the EventChannel are:

- MaxQueueLength, MaxConsumers, MaxSuppliers, RejectNewEvents

see AdminProperties

Interface : `CosNotifyChannelAdmin::EventChannelFactory`
Base Interface(s) : none

Method | Supported | Tested | Notes
--- | --- | --- | ---
`create_channel` | Yes | Yes, see Events,Simple |
`get_all_channels` | Yes | No |
`get_event_channel` | Yes | Yes, see IdAssignment |

Interface : `NotifyExt::EventChannelFactory`
Base Interface(s) : CosNotifyChannelAdmin::EventChannelFactory

Method | Supported | Tested | Notes
--- | --- | --- | ---
`destroy` | Yes | Yes, see Destroy |

Interface : `NotifyExt::ConsumerAdmin`
Base Interface(s) : CosNotifyChannelAdmin::ConsumerAdmin

Method | Supported | Tested | Notes
--- | --- | --- | ---
`obtain_notification_push_supplier_with_qos` | Yes | Yes, see Lanes |

Interface : `NotifyExt::SupplierAdmin`
Base Interface(s) : CosNotifyChannelAdmin::SupplierAdmin

Method | Supported | Tested | Notes
--- | --- | --- | ---
`obtain_notification_push_consumer_with_qos` | Yes | Yes, see Lanes |

The additional QoS properties supported are:

- ThreadPoolParams
- ThreadPoolLanesParams

see the NotifyExt.idl file for the QoS definitions.

##
Scripting Options for Notification Service Testing framework

The Notification Service Testing framework uses the Service Configurator to load various command objects.
The `Command_Builder` object is used to load the target objects.
To test the various Notification features we then write scripts to rapidly reproduce test cases.
The Notify_Test_Driver program reads a svc.conf file and executes the commands specified.
The following options can specified to the Driver program:

Command | Description
--- | ---
-Timeout timeout_period_in_seconds | Specify the timeout period for this test
-IORoutput output_file_name | Output the IOR of the Activation Manager . This is used by a client to signal its peer.
-IORinput file://input_file_name | Input the IOR of the peer's Activation Manager . This is used to signal the peer.
-Skip_Priority_Levels_Check | Skip the check for multiple priority levels.

See the *.conf files in Lanes and ThreadPool for examples of the test framework in use.

The options that can be specified to each target object are as follows:

### Target Object : EventChannel

Loading Syntax: dynamic TAO_Notify_EventChannel_Command_Factory Service_Object *TAO_NotifyTests:_make_TAO_Notify_EventChannel_Command_Factory () ""

Command | Parameters | Description
--- | --- | ---
-Create | Name_of_channel Name_of_EventChannelFactory [COLLOCATED] | Create an Event Channel

Example : static Command_Builder "EventChannel -Create ec1 NotifyEventChannelFactory"

Command | Parameters | Description
--- | --- | ---
-Destroy | Name_of_channel | Destroy an Event Channel

Example : static Command_Builder "EventChannel -Destroy ec1"

Command | Parameters | Description
--- | --- | ---
-Set_QoS | Name_of_channel [QoS_Options] | Set QoS parameters on an event channel

QoS_Options = -ThreadPool [-Threads thread_pool_size (default= 1) ] [-Priority default_priority (default=ACE_DEFAULT_THREAD_PRIORITY)] | -Lanes lane_count [-Lane priority static_threads dynamic_threads]*

Example : : static Command_Builder "EventChannel -Set_QoS -ThreadPool Threads 2 -Priority 2"
Example : : static Command_Builder "EventChannel -Set_QoS -Lanes 2 -Lane 10 1 0 -Lane 30 2 1"

### Target Object : ConsumerAdmin

Loading Syntax: dynamic TAO_Notify_ConsumerAdmin_Command_Factory Service_Object *TAO_NotifyTests:_make_TAO_Notify_ConsumerAdmin_Command_Factory () ""

Command | Parameters | Description
--- | --- | ---
-Create | Name_of_Admin Name_of_EventChannel [-AND_OP | OR_OP (default = CosNotifyChannelAdmin::OR_OP)] | Create a ConsumerAdmin

Example : : static Command_Builder "ConsumerAdmin -Create ca1 ec1 -AND_OP"

Command | Parameters | Description
--- | --- | ---
-Subscription | Name_of_Admin +added_type1 +added_type2 ... -removed_type3 -removed_type4 ... | Send subscription updates to the ConsumerAdmin. Note that domain name is set to "*".

Example : : static Command_Builder "ConsumerAdmin -Subscription ca1 +Red +Green -Blue"

Command | Parameters | Description
--- | --- | ---
-Set_QoS | Name_of_Admin [QoS_Options] | Set QoS options for ConsumerAdmin

QoS_Options = -ThreadPool [-Threads thread_pool_size (default= 1) ] [-Priority default_priority (default=ACE_DEFAULT_THREAD_PRIORITY)] | -Lanes lane_count [-Lane priority static_threads dynamic_threads]*

Example : : static Command_Builder "ConsumerAdmin -Set_Qos -ThreadPool Threads 2 -Priority 2"
Example : : static Command_Builder "ConsumerAdmin -Set_Qos -Lanes 2 -Lane 10 1 0 -Lane 30 2 1"

### Target Object : SupplierAdmin

Loading Syntax: dynamic TAO_Notify_SupplierAdmin_Command_Factory Service_Object *TAO_NotifyTests:_make_TAO_Notify_SupplierAdmin_Command_Factory () ""

Command | Parameters | Description
--- | --- | ---
-Create | Name_of_Admin Name_of_EventChannel [-AND_OP | OR_OP (default = CosNotifyChannelAdmin::OR_OP)] | Create a SupplierAdmin

Example : : static Command_Builder "SupplierAdmin -Create sa1 ec1 -AND_OP"

Command | Parameters | Description
--- | --- | ---
-Offer | Name_of_Admin +added_type1 +added_type2 ... -removed_type3 -removed_type4 ... | Send offer updates to the SupplierAdmin. Note that domain name is set to "*".

Example : : static Command_Builder "SupplierAdmin -Offer ca1 +Red +Green -Blue"

Command | Parameters | Description
--- | --- | ---
-Set_QoS | Name_of_Admin [QoS_Options] | Set QoS options for SupplierAdmin

QoS_Options = -ThreadPool [-Threads thread_pool_size (default= 1) ] [-Priority default_priority (default=ACE_DEFAULT_THREAD_PRIORITY)] | -Lanes lane_count [-Lane priority static_threads dynamic_threads]*

Example : : static Command_Builder "SupplierAdmin -Set_Qos -ThreadPool Threads 2 -Priority 2"
Example : : static Command_Builder "SupplierAdmin -Set_Qos -Lanes 2 -Lane 10 1 0 -Lane 30 2 1"

### Target Object : PeriodicConsumer

Loading Syntax: dynamic TAO_Notify_Periodic_Consumer_Command_Factory Service_Object* TAO_NotifyTests:_make_TAO_Notify_Periodic_Consumer_Command_Factory () ""

Command | Parameters | Description
--- | --- | ---
-Create | Name_of_Consumer [-Relay relay_destination] [-Direct] [-Admin Name_of_ConsumerAdmin] [-POA name_of_POA (default = RootPOA)] [-Proxy proxy_name] [-Set_QoS [Qos_Options]] [-MaxCount expected_number_of_events] [-Check_Priority] | Create a PeriodicConsumer. The consumer is activated in the POA specified.

Example : : static Command_Builder "PeriodicConsumer -Create c1 ca1 -POA myPOA -Proxy ca1_proxy -MaxCount 10"

Command | Parameters | Description
--- | --- | ---
-Subscription | Name_of_Consumer +added_type1 +added_type2 ... -removed_type3 -removed_type4 ... | static Command_Builder "PeriodicConsumer -Subscription ca1 +Red +Green -Blue"

Example : : Send subscription updates to its proxy. Note that domain name is set to "*".

Command | Parameters | Description
--- | --- | ---
-Disconnect | Name_of_Consumer | Disconnect the Consumer from the EventChannel.

Example : : static Command_Builder -PeriodicConsumer "Disconnect ca1"

Command | Parameters | Description
--- | --- | ---
-Deactivate | Name_of_Consumer | Deactivate the Consumer from its POA

Example : : static Command_Builder "-PeriodicConsumer -Deactivate ca1"

Command | Parameters | Description
--- | --- | ---
-Status | Name_of_Consumer | Print the status of the consumer. Checks if the proxy is alive.

Example : : static Command_Builder "-PeriodicConsumer -Status ca1"

Command | Parameters | Description
--- | --- | ---
-Set_QoS | Name_of_consumer [QoS_Options] | Set QoS parameters on a Periodic Consumer. The actual QoS settings are applied to the corresponding ProxySupplier.

QoS_Options = -ThreadPool [-Threads thread_pool_size (default= 1) ] [-Priority default_priority (default=ACE_DEFAULT_THREAD_PRIORITY)] | -Laness lane_count [-Lane priority static_threads dynamic_threads]*

Example : : static Command_Builder "PeriodicConsumer -Set_QoS -ThreadPool Threads 2 -Priority 2"
Example : : static Command_Builder "PeriodicConsumer -Set_QoS -Lanes 2 -Lane 10 1 0 -Lane 30 2 1"

### Target Object : PeriodicSupplier

Loading Syntax: dynamic TAO_Notify_Periodic_Supplier_Command_Factory Service_Object* TAO_NotifyTests:_make_TAO_Notify_Periodic_Supplier_Command_Factory () ""

Command | Parameters | Description
--- | --- | ---

-Create

Name_of_Supplier
[-Direct direct_target]
[-Admin Name_of_ConsumerAdmin]
[-POA name_of_POA (default = RootPOA)]
[-Proxy proxy_name]
[-Set_QoS [Qos_Options]]
-EventType type_of_event
-FilterLongData name long_filterable_data
-Priority supplier_thread_priority
-Period sending_period (in microseconds)
-ExecTime estimated_time_per_send_operation
-Phase supplier_thread_starting_phase
-Iter number_of_events-to_send
-Load hint_to_consumer
-RunTime time_to_run_in_sec

Create a PeriodicSupplier. The supplier is activated in the POA specified.
The -Create command spawns a thread that sends periodic events.

Example : : static Command_Builder "PeriodicSupplier -Create s1 sa1_ec1 -Proxy s1_proxy -EventType RED -FilterLongData Temp 3 -Priority 0 -Period 10000 -ExecTime 10000 -Phase 0 -Iter 1 -Load 1 "

Command | Parameters | Description
--- | --- | ---
-Offer | Name_of_Supplier +added_type1 +added_type2 ... -removed_type3 -removed_type4 ... | static Command_Builder "PeriodicSupplier -Offer sa1 +Red +Green -Blue"

Example : : Send offer updates to its proxy. Note that domain name is set to "*".

Command | Parameters | Description
--- | --- | ---
-Disconnect | Name_of_Supplier | Disconnect the Supplier from the EventChannel.

Example : : static Command_Builder -PeriodicSupplier "Disconnect sa1"

Command | Parameters | Description
--- | --- | ---
-Deactivate | Name_of_Supplier | Deactivate the Supplier from its POA

Example : : static Command_Builder "-PeriodicSupplier -Deactivate ca1"

Command | Parameters | Description
--- | --- | ---
Status | Name_of_Supplier | Print the status of the consumer. Checks if the proxy is alive.

Example : : static Command_Builder "-PeriodicSupplier -Status sa1"

Command | Parameters | Description
--- | --- | ---
-Set_QoS | Name_of_Supplier [QoS_Options] | Set QoS parameters on a Periodic Supplier. The actual QoS settings are applied to the corresponding ProxyConsumer.

QoS_Options = -ThreadPool [-Threads thread_pool_size (default= 1) ] [-Priority default_priority (default=ACE_DEFAULT_THREAD_PRIORITY)] | -Laness lane_count [-Lane priority static_threads dynamic_threads]*

Example : : static Command_Builder "PeriodicSupplier -Set_QoS -ThreadPool Threads 2 -Priority 2"
Example : : static Command_Builder "PeriodicSupplier -Set_QoS -Lanes 2 -Lane 10 1 0 -Lane 30 2 1"

### Target Object : Filter

Loading Syntax: dynamic TAO_Notify_Filter_Command_Factory Service_Object* TAO_NotifyTests:_make_TAO_Notify_Filter_Command_Factory () ""

Command | Parameters | Description
--- | --- | ---
-CreateFactory | Filter_Factory_Name Event_Channel_Name | Obtain the default FilterFactory from the EventChannel.

Example : : static Command_Builder "Filter -CreateFactory ff ec1"

Command | Parameters | Description
--- | --- | ---
-CreateFilter | Filter_Name Filter_Factory_Name | Create a Filter

Example : : static Command_Builder "Filter -CreateFilter f1 ff"

Command | Parameters | Description
--- | --- | ---
-Add_Constraint | Filter_Name Constraint_Expression | Add a constraint to a filter.

Example : : static Command_Builder "Filter -Add_Constraint f1 'Temp > 2'"

Command | Parameters | Description
--- | --- | ---
-AddFilter | Filter_Name FilterAdmin_Name | Add a filter to an Admin. The FilterAdmin can be the name of any Admin or Proxy objects.

Example : : static Command_Builder "Filter -Add_Filter f1 sa1_ec1"

Command | Parameters | Description
--- | --- | ---
-Destroy | Filter_Name | Destroy the Filter.

Example : : static Command_Builder "Filter –Destroy ff "

### Target Object : Application

Loading Syntax for RTCORBA Application:
dynamic TAO_Notify_RT_Application_Command_Factory Service_Object * TAO_RT_NotifyTests:_make_TAO_Notify_RT_Application_Command_Factory () ""
Loading Syntax for non-RTCORBA Application:
dynamic TAO_Notify_Application_Command_Factory Service_Object * TAO_NotifyTests:_make_TAO_Notify_Application_Command_Factory () ""

Command | Parameters | Description
--- | --- | ---
-Init |  | Init the Application

Example : : static Command_Builder "Application -Init"

Command | Parameters | Description
--- | --- | ---
-Run |  | Run all the suppliers and consumers.

Example : : static Command_Builder "Application -Run"

Command | Parameters | Description
--- | --- | ---
-WaitForEvents |  | Wait till all the suppliers have send all there events and all the consumers have received the expected count of events.

Example : : static Command_Builder "Application –Wait_For_Events"

Command | Parameters | Description
--- | --- | ---
-Shutdown |  | Shutdown the ORB.

Example : : static Command_Builder "Application –Shutdown"

Command | Parameters | Description
--- | --- | ---
-DumpStats | [-Samples] | Dump performance statistics. if the -Samples option is specified all the latency samples are generated. Data files are created in the current directory with the following names: Supplier_{supplier_name}.dat Consumer_{consumer_name}.dat

Example : : static Command_Builder "Application –DumpStats"

Command | Parameters | Description
--- | --- | ---
-SignalPeer |  | Signal another waiting instance of the test.

Example : static Command_Builder "Application –SignalPeer":

Command | Parameters | Description
--- | --- | ---
-WaitToStart |  | Wait for another instance to signal.

Example :static Command_Builder "Application –WaitToStart"

### Target Object : POA

Loading Syntax for RTCORBA Application:
dynamic TAO_Notify_RT_POA_Command_Factory Service_Object* TAO_RT_NotifyTests:_make_TAO_Notify_RT_POA_Command_Factory () ""

Command | Parameters | Description
--- | --- | ---
-Create | POA_Name -PriorityModel {CLIENT|SERVER} default_priority (defaults : CLIENT_PROPAGATED, Priority = 0) -Lanes lane_count [-Lane priority static_threads dynamic_threads>]* -Bands band_count [-Band low_priority high_priority]* -ThreadPool static_threads priority | Create an RT POA with the specified name and options of

Example : : static Command_Builder "POA -Create poa_test -PriorityModel CLIENT 1 -Lanes 1 -Lane -15 1 0"

Command | Parameters | Description
--- | --- | ---
-Destroy | POA_Name | Destroy a POA

Example : : static Command_Builder "POA –Destroy”```````````````