static void write_verify_blocks(int fd) { int i; unsigned int block; char *buf = mapped_area + (block*blocksize); for(i = 0; i < num_blocks; i++) { block = i; buf = mapped_area + (block * blocksize); fill_with_expected_pattern(local_pattern, block); if ((i % num_procs) == rank) do_writer(fd, block, local_pattern); else do_reader(fd, block, local_pattern); } }
int ACE_TMAIN(int argc, ACE_TCHAR *argv[]) { try { // Initialize DomainParticipantFactory DDS::DomainParticipantFactory_var dpf = TheParticipantFactoryWithArgs(argc, argv); enum { READER, WRITER } mode = READER; bool toggle = false; { // New scope. ACE_Arg_Shifter shifter (argc, argv); while (shifter.is_anything_left ()) { const ACE_TCHAR* x = shifter.get_current(); if (ACE_OS::strcmp(x, ACE_TEXT("-reader")) == 0) { mode = READER; } if (ACE_OS::strcmp(x, ACE_TEXT("-writer")) == 0) { mode = WRITER; } if (ACE_OS::strcmp(x, ACE_TEXT("-toggle")) == 0) { toggle = true; } shifter.consume_arg (); } } // Create DomainParticipant DDS::DomainParticipantQos dp_qos; dpf->get_default_participant_qos(dp_qos); dp_qos.user_data.value.length(6); dp_qos.user_data.value[0] = 0; dp_qos.user_data.value[1] = 0; dp_qos.user_data.value[2] = 0; dp_qos.user_data.value[3] = 0; dp_qos.user_data.value[4] = 0; dp_qos.user_data.value[5] = (mode == READER) ? 0 : 1; DDS::DomainParticipant_var participant = dpf->create_participant(DOMAIN_ID, dp_qos, 0, OpenDDS::DCPS::DEFAULT_STATUS_MASK); if (!participant) { ACE_ERROR_RETURN((LM_ERROR, ACE_TEXT("ERROR: %N:%l: main() -") ACE_TEXT(" create_participant failed!\n")), -1); } // Register TypeSupport TestMsgTypeSupport_var ts = new TestMsgTypeSupportImpl; if (ts->register_type(participant, "") != DDS::RETCODE_OK) { ACE_ERROR_RETURN((LM_ERROR, ACE_TEXT("ERROR: %N:%l: main() -") ACE_TEXT(" register_type failed!\n")), -1); } // Create Topic CORBA::String_var type_name = ts->get_type_name(); DDS::Topic_var topic = participant->create_topic("TheTopic", type_name, TOPIC_QOS_DEFAULT, 0, OpenDDS::DCPS::DEFAULT_STATUS_MASK); if (!topic) { ACE_ERROR_RETURN((LM_ERROR, ACE_TEXT("ERROR: %N:%l: main() -") ACE_TEXT(" create_topic failed!\n")), -1); } int return_code = 1; switch (mode) { case READER: return_code = do_reader(participant, topic, toggle); break; case WRITER: return_code = do_writer(participant, topic, toggle); break; } // Clean-up! participant->delete_contained_entities(); dpf->delete_participant(participant); TheServiceParticipant->shutdown(); return return_code; } catch (const CORBA::Exception& e) { e._tao_print_exception("Exception caught in main():"); return -1; } return 0; }