int main(int argc, char** argv) { /* Get number of devices */ int numberOfDevices; std::string input_filename = FILENAME_TESTFILE; std::string scope_filename = SCOPE_PARAMETERFILE; std::string output_filename = OUTPUT_FILENAME; if(argc > 1) { input_filename = argv[1]; scope_filename = argv[1]; } if(argc > 2) { output_filename = argv[2]; } //std::cout << "Args read (" << input_filename << ", " << output_filename << ")" << std::endl; InputBuffer inputBuffer(CHUNK_BUFFER_COUNT, 1); /* Initialize input buffer (with dynamic elements) */ ScopeReader::ScopeParameter parameter(scope_filename); //int nSegments = parameter.nbrSegments; //int nWaveforms = parameter.nbrWaveforms; int nSample = parameter.nbrSamples; ScopeReader reader(parameter, &inputBuffer, CHUNK_COUNT); GrayBatStream<Chunk> os(1,masterUri, fitterUri); std::thread sendingThread([&inputBuffer, &os](){ while(inputBuffer.isFinished()) { inputBuffer.popTry([&os](Chunk& t){ os.send(t); }); } os.quit(); }); //std::cout << "Buffer created." << std::endl; reader.readToBuffer(); //Make sure all results are written back sendingThread.join(); return 0; }
// Method -> IAG0010Socket::Start // Param -> IAG0010Event &e // Returning -> void // Comments -> Method starts the data transfer // e is the reference to the event that becomes signalled when the transfer // has ended, data receiving and sending threads stopped and the connection // closed. When e is signalled, the main thread can exit void IAG0010Socket::Start(IAG0010Event &eventTransferEnded) { IAG0010Receive * objIAG0010Receive = NULL; IAG0010Send* objIAG0010Send = NULL; try { // Receiving thread creation and launching objIAG0010Receive = new IAG0010Receive(hClientSocket, eventSendOK, eventExitTyped, outputFileName,eventTransferEnded); thread receivingThread(&IAG0010Receive::Run, objIAG0010Receive); // Sending thread creation and launching objIAG0010Send = new IAG0010Send(hClientSocket, eventSendOK, eventExitTyped,eventTransferEnded); thread sendingThread(&IAG0010Send::Run, objIAG0010Send); receivingThread.join(); sendingThread.join(); _tcout << "IAG0010Socket: Transfer thrads joined " << endl; delete objIAG0010Receive; delete objIAG0010Send; } catch (exception &ex) { ConnectionError = TRUE; if (!objIAG0010Receive) delete objIAG0010Receive; if (!objIAG0010Send) delete objIAG0010Send; cout << ex.what() << endl; return; } }