summaryrefslogtreecommitdiff
path: root/cesar/maximus/system/inc/Station.h
diff options
context:
space:
mode:
Diffstat (limited to 'cesar/maximus/system/inc/Station.h')
-rw-r--r--cesar/maximus/system/inc/Station.h233
1 files changed, 233 insertions, 0 deletions
diff --git a/cesar/maximus/system/inc/Station.h b/cesar/maximus/system/inc/Station.h
new file mode 100644
index 0000000000..f3f9954cb5
--- /dev/null
+++ b/cesar/maximus/system/inc/Station.h
@@ -0,0 +1,233 @@
+/************************************************************************
+ Station.h - Copyright buret
+
+Here you can write a license for your code, some comments or any other
+information you want to have in your generated code. To to this simply
+configure the "headings" directory in uml to point to a directory
+where you have your heading files.
+
+or you can just replace the contents of this file with your own.
+If you want to do this, this file is located at
+
+/usr/share/apps/umbrello/headings/heading.h
+
+-->Code Generators searches for heading files based on the file extension
+ i.e. it will look for a file name ending in ".h" to include in C++ header
+ files, and for a file name ending in ".java" to include in all generated
+ java code.
+ If you name the file "heading.<extension>", Code Generator will always
+ choose this file even if there are other files with the same extension in the
+ directory. If you name the file something else, it must be the only one with that
+ extension in the directory to guarantee that Code Generator will choose it.
+
+you can use variables in your heading files which are replaced at generation
+time. possible variables are : author, date, time, filename and filepath.
+just write %variable_name%
+
+This file was generated on %date% at %time%
+The original location of this file is /home/buret/eclipse/maximus/system/inc/Station.h
+**************************************************************************/
+
+#ifndef STATION_H
+#define STATION_H
+
+#include "system_types.h"
+#include "sci_types.h"
+#include "networkclock_types.h" // for 'Network_Clock_Tick'
+
+#include <exception>
+#include <string>
+#include <iostream> // for 'cout', 'cerr', 'clog' and 'pid_t'
+
+#define STATION_PIPE_PATH "/tmp"
+#define STATION_PIPE_PREFIX "station"
+#define STATION_SOCK_PATH STATION_PIPE_PATH
+#define STATION_SOCK_PREFIX STATION_PIPE_PREFIX
+#define STATION_WAIT_LOOP_NB 10
+#define STATION_WAIT_TIMEOUT_MS 100
+#define STATION_MAX_SOCK_BUFFER_SIZE (256*1024)
+
+class StationConfiguration;
+
+
+/**
+ * class Station
+ */
+
+class Station
+{
+
+public:
+
+ // public attributes
+ //
+
+private:
+
+ // private attributes
+ //
+
+ File_Descriptor mInputFileDescriptor, mOutputFileDescriptor;
+ File_Descriptor mLogPipe;
+ pid_t mPid;
+ Station_Status mStationStatus;
+ unsigned short int mStationIdleCounter;
+ StationConfiguration * mpStationConfiguration;
+
+protected:
+
+ // protected attributes
+ //
+
+public:
+
+ // Constructors/Destructors
+ //
+
+ /**
+ * Constructor
+ */
+ Station ( const std::string & station_executable, const Network_Clock_Tick current_tick_value );
+
+ /**
+ * Empty Destructor
+ */
+ virtual ~Station ( );
+
+ // public methods
+ //
+
+ bool operator== ( const Station & station ) const;
+
+ Station & operator= ( const Station & station );
+
+ /**
+ * @return void
+ */
+ void displayStation ( ) const;
+
+ bool launchDebugger ( const std::string & command_line ) const;
+
+ // public attribute accessor methods
+ //
+
+ // private attribute accessor methods
+ //
+
+ /**
+ * @return Sci_Station_Id
+ */
+ const Sci_Msg_Station_Id getStationId ( ) const;
+
+ /**
+ * @return pid_t
+ */
+ const pid_t getPid ( ) const;
+
+ /**
+ * @return bool
+ * @param input_file_descriptor
+ */
+ bool setInputFileDescriptor ( const File_Descriptor input_file_descriptor );
+
+ /**
+ * @return bool
+ * @param output_file_descriptor
+ */
+ bool setOutputFileDescriptor ( const File_Descriptor output_file_descriptor );
+
+ /**
+ * @return bool
+ * @param log_file_descriptor
+ */
+ bool setLogFileDescriptor ( const File_Descriptor log_file_descriptor );
+
+ /**
+ * @return File_Descriptor
+ */
+ const File_Descriptor getInputFileDescriptor ( ) const;
+
+ /**
+ * @return File_Descriptor
+ */
+ const File_Descriptor getOutputFileDescriptor ( ) const;
+
+ /**
+ * @return File_Descriptor
+ */
+ const File_Descriptor getLogFileDescriptor ( ) const;
+
+ /**
+ * @return Station_Status
+ */
+ Station_Status getStationStatus ( ) const;
+
+ /**
+ * @return bool
+ * @param status
+ */
+ bool setStationStatus ( const Station_Status status );
+
+ /**
+ * @return mStationIdleCounter
+ */
+ const unsigned short int getStationIdleCounter ( ) const;
+
+ /**
+ * @return bool
+ */
+ bool incrementStationIdleCounter ( );
+
+ /**
+ * @return bool
+ */
+ bool decrementStationIdleCounter ( );
+
+ /**
+ * @return bool
+ * @param p_station_configuration
+ */
+ bool setStationConfiguration ( StationConfiguration * p_station_configuration );
+
+ /**
+ * @return StationConfiguration
+ */
+ StationConfiguration * getStationConfiguration ( ) const;
+
+ /**
+ * @return bool
+ * @param station_name the new value of mpStationConfiguration->mStationName
+ */
+ bool setStationName ( const std::string & station_name );
+
+ // protected attribute accessor methods
+ //
+
+private:
+
+ // private methods
+ //
+
+ /**
+ * @return void
+ */
+ void startProcess ( const Network_Clock_Tick current_tick_value );
+
+ /**
+ * @return void
+ */
+ void stopProcess ( );
+
+ void initAttributes ( );
+
+ void displayStationStatus ( ) const;
+
+protected:
+
+ // protected methods
+ //
+
+};
+
+
+#endif // STATION_H