From 2b204fbbf9677f902039b20cf9871fc0dc278a4f Mon Sep 17 00:00:00 2001 From: Shivang Vijay Date: Sun, 2 Jul 2023 00:39:27 +0530 Subject: [PATCH] Added comments in the concore.hpp file to help developer --- concore.hpp | 121 +++++++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 111 insertions(+), 10 deletions(-) diff --git a/concore.hpp b/concore.hpp index 7663332..02bb36a 100644 --- a/concore.hpp +++ b/concore.hpp @@ -20,6 +20,10 @@ using namespace std; +/** + * @class Concore + * @brief Class representing the Concore implementation in C++ + */ class Concore{ private: @@ -44,7 +48,11 @@ class Concore{ map iport; map oport; - //Constructor to put in iport and oport values in map + /** + * @brief Constructor for Concore class. + * Initializes the iport and oport maps by parsing the respective files. + * It also creates or attaches to the shared memory segment if required. + */ Concore(){ iport = mapParser("concore.iport"); oport = mapParser("concore.oport"); @@ -66,6 +74,10 @@ class Concore{ } } + /** + * @brief Destructor for Concore class. + * Detaches and removes the shared memory segment if shared memory created. + */ ~Concore() { // Detach the shared memory segment from the process @@ -76,6 +88,12 @@ class Concore{ shmctl(shmId_create, IPC_RMID, nullptr); } + /** + * @brief Extracts the numeric part from a string. + * @param str The input string. + * @return The numeric part of the string. + * Returns -1 if the string does not contain a numeric part. + */ key_t ExtractNumeric(const std::string& str) { std::string numberString; @@ -103,6 +121,10 @@ class Concore{ return std::stoi(numberString); } + /** + * @brief Creates a shared memory segment with the given key. + * @param key The key for the shared memory segment. + */ void createSharedMemory(key_t key) { shmId_create = shmget(key, 256, IPC_CREAT | 0666); @@ -118,6 +140,11 @@ class Concore{ } } + /** + * @brief Retrieves an existing shared memory segment with the given key. + * Waits until the shared memory segment is created by the writer process. + * @param key The key for the shared memory segment. + */ void getSharedMemory(key_t key) { while (true) { @@ -136,6 +163,11 @@ class Concore{ sharedData_get = static_cast(shmat(shmId_get, NULL, 0)); } + /** + * @brief Parses a file containing port and number mappings and returns a map of the values. + * @param filename The name of the file to parse. + * @return A map of port names and their corresponding numbers. + */ map mapParser(string filename){ map ans; @@ -180,7 +212,10 @@ class Concore{ return ans; } - //function to compare and determine whether file content has been changed + /** + * @brief function to compare and determine whether file content has been changed. + * @return true if the content has not changed, false otherwise. + */ bool unchanged(){ if(olds.compare(s)==0){ s = ""; @@ -192,6 +227,11 @@ class Concore{ } } + /** + * @brief Parses a string and extracts a vector of double values. + * @param f The input string to parse. + * @return A vector of double values extracted from the input string. + */ vector parser(string f){ vector temp; string value = ""; @@ -213,6 +253,13 @@ class Concore{ return temp; } + /** + * @brief deviate the read to either the SM (Shared Memory) or FM (File Method) communication protocol based on iport and oport. + * @param port The port number. + * @param name The name of the file. + * @param initstr The initial string + * @return + */ vector read(int port, string name, string initstr) { if(communication_iport == 1) @@ -223,7 +270,13 @@ class Concore{ return read_FM(port, name, initstr); } - //accepts the file name as string and returns a string of file content + /** + * @brief Reads data from a specified port and name using the FM (File Method) communication protocol. + * @param port The port number. + * @param name The name of the file. + * @param initstr The initial string. + * @return a string of file content + */ vector read_FM(int port, string name, string initstr){ chrono::milliseconds timespan((int)(1000*delay)); this_thread::sleep_for(timespan); @@ -279,7 +332,13 @@ class Concore{ } - //accepts the file name as string and returns a string of file content + /** + * @brief Reads data from the shared memory segment based on the specified port and name. + * @param port The port number. + * @param name The name of the file. + * @param initstr The initial string to use if the shared memory is not found. + * @return string of file content + */ vector read_SM(int port, string name, string initstr){ chrono::milliseconds timespan((int)(1000*delay)); this_thread::sleep_for(timespan); @@ -334,6 +393,13 @@ class Concore{ } + /** + * @brief deviate the write to either the SM (Shared Memory) or FM (File Method) communication protocol based on iport and oport. + * @param port The port number. + * @param name The name of the file. + * @param val The vector of double values to write. + * @param delta The delta value (default: 0). + */ void write(int port, string name, vector val, int delta=0) { if(communication_oport == 1) @@ -344,6 +410,14 @@ class Concore{ return write_FM(port, name, val, delta); } + + /** + * @brief deviate the write to either the SM (Shared Memory) or FM (File Method) communication protocol based on iport and oport. + * @param port The port number. + * @param name The name of the file. + * @param val The string to write. + * @param delta The delta value (default: 0). + */ void write(int port, string name, string val, int delta=0) { if(communication_oport == 1) @@ -354,7 +428,13 @@ class Concore{ return write_FM(port, name, val, delta); } - //write method, accepts a vector double and writes it to the file + /** + * @brief write method, accepts a vector double and writes it to the file + * @param port The port number. + * @param name The name of the file. + * @param val The string to write. + * @param delta The delta value (default: 0). + */ void write_FM(int port, string name, vector val, int delta=0){ try { @@ -378,7 +458,13 @@ class Concore{ } } - //write method, accepts a string and writes it to the file + /** + * @brief write method, accepts a string and writes it to the file + * @param port The port number. + * @param name The name of the file. + * @param val The string to write. + * @param delta The delta value (default: 0). + */ void write_FM(int port, string name, string val, int delta=0){ chrono::milliseconds timespan((int)(2000*delay)); this_thread::sleep_for(timespan); @@ -397,7 +483,13 @@ class Concore{ } } - //write method, accepts a vector double and writes it to the file + /** + * @brief Writes a vector of double values to the shared memory segment based on the specified port and name. + * @param port The port number. + * @param name The name of the file. + * @param val The vector of double values to write. + * @param delta The delta value (default: 0). + */ void write_SM(int port, string name, vector val, int delta=0){ try { @@ -421,7 +513,13 @@ class Concore{ } } - //write method, accepts a string and writes it to the file + /** + * @brief Writes a string to the shared memory segment based on the specified port and name. + * @param port The port number. + * @param name The name of the file. + * @param val The string to write. + * @param delta The delta value (default: 0). + */ void write_SM(int port, string name, string val, int delta=0){ chrono::milliseconds timespan((int)(2000*delay)); this_thread::sleep_for(timespan); @@ -436,7 +534,11 @@ class Concore{ } } - //Initialising + /** + * @brief Initializes the system with the given input values. + * @param f The input string containing the values. + * @return A vector of double values representing the initialized system state. + */ vector initval(string f){ //parsing vector val = parser(f); @@ -448,5 +550,4 @@ class Concore{ val.erase(val.begin()); return val; } - };