_DataReaderView _DataReaderViewNew ( const gapi_dataReaderViewQos * qos, const _DataReader datareader) { _DataReaderView _this; v_dataViewQos ViewQos; u_dataView uReaderView; _TypeSupport typeSupport; _this = _DataReaderViewAlloc(); if ( _this != NULL ) { _EntityInit(_Entity(_this), _Entity(datareader)); typeSupport = _TopicDescriptionGetTypeSupport(datareader->topicDescription); assert(typeSupport); _this->datareader = datareader; ViewQos = u_dataViewQosNew(NULL); if ( ViewQos != NULL ) { if ( !copyReaderViewQosIn(qos, ViewQos) ) { u_dataViewQosFree(ViewQos); _EntityDispose(_Entity(_this)); _this = NULL; } } else { _EntityDispose(_Entity(_this)); _this = NULL; } } if ( _this != NULL ) { uReaderView = u_dataViewNew(u_dataReader(_EntityUEntity (datareader)), "dataReaderView", ViewQos); if ( uReaderView ) { U_DATAREADERVIEW_SET(_this, uReaderView); } else { _EntityDispose(_Entity(_this)); _this = NULL; } u_dataViewQosFree(ViewQos); } if ( _this != NULL ) { if ( !initViewQuery(_this) ) { u_dataViewFree(uReaderView); _EntityDispose(_Entity(_this)); _this = NULL; } } if ( _this != NULL ) { _EntityStatus(_this) = _Entity(datareader)->status; } return _this; }
DDS::ReturnCode_t DDS::OpenSplice::DataReaderView::nlReq_init ( DDS::OpenSplice::DataReader *reader, const char *name, const DDS::DataReaderViewQos &qos) { DDS::ReturnCode_t result; u_dataViewQos uQos = NULL; u_dataView uView = NULL; assert (reader != NULL); assert (name != NULL); /* qos consistency already checked in create_view */ assert (DDS::OpenSplice::Utils::qosIsConsistent(qos) == DDS::RETCODE_OK); uQos = u_dataViewQosNew(NULL); if (uQos) { result = DDS::OpenSplice::Utils::copyQosIn(qos, uQos); if (result == DDS::RETCODE_OK) { uView = u_dataViewNew( u_dataReader(reader->rlReq_get_user_entity()), name, uQos); if (uView) { result = DDS::OpenSplice::Entity::nlReq_init (u_entity (uView)); if (result == DDS::RETCODE_OK) { (void) DDS::DataReader::_duplicate(reader); this->pimpl->reader = reader; setDomainId(reader->getDomainId()); } if (result == DDS::RETCODE_OK) { result = this->pimpl->conditions->init(); } } else { result = DDS::RETCODE_OUT_OF_RESOURCES; CPP_REPORT(result, "Could not create DataReaderView."); } } u_dataViewQosFree(uQos); } else { result = DDS::RETCODE_OUT_OF_RESOURCES; CPP_REPORT(result, "Could not copy DataReaderViewQos."); } return result; }