diff options
Diffstat (limited to 'CIAO/connectors/dds4ccm/impl/ConditionManager.h')
-rw-r--r-- | CIAO/connectors/dds4ccm/impl/ConditionManager.h | 200 |
1 files changed, 0 insertions, 200 deletions
diff --git a/CIAO/connectors/dds4ccm/impl/ConditionManager.h b/CIAO/connectors/dds4ccm/impl/ConditionManager.h deleted file mode 100644 index d773e939af1..00000000000 --- a/CIAO/connectors/dds4ccm/impl/ConditionManager.h +++ /dev/null @@ -1,200 +0,0 @@ -#ifndef CONDITIONMANAGER_H_ -#define CONDITIONMANAGER_H_ - -#include "dds4ccm/idl/dds4ccm_BaseC.h" -#include "dds4ccm/impl/dds4ccm_conf.h" - -#if (CIAO_DDS4CCM_NDDS==1) -#include "dds4ccm/impl/ndds/WaitSet.h" -#elif (CIAO_DDS4CCM_OPENDDS==1) -#include "dds/DCPS/WaitSet.h" -#endif - -#include "dds4ccm/impl/dds4ccm_dds_impl_export.h" - -namespace CCM_DDS -{ - struct QueryFilter; -} - -namespace CIAO -{ - namespace DDS4CCM - { - /** - * @class ConditionManager - * - * @brief Helper class - * - * Manages the read and query conditions for the Getter, - * Reader and listeners. - */ - class DDS4CCM_DDS_IMPL_Export ConditionManager - { - public: - /// Constructor - ConditionManager (void); - - /// Destructor - ~ConditionManager (void); - - /// Returns the read condition in general - ::DDS::ReadCondition_ptr get_readcondition (void); - - /// Returns the query condition for the getter - ::DDS::QueryCondition_ptr get_querycondition_getter (void); - /// Returns the query condition for the reader - ::DDS::QueryCondition_ptr get_querycondition_reader (void); - /// Returns the query condition for the listener - ::DDS::QueryCondition_ptr get_querycondition_listener (void); - - /** - * Proxy method. - * See WaitSet::check_handle in ndds/WaitSet.h - * for more information on this. - * - * If WaitSet::check_handle set 'error' to true, a - * ::CCM_DDS::InternalError exception is called. - * Error will be ::DDS::RETCODE_ERROR - * - * If WaitSet::check_handle set 'non_existent' to true, - * a ::CCM_DDS::NonExistent exception is thrown. - */ - ::DDS::InstanceHandle_t check_handle ( - DDS_INSTANCE_HANDLE_T_IN instance_handle, - DDS_INSTANCE_HANDLE_T_IN lookup_handle); - - /** - * Getter functionality. - * Creates a read_condition for the getter. - * It will also initialize the waitset and attaches the - * read_condition to the waitset. - */ - void init_readcondition (void); - - /** - * Getter functionality, waits for the attached conditions. - * Only returns true when one of the getter conditions has triggered - * and we have data - */ - bool wait (const ::DDS::Duration_t & time_out); - - /** - * Returns the internal filter. This is the DDS4CCM QueryFilter - * (a representation of the DDS query). - * - * If the QueryFilter hasn't been initialized, a ::CCM_DDS::InternalError - * exception with error code ::DDS::RETCODE_ERROR is thrown. - */ - ::CCM_DDS::QueryFilter * query (void); - - /** - * Sets the DDS4CCM query filter. - * The following rules apply when a filter is set: - * - * If there's a read condition set, this will be removed. - * The read condition is replaced by a query condition. - * - * If there're no query conditions yet (i.e. the filter hasn't - * been set before), three query conditions are created: - * 1. One for the Getter - * 2. One for the Reader - * 3. One for the Listener - * Each query condition has it's own sample_state, - * instance_state and view_state set but the filters are - * the same. - * - * Off course the query condition for the getter will be - * attached to the waitset. - * - * If the internal filter has already been set, this method sets - * the new parameters for this filter on all three query conditions. - * - * If the filter expression (the actual query) is empty, all three query - * conditions will be removed (the query condition for the getter will be - * detached from the waitset first) and the initial read condition will - * created (see init_readcondition()). - */ - void query (const ::CCM_DDS::QueryFilter & filter); - - /** - * Sets the internal datareader. - * Applies to Getter, Reader and Listener - */ - void set_dds_entity (::DDS::DataReader_ptr dr); - - /** - * Retrieves the internal datareader. - */ - ::DDS::DataReader_ptr get_dds_entity (void); - - /** - * Detaches conditions from the waitset and - * removes all conditions by calling - * delete_readcondition on the DataReader. - */ - void passivate (void); - - private: - ::DDS::DataReader_var dr_; - - //TODO: Not allowed -#if (CIAO_DDS4CCM_NDDS==1) - ::CIAO::NDDS::DDS_WaitSet_i ws_; -#elif (CIAO_DDS4CCM_OPENDDS==1) - ::DDS::WaitSet ws_; -#endif - - /** - * Different QueryConditions since the sample mask - * differs for all entities. - */ - ::DDS::QueryCondition_var qc_reader_; - ::DDS::QueryCondition_var qc_getter_; - ::DDS::QueryCondition_var qc_listener_; - - ::DDS::ReadCondition_var rd_condition_; - - /** - * Internal getter for the DataReader. - * If the internal dds_entity is not set before this method - * is called, a CORBA::BAD_INV_ORDER exception is thrown. - */ - ::DDS::DataReader_ptr dds_entity (void); - - /** - * Removes the internal (read/query) condition by invoking - * delete_condition on the DataReader. - */ - void remove_condition (::DDS::QueryCondition_ptr qc, - const char * type); - - /** - * Calling 'remove_condition' for each query and read - * condition. - * - * The query condition for the getter will be detached from - * the waitset first. - */ - void remove_conditions (void); - - /** - * Getter functionality. - * - * Attaches the query condition for the getter to the - * waitset. It the waitset doesn't exist, it will be - * created. - */ - void attach_querycondition (void); - - /** - * Generic method which sets the parameters of the given - * filter on the given query condition. - */ - void set_parameters (const ::CCM_DDS::QueryFilter & filter, - ::DDS::QueryCondition_ptr qc); - }; - } -} - -#endif /* CONDITIONMANAGER_H_ */ |