| Line | Branch | Exec | Source |
|---|---|---|---|
| 1 | /*************************************** | ||
| 2 | Auteur : Thibaut Oprinsen | ||
| 3 | Mail : thibaut.oprinsen@lapp.in2p3.fr | ||
| 4 | Licence : CeCILL-C | ||
| 5 | ****************************************/ | ||
| 6 | |||
| 7 | #ifndef __RECVDATADAEMON_H__ | ||
| 8 | #define __RECVDATADAEMON_H__ | ||
| 9 | |||
| 10 | #include "phoenix_assert.h" | ||
| 11 | #include "phoenix_check.h" | ||
| 12 | #include "phoenix_data_stream.h" | ||
| 13 | #include "Daemon.h" | ||
| 14 | |||
| 15 | #include "DaemonEmptyBackend.h" | ||
| 16 | |||
| 17 | ///@brief Shadok test data | ||
| 18 | class Shadok { | ||
| 19 | public: | ||
| 20 | Shadok(const PString & name, int age); | ||
| 21 | 1 | Shadok() : p_name(""), p_age(0) {} | |
| 22 | virtual ~Shadok(); | ||
| 23 | 1 | int getAge() const { return p_age; } | |
| 24 | 1 | PString getName() const { return p_name; } | |
| 25 | |||
| 26 | template<typename Stream, DataStreamMode::DataStreamMode Mode> | ||
| 27 | 3 | bool readWriteStream(Stream & ds){ | |
| 28 | 3 | bool b(true); | |
| 29 | 3 | b &= DataStream<Stream, Mode, PString >::data_stream(ds, p_name); | |
| 30 | 3 | b &= DataStream<Stream, Mode, int >::data_stream(ds, p_age); | |
| 31 | 3 | return b; | |
| 32 | } | ||
| 33 | |||
| 34 | private: | ||
| 35 | PString p_name; | ||
| 36 | int p_age; | ||
| 37 | }; | ||
| 38 | |||
| 39 | ///@brief Generic Shadok serialisation/deserialisation, load/save and size function | ||
| 40 | template<typename Stream, DataStreamMode::DataStreamMode Mode> | ||
| 41 | struct DataStream<Stream, Mode, Shadok>{ | ||
| 42 | ///Generic function to load/save/serialise/deserialise Shadok | ||
| 43 | /** @param[out] ds : stream to be used | ||
| 44 | * @param data : Shadok to be used | ||
| 45 | * @return true on success, false otherwise | ||
| 46 | */ | ||
| 47 | 3 | static bool data_stream(Stream & ds, Shadok & data){ | |
| 48 | 3 | return data.readWriteStream<Stream, Mode>(ds); | |
| 49 | } | ||
| 50 | }; | ||
| 51 | |||
| 52 | template<> | ||
| 53 | std::string phoenix_getTypeName<Shadok>(); | ||
| 54 | |||
| 55 | ///@brief Gibis test data | ||
| 56 | class Gibis { | ||
| 57 | public: | ||
| 58 | Gibis(const PString & color, int weight); | ||
| 59 | 1 | Gibis() : p_color(""), p_weight(0) {} | |
| 60 | virtual ~Gibis(); | ||
| 61 | 1 | int getWeight() const { return p_weight; } | |
| 62 | 1 | PString getColor() const { return p_color; } | |
| 63 | |||
| 64 | template<typename Stream, DataStreamMode::DataStreamMode Mode> | ||
| 65 | 3 | bool readWriteStream(Stream & ds){ | |
| 66 | 3 | bool b(true); | |
| 67 | 3 | b &= DataStream<Stream, Mode, PString >::data_stream(ds, p_color); | |
| 68 | 3 | b &= DataStream<Stream, Mode, double >::data_stream(ds, p_weight); | |
| 69 | 3 | return b; | |
| 70 | } | ||
| 71 | |||
| 72 | private: | ||
| 73 | PString p_color; | ||
| 74 | double p_weight; | ||
| 75 | }; | ||
| 76 | |||
| 77 | ///@brief Generic Gibis serialisation/deserialisation, load/save and size function | ||
| 78 | template<typename Stream, DataStreamMode::DataStreamMode Mode> | ||
| 79 | struct DataStream<Stream, Mode, Gibis>{ | ||
| 80 | ///Generic function to load/save/serialise/deserialise Gibis | ||
| 81 | /** @param[out] ds : stream to be used | ||
| 82 | * @param data : Gibis to be used | ||
| 83 | * @return true on success, false otherwise | ||
| 84 | */ | ||
| 85 | 3 | static bool data_stream(Stream & ds, Gibis & data){ | |
| 86 | 3 | return data.readWriteStream<Stream, Mode>(ds); | |
| 87 | } | ||
| 88 | }; | ||
| 89 | |||
| 90 | template<> | ||
| 91 | std::string phoenix_getTypeName<Gibis>(); | ||
| 92 | |||
| 93 | namespace ExpectedMessageType{ | ||
| 94 | ///@brief Expected message type | ||
| 95 | enum ExpectedMessageType{ | ||
| 96 | NONE = 0, | ||
| 97 | TYPE_SHADOK = 1, | ||
| 98 | TYPE_GIBIS = 2, | ||
| 99 | TYPE_STOP = 3 | ||
| 100 | }; | ||
| 101 | } | ||
| 102 | |||
| 103 | ///@brief Daemon class to test the sendData function | ||
| 104 | class RecvDataDaemon : public Daemon<DaemonEmptyBackend> { | ||
| 105 | public: | ||
| 106 | RecvDataDaemon(); | ||
| 107 | virtual ~RecvDataDaemon(); | ||
| 108 | virtual void extraLoopProcessing(); | ||
| 109 | virtual void addCallMethod(); | ||
| 110 | |||
| 111 | 1 | SWARM_MAKE_SLOT(RecvDataDaemon, processShadok, Shadok); | |
| 112 | 1 | SWARM_MAKE_SLOT(RecvDataDaemon, processGibis, Gibis); | |
| 113 | |||
| 114 | PUncastableBool processShadok(const Shadok & value); | ||
| 115 | PUncastableBool processGibis(const Gibis & value); | ||
| 116 | |||
| 117 | private: | ||
| 118 | ExpectedMessageType::ExpectedMessageType p_receivedMessageType; | ||
| 119 | size_t p_counter; | ||
| 120 | std::vector<ExpectedMessageType::ExpectedMessageType> p_expectedMessageTypes; | ||
| 121 | void initialisationRecvDataDaemon(); | ||
| 122 | }; | ||
| 123 | |||
| 124 | #endif | ||
| 125 |