GCC Code Coverage Report


Directory: ./
File: TESTS/SWARM_MOCK_DAEMONS/RecvDataDaemon.h
Date: 2026-01-15 15:35:36
Exec Total Coverage
Lines: 22 22 100.0%
Functions: 20 20 100.0%
Branches: 0 0 -%

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