/** * Creates abstract DataReader for subscriber and topic * * @param subscriber DDS subscriber to attach reader * @param topic Topic to read from * @return DDS DataReader * @throws IOException */ public DataReader createReader(final Subscriber subscriber, final Topic topic) throws IOException { final DataReader parentReader = subscriber.create_datareader( topic, Subscriber.DATAREADER_QOS_USE_TOPIC_QOS, null, StatusKind.STATUS_MASK_NONE); if (parentReader == null) { throw new IOException("Could not create DataReader"); } return parentReader; }
private static void subscriberMain(int domainId, int sampleCount) { DomainParticipant participant = null; Subscriber subscriber = null; Topic topic = null; DataReaderListener listener = null; DoubleArrayDataDataReader reader = null; try { // --- Create participant --- // /* To customize participant QoS, use the configuration file USER_QOS_PROFILES.xml */ participant = DomainParticipantFactory.TheParticipantFactory.create_participant( domainId, DomainParticipantFactory.PARTICIPANT_QOS_DEFAULT, null /* listener */, StatusKind.STATUS_MASK_NONE); if (participant == null) { System.err.println("create_participant error\n"); return; } // --- Create subscriber --- // /* To customize subscriber QoS, use the configuration file USER_QOS_PROFILES.xml */ subscriber = participant.create_subscriber( DomainParticipant.SUBSCRIBER_QOS_DEFAULT, null /* listener */, StatusKind.STATUS_MASK_NONE); if (subscriber == null) { System.err.println("create_subscriber error\n"); return; } // --- Create topic --- // /* Register type before creating topic */ String typeName = DoubleArrayDataTypeSupport.get_type_name(); DoubleArrayDataTypeSupport.register_type(participant, typeName); /* To customize topic QoS, use the configuration file USER_QOS_PROFILES.xml */ topic = participant.create_topic( "Example DoubleArrayData", typeName, DomainParticipant.TOPIC_QOS_DEFAULT, null /* listener */, StatusKind.STATUS_MASK_NONE); if (topic == null) { System.err.println("create_topic error\n"); return; } // --- Create reader --- // listener = new DoubleArrayDataListener(); /* To customize data reader QoS, use the configuration file USER_QOS_PROFILES.xml */ reader = (DoubleArrayDataDataReader) subscriber.create_datareader( topic, Subscriber.DATAREADER_QOS_DEFAULT, listener, StatusKind.STATUS_MASK_ALL); if (reader == null) { System.err.println("create_datareader error\n"); return; } // --- Wait for data --- // final long receivePeriodSec = 4; for (int count = 0; (sampleCount == 0) || (count < sampleCount); ++count) { System.out.println( "DoubleArrayData subscriber sleeping for " + receivePeriodSec + " sec..."); try { Thread.sleep(receivePeriodSec * 1000); // in millisec } catch (InterruptedException ix) { System.err.println("INTERRUPTED"); break; } } } finally { // --- Shutdown --- // if (participant != null) { participant.delete_contained_entities(); DomainParticipantFactory.TheParticipantFactory.delete_participant(participant); } /* RTI Data Distribution Service provides the finalize_instance() method for users who want to release memory used by the participant factory singleton. Uncomment the following block of code for clean destruction of the participant factory singleton. */ // DomainParticipantFactory.finalize_instance(); } }