From 23b42c58faa12415ec1b61bc39a9c3a89f5e9c57 Mon Sep 17 00:00:00 2001 From: MasterRoby3 Date: Wed, 9 Aug 2023 23:10:42 +0200 Subject: [PATCH] Completed network communication and updated header format. TODO multiple clients --- Progetto.code-workspace | 8 ++++++ a.out | Bin 62984 -> 62536 bytes evBuild.out | Bin 0 -> 17440 bytes event_builder.cxx | 10 +++++++- fragment_dataformat.h | 10 +++++--- prov.out | Bin 0 -> 62632 bytes provider.cxx | 54 ++++++++++++++++++++++++---------------- 7 files changed, 56 insertions(+), 26 deletions(-) create mode 100644 Progetto.code-workspace create mode 100755 evBuild.out create mode 100755 prov.out diff --git a/Progetto.code-workspace b/Progetto.code-workspace new file mode 100644 index 0000000..bab1b7f --- /dev/null +++ b/Progetto.code-workspace @@ -0,0 +1,8 @@ +{ + "folders": [ + { + "path": ".." + } + ], + "settings": {} +} \ No newline at end of file diff --git a/a.out b/a.out index 2c9b36b65a82b8e7ff69f0fad7c035f589244b11..193102b3231aa8487231e222c23ea806f537fd70 100755 GIT binary patch delta 17023 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 G2me3bz6_=S diff --git a/evBuild.out b/evBuild.out new file mode 100755 index 0000000000000000000000000000000000000000..4e41ae5bbf1c86bcf75306e4a579cf68e7ded34f GIT binary patch literal 17440 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 aI**XsWkov8Jt|W4g`1Ve9FKvA75@a!2l8tG literal 0 HcmV?d00001 diff --git a/event_builder.cxx b/event_builder.cxx index 13795e5..85162ac 100644 --- a/event_builder.cxx +++ b/event_builder.cxx @@ -1,4 +1,5 @@ #include +#include #include #include #include @@ -49,7 +50,14 @@ int acceptConnection(int server_fd) { return client_fd; } +void term_handler(int signal) { + printf("Terminated, received SIGNAL %d", signal); + exit(EXIT_SUCCESS); +} + int main(int argc, char const *argv[]) { + signal(SIGTERM, term_handler); + if (argc != 2) { printf("Usage: %s portNumber \n", argv[0]); exit(EXIT_FAILURE); @@ -69,7 +77,7 @@ int main(int argc, char const *argv[]) { perror("Receive failed"); exit(EXIT_FAILURE); } - printf("[RICEVUTO]\t0x%x", word); + printf("[RICEVUTO]\t0x%x\n", word); } diff --git a/fragment_dataformat.h b/fragment_dataformat.h index b37a002..cbecd89 100644 --- a/fragment_dataformat.h +++ b/fragment_dataformat.h @@ -8,6 +8,7 @@ typedef struct Header { uint32_t startOfHeaderMarker = START_OF_HEADER_MARKER; uint32_t headerSize; uint32_t fragmentSize; + uint32_t sourceIdentifier; uint32_t runNumber; uint32_t detectorEventNumber; uint32_t numberOfStatusElements; @@ -39,11 +40,12 @@ void encode_header(uint32_t *buffer, const Header &header) { buffer[0] = header.startOfHeaderMarker; buffer[1] = header.headerSize; buffer[2] = header.fragmentSize; - buffer[3] = header.runNumber; - buffer[4] = header.detectorEventNumber; - buffer[5] = header.numberOfStatusElements; + buffer[3] = header.sourceIdentifier; + buffer[4] = header.runNumber; + buffer[5] = header.detectorEventNumber; + buffer[6] = header.numberOfStatusElements; - std::memcpy(&buffer[6], header.statusElementsArray, header.numberOfStatusElements * sizeof(uint32_t)); + std::memcpy(&buffer[7], header.statusElementsArray, header.numberOfStatusElements * sizeof(uint32_t)); } void encode_fragment(uint32_t *buffer, const Fragment &fragment){ diff --git a/prov.out b/prov.out new file mode 100755 index 0000000000000000000000000000000000000000..466593a9b8f166c85d1b06325f81d001ed030ddf GIT binary patch literal 62632 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 ZVZKzm3O5BeiR$+plN{$*Dp-oz{{h+=3k3iG literal 0 HcmV?d00001 diff --git a/provider.cxx b/provider.cxx index 51c905e..e2686ae 100644 --- a/provider.cxx +++ b/provider.cxx @@ -12,6 +12,7 @@ #include #include #include +#include #include "fragment_dataformat.h" @@ -51,7 +52,16 @@ void connectTo(int sock, const char* host, int port) { } +void term_handler(int signal) { + printf("Terminated, received SIGNAL %d", signal); + exit(EXIT_SUCCESS); +} + + int main(int argc, char* argv[]) { + signal(SIGTERM, term_handler); + signal(SIGINT, term_handler); + //will use it later to obtain random number from hardware std::random_device rd; std::mt19937 generator(42); @@ -67,21 +77,24 @@ int main(int argc, char* argv[]) { uint32_t event_number = 0; uint32_t run_number = 0; + uint32_t source_id = 0; - if (argc != 4) { - printf("Usage %s host portNumber runNumber\n", argv[0]); + if (argc != 5) { + printf("Usage %s host portNumber sourceId runNumber\n", argv[0]); exit(EXIT_FAILURE); } const char* host = argv[1]; int port = atoi(argv[2]); - run_number = atoi(argv[3]); + source_id = atoi(argv[3]); + run_number = atoi(argv[4]); int socket = makeSocket(); connectTo(socket, host, port); while (true) { Header header; + header.sourceIdentifier = source_id; header.runNumber = run_number; header.detectorEventNumber = event_number; event_number++; @@ -106,7 +119,7 @@ int main(int argc, char* argv[]) { } uint32_t payload_size = std::max(std::min(static_cast(std::round(normal_distr(generator))), MAX_FRAGMENTS), MIN_FRAGMENTS); - header.headerSize = 6 + header.numberOfStatusElements; + header.headerSize = 7 + header.numberOfStatusElements; header.fragmentSize = header.headerSize + payload_size; Fragment fragment; @@ -116,25 +129,24 @@ int main(int argc, char* argv[]) { fragment.payloadElements[i] = unif_int_distib(generator); } - - - - - - - for (uint32_t i = 0; i < header.fragmentSize; i++) { - + uint32_t buffer[header.fragmentSize]; + encode_fragment(buffer, fragment); + ssize_t bytes = send(socket, reinterpret_cast(buffer), sizeof(buffer), 0); + if (bytes != header.fragmentSize * sizeof(uint32_t)) { + perror("Send failed: nub bytes not matching"); + exit(EXIT_FAILURE); } - std::cout << std::hex << std::setw(8) << std::setfill('0'); - //std::cout << fragment.header; - for (uint8_t i = 0; i < fragment.header.numberOfStatusElements; i++) { - std::cout << "status element " << std::setw(8) << std::setfill('0') << fragment.header.statusElementsArray[i] << std::endl; - } - for (uint32_t i = 0; i < payload_size; i++) { - std::cout << "payload element " << std::setw(8) << std::setfill('0') << fragment.payloadElements[i] << std::endl; - } - std::cout << std::endl; + + //std::cout << std::hex << std::setw(8) << std::setfill('0'); + ////std::cout << fragment.header; + //for (uint8_t i = 0; i < fragment.header.numberOfStatusElements; i++) { + // std::cout << "status element " << std::setw(8) << std::setfill('0') << fragment.header.statusElementsArray[i] << std::endl; + //} + //for (uint32_t i = 0; i < payload_size; i++) { + // std::cout << "payload element " << std::setw(8) << std::setfill('0') << fragment.payloadElements[i] << std::endl; + //} + //std::cout << std::endl; if (header.numberOfStatusElements > 0){ delete [] fragment.header.statusElementsArray;