MStatus sgBDataCmd_key::readData( MString nameFilePath ) { MStatus status; std::ifstream inFile( nameFilePath.asChar(), ios::binary ); MString nameTarget; readString( nameTarget, inFile ); MSelectionList selList; nameTarget.substitute( ":", "_" ); MGlobal::getSelectionListByName( nameTarget, selList ); MObject oTarget; selList.getDependNode( 0, oTarget ); MFnDagNode fnNode( oTarget ); m_objectKeyDataImport.oTargetNode = oTarget; readUnsignedInt( m_objectKeyDataImport.unit, inFile ); readStringArray( m_objectKeyDataImport.namesAttribute, inFile ); readDoubleArray( m_objectKeyDataImport.dArrTime, inFile ); unsigned int lengthValues = m_objectKeyDataImport.namesAttribute.length() * m_objectKeyDataImport.dArrTime.length(); m_objectKeyDataImport.dArrValuesArray.setLength( lengthValues ); for( unsigned int j=0; j<lengthValues; j++ ) inFile.read( ( char* )&m_objectKeyDataImport.dArrValuesArray[j], sizeof( double ) ); inFile.close(); return MS::kSuccess; }
void MUX::onInit() { advertised_ = false; pnh_ = getPrivateNodeHandle(); topics_ = readStringArray("topics", pnh_); if (topics_.size() < 1) { NODELET_FATAL("need to specify at least one topic in ~topics"); return; } pub_selected_ = pnh_.advertise<std_msgs::String>("selected", 1, true); selected_topic_ = topics_[0]; subscribeSelectedTopic(); // in original mux node, it subscribes all the topics first, however // in our version, we never subscribe topic which are not selected. // service advertise: _select, select, add, list, delete ss_select_ = pnh_.advertiseService("select", &MUX::selectTopicCallback, this); ss_add_ = pnh_.advertiseService("add", &MUX::addTopicCallback, this); ss_list_ = pnh_.advertiseService("list", &MUX::listTopicCallback, this); ss_del_ = pnh_.advertiseService("delete", &MUX::deleteTopicCallback, this); }