SubscriberDelegate::SubscriberDelegate( const dds::domain::DomainParticipant& dp, const dds::sub::qos::SubscriberQos& qos, const dds::core::status::StatusMask& event_mask) : dp_(dp), qos_(qos), listener_(0), mask_(event_mask), sub_(), sub_event_forwarder_() { DDS::SubscriberQos sqos = org::opensplice::sub::qos::convertQos(qos); DDS::Subscriber_ptr s = dp->dp_->create_subscriber(sqos, 0, event_mask.to_ulong()); if(s == 0) throw dds::core::NullReferenceError(org::opensplice::core::exception_helper( OSPL_CONTEXT_LITERAL( "dds::core::NullReferenceError : Unable to create Subscriber. " "Nil return from ::create_subscriber"))); sub_.reset(s, ::org::opensplice::core::SubDeleter(dp_->dp_)); DDS::DataReaderQos oldqos; DDS::ReturnCode_t result = sub_->get_default_datareader_qos(oldqos); org::opensplice::core::check_and_throw(result, OSPL_CONTEXT_LITERAL("Calling ::get_default_datareader_qos")); default_dr_qos_ = org::opensplice::sub::qos::convertQos(oldqos); entity_ = DDS::Entity::_narrow(s); }
void SubscriberDelegate::event_forwarder( dds::sub::SubscriberListener* listener, const dds::core::smart_ptr_traits<DDS::SubscriberListener>::ref_type& forwarder, const dds::core::status::StatusMask& event_mask) { #ifdef _WIN32 #pragma warning( push ) #pragma warning( disable : 4702 ) //disable warning caused by temporary exception, remove later #endif throw dds::core::UnsupportedError(org::opensplice::core::exception_helper( OSPL_CONTEXT_LITERAL("dds::core::UnsupportedError : SubscriberListener is not currently supported"))); #ifdef _WIN32 #pragma warning ( pop ) //re-enable warning to prevent leaking to user code, remove later #endif dds::core::smart_ptr_traits<DDS::SubscriberListener>::ref_type tmp_fwd; if(listener) { tmp_fwd = forwarder; } listener_ = listener; sub_event_forwarder_.swap(tmp_fwd); mask_ = event_mask; DDS::ReturnCode_t result = sub_->set_listener(sub_event_forwarder_.get(), event_mask.to_ulong()); org::opensplice::core::check_and_throw(result, OSPL_CONTEXT_LITERAL("Calling ::set_listener")); }
void SubscriberDelegate::init_builtin(DDS::Subscriber_ptr ddssub) { if(ddssub == 0) throw dds::core::NullReferenceError(org::opensplice::core::exception_helper( OSPL_CONTEXT_LITERAL( "dds::core::NullReferenceError : Unable to get builtin Subscriber. " "Nil return from ::get_builtin_subscriber"))); DDS::SubscriberQos qos; DDS::ReturnCode_t result = ddssub->get_qos(qos); org::opensplice::core::check_and_throw(result, OSPL_CONTEXT_LITERAL("Calling ::get_qos")); qos_ = org::opensplice::sub::qos::convertQos(qos); sub_.reset(ddssub, ::org::opensplice::core::SubDeleter(dp_->dp_)); DDS::DataReaderQos oldqos; result = sub_->get_default_datareader_qos(oldqos); org::opensplice::core::check_and_throw(result, OSPL_CONTEXT_LITERAL("Calling ::get_default_datareader_qos")); default_dr_qos_ = org::opensplice::sub::qos::convertQos(oldqos); entity_ = DDS::Entity::_narrow(ddssub); org::opensplice::core::SubDeleter* d = OSPL_CXX11_STD_MODULE::get_deleter<org::opensplice::core::SubDeleter>(sub_); if(d) { d->set_builtin(); } }
Topic(const dds::domain::DomainParticipant& dp, const std::string& name, const std::string& type_name) : dds::topic::detail::TopicDescription<T>(dp, name, type_name), dp_(dp), qos_(), listener_(0), mask_(dds::core::status::StatusMask()) { char* tn = ts_.get_type_name(); ts_.register_type(dp->dp_.get(), tn); qos(dp.default_topic_qos()); DDS::TopicQos tqos = convertQos(qos_); t_ = dp->dp_->create_topic(name.c_str(), tn, tqos, 0, mask_.to_ulong()); if (t_ == 0) throw dds::core::NullReferenceError( org::opensplice::core::exception_helper( OSPL_CONTEXT_LITERAL( "dds::core::NullReferenceError : Unable to create Topic! " "Nil return from ::create_topic"))); topic_ = org::opensplice::core::DDS_TOPIC_REF(t_, org::opensplice::core::TopicDeleter(dp->dp_)); }
void SubscriberDelegate::default_datareader_qos(const dds::sub::qos::DataReaderQos& qos) { DDS::ReturnCode_t result = sub_->set_default_datareader_qos(convertQos(qos)); org::opensplice::core::check_and_throw(result, OSPL_CONTEXT_LITERAL("Calling ::set_default_datareader_qos")); default_dr_qos_ = qos; }
void ignore(const dds::domain::DomainParticipant& dp, FwdIterator begin, FwdIterator end) { for(FwdIterator i = begin; i < end; i++) { DDS::ReturnCode_t result = ((dds::domain::DomainParticipant)dp)->dp_->ignore_topic(i->handle()); org::opensplice::core::check_and_throw(result, OSPL_CONTEXT_LITERAL("Calling ::ignore_topic")); } }
SubscriberDelegate::~SubscriberDelegate() { if(listener_ != 0) { DDS::ReturnCode_t result = sub_->set_listener(0, DDS::STATUS_MASK_NONE); org::opensplice::core::check_and_throw(result, OSPL_CONTEXT_LITERAL("Calling ::set_listener(nil)")); } }
const ::dds::core::status::InconsistentTopicStatus& inconsistent_topic_status() { DDS::InconsistentTopicStatus status; DDS::ReturnCode_t result = t_->get_inconsistent_topic_status(status); org::opensplice::core::check_and_throw(result, OSPL_CONTEXT_LITERAL("Calling ::get_inconsistent_topic_status")); inconsistent_topic_status_->total_count(status.total_count); inconsistent_topic_status_->total_count_change(status.total_count_change); return inconsistent_topic_status_; }
~ReadCondition() { if(read_condition_.in()) { DDS::ReturnCode_t result = adr_->get_dds_datareader()->delete_readcondition(read_condition_.in()); org::opensplice::core::check_and_throw(result, OSPL_CONTEXT_LITERAL("Calling ::delete_readcondition")); } if(executor_) { delete executor_; } }
dds::sub::qos::DataReaderQos SubscriberDelegate::default_datareader_qos() { DDS::DataReaderQos oldqos; DDS::ReturnCode_t result = sub_->get_default_datareader_qos(oldqos); org::opensplice::core::check_and_throw(result, OSPL_CONTEXT_LITERAL("Calling ::get_default_datareader_qos")); dds::sub::qos::DataReaderQos newqos = org::opensplice::sub::qos::convertQos(oldqos); default_dr_qos_ = newqos; return default_dr_qos_; }
uint32_t discover(const dds::domain::DomainParticipant& dp, BinIterator begin) { #ifdef _WIN32 #pragma warning( push ) #pragma warning( disable : 4702 ) //disable warning caused by temporary exception, remove later #endif throw dds::core::UnsupportedError(org::opensplice::core::exception_helper( OSPL_CONTEXT_LITERAL("dds::core::UnsupportedError : Function not currently supported"))); #ifdef _WIN32 #pragma warning ( pop ) //re-enable warning to prevent leaking to user code, remove later #endif return 0; }
dds::sub::SubscriberListener* SubscriberDelegate::listener() const { #ifdef _WIN32 #pragma warning( push ) #pragma warning( disable : 4702 ) //disable warning caused by temporary exception, remove later #endif throw dds::core::UnsupportedError(org::opensplice::core::exception_helper( OSPL_CONTEXT_LITERAL("dds::core::UnsupportedError : SubscriberListener is not currently supported"))); #ifdef _WIN32 #pragma warning ( pop ) //re-enable warning to prevent leaking to user code, remove later #endif return this->listener_; }
TOPIC discover(const dds::domain::DomainParticipant& dp, const std::string& name, const dds::core::Duration& timeout) { #ifdef _WIN32 #pragma warning( push ) #pragma warning( disable : 4702 ) //disable warning caused by temporary exception, remove later #endif throw dds::core::UnsupportedError(org::opensplice::core::exception_helper( OSPL_CONTEXT_LITERAL("dds::core::UnsupportedError : Function not currently supported"))); #ifdef _WIN32 #pragma warning ( pop ) //re-enable warning to prevent leaking to user code, remove later #endif return dds::core::null; }
ReadCondition(const dds::sub::AnyDataReader& adr, const dds::sub::status::DataState& status, bool query = false) : executor_(0), adr_(adr), status_(status) { if(!query) { read_condition_ = adr_->get_dds_datareader()->create_readcondition(status_.sample_state().to_ulong(), status_.view_state().to_ulong(), status_.instance_state().to_ulong()); if(read_condition_.in() == 0) throw dds::core::NullReferenceError(org::opensplice::core::exception_helper( OSPL_CONTEXT_LITERAL("dds::core::NullReferenceError : Unable to create ReadCondition. " "Nil return from ::create_readcondition"))); condition_ = read_condition_.in(); } }
void org::opensplice::core::TopicDeleter::operator()(DDS::Topic* t) { if(!is_closed_) { DDS::ReturnCode_t result = dp_->delete_topic(t); org::opensplice::core::check_and_throw(result, OSPL_CONTEXT_LITERAL("Calling ::delete_topic")); if(dds::core::detail::maplog("MM") >= os_reportVerbosity) { std::ostringstream oss; oss << "Deleted Topic at: " << std::hex << t << std::dec; OMG_DDS_LOG("MM", oss.str().c_str()); } } DDS::release(t); }
void org::opensplice::core::PubDeleter::close(DDS::Publisher* p) { if(!is_closed_) { DDS::ReturnCode_t result = dp_->delete_publisher(p); org::opensplice::core::check_and_throw(result, OSPL_CONTEXT_LITERAL("Calling ::delete_publisher")); is_closed_ = true; if(dds::core::detail::maplog("MM") >= os_reportVerbosity) { std::ostringstream oss; oss << "Deleted Publisher at: " << std::hex << p << std::dec; OMG_DDS_LOG("MM", oss.str().c_str()); } } }
void org::opensplice::core::DWDeleter::operator()(DDS::DataWriter* w) { if(!is_closed_) { DDS::ReturnCode_t result = pub_->delete_datawriter(w); org::opensplice::core::check_and_throw(result, OSPL_CONTEXT_LITERAL("Calling ::delete_datawriter")); if(dds::core::detail::maplog("MM") >= os_reportVerbosity) { std::ostringstream oss; oss << "Deleted DataWriter at: " << std::hex << w << std::dec; OMG_DDS_LOG("MM", oss.str().c_str()); } } DDS::release(w); }
void org::opensplice::core::DPDeleter::close(DDS::DomainParticipant* dp) { if(!is_closed_) { DDS::DomainParticipantFactory_var dpf = DDS::DomainParticipantFactory::get_instance(); DDS::ReturnCode_t result = dpf->delete_participant(dp); org::opensplice::core::check_and_throw(result, OSPL_CONTEXT_LITERAL("Calling ::delete_participant")); is_closed_ = true; if(dds::core::detail::maplog("MM") >= os_reportVerbosity) { std::ostringstream oss; oss << "Deleted Participant at: " << std::hex << dp << std::dec; OMG_DDS_LOG("MM", oss.str().c_str()); } } }
Topic<T, DELEGATE>::Topic(const dds::domain::DomainParticipant& dp, const std::string& topic_name, const dds::topic::qos::TopicQos& qos, dds::topic::TopicListener<T>* listener, const dds::core::status::StatusMask& mask) : dds::topic::TopicDescription<T, DELEGATE>(new DELEGATE<T>(dp, topic_name, topic_type_name<T>::value(), qos, listener, mask)) { if (listener != NULL) { throw dds::core::UnsupportedError(org::opensplice::core::exception_helper( OSPL_CONTEXT_LITERAL("dds::core::UnsupportedError : TopicListener is not yet implemented"))); } }
QueryCondition(const dds::sub::Query& query, const dds::sub::status::DataState& data_state, const FUN& functor) : ReadCondition(query.data_reader(), data_state, functor, true), query_(query) { DDS::StringSeq params; params.length(static_cast<DDS::ULong>(query.parameters_length())); for(unsigned int i = 0; i < query.parameters_length(); i++) { params[i] = (query.begin() + i)->c_str(); } query_condition_ = adr_->get_dds_datareader()->create_querycondition(status_.sample_state().to_ulong(), status_.view_state().to_ulong(), status_.instance_state().to_ulong(), query.expression().c_str(), params); if (query_condition_.in() == 0) throw dds::core::NullReferenceError(org::opensplice::core::exception_helper( OSPL_CONTEXT_LITERAL("dds::core::NullReferenceError : Unable to create QueryCondition. " "Nil return from ::create_querycondition"))); condition_ = query_condition_.in(); }
void org::opensplice::core::DRDeleter::close(DDS::DataReader* r) { if(!is_closed_ && !is_builtin_) { DDS::ReturnCode_t result = sub_->delete_datareader(r); org::opensplice::core::check_and_throw(result, OSPL_CONTEXT_LITERAL("Calling ::delete_datareader")); is_closed_ = true; if(dds::core::detail::maplog("MM") >= os_reportVerbosity) { std::ostringstream oss; oss << "Deleted DataReader at: " << std::hex << r << std::dec; OMG_DDS_LOG("MM", oss.str().c_str()); } } if(is_builtin_) { throw 0; } }
dds::domain::DomainParticipant find(uint32_t id) { DDS::DomainParticipantFactory_var dpf = DDS::DomainParticipantFactory::get_instance(); if(dpf.in() == 0) { throw dds::core::PreconditionNotMetError(org::opensplice::core::exception_helper( OSPL_CONTEXT_LITERAL( "dds::core::PreconditionNotMetError: Unable to resolve the DomainParticipant Factory."))); } DDS::DomainParticipant_ptr ddsdp = dpf->lookup_participant(id); if(ddsdp) { dds::domain::DomainParticipant dp = org::opensplice::core::EntityRegistry<DDS::DomainParticipant_ptr, dds::domain::DomainParticipant>::get(ddsdp); if(dp != dds::core::null) { return dp; } } return dds::domain::DomainParticipant(dds::core::null); }
void ignore(const dds::domain::DomainParticipant& dp, const dds::core::InstanceHandle& handle) { DDS::ReturnCode_t result = ((dds::domain::DomainParticipant)dp)->dp_->ignore_topic(handle->handle()); org::opensplice::core::check_and_throw(result, OSPL_CONTEXT_LITERAL("Calling ::ignore_topic")); }
virtual ~QueryCondition() { DDS::ReturnCode_t result = adr_->get_dds_datareader()->delete_readcondition(query_condition_.in()); org::opensplice::core::check_and_throw(result, OSPL_CONTEXT_LITERAL("Calling ::delete_readcondition")); }
void SubscriberDelegate::qos(const dds::sub::qos::SubscriberQos& sqos) { DDS::ReturnCode_t result = sub_->set_qos(org::opensplice::sub::qos::convertQos(sqos)); org::opensplice::core::check_and_throw(result, OSPL_CONTEXT_LITERAL("Calling ::set_qos")); qos_ = sqos; }
void SubscriberDelegate::notify_datareaders() { DDS::ReturnCode_t result = sub_->notify_datareaders(); org::opensplice::core::check_and_throw(result, OSPL_CONTEXT_LITERAL("Calling ::notify_datareaders")); }
CoherentAccessImpl() { throw dds::core::UnsupportedError(org::opensplice::core::exception_helper( OSPL_CONTEXT_LITERAL("dds::core::UnsupportedError : Function not currently supported"))); }