]> pilppa.org Git - libplpbus.git/blob - src/plpbus/BusMessage.cc
Added linkage dependency fix to pkg-config file.
[libplpbus.git] / src / plpbus / BusMessage.cc
1 /*
2  * BusMessage.cpp
3  *
4  *  Created on: Aug 17, 2010
5  *      Author: lamikr
6  */
7
8 #include <plp/log.h>
9
10 #include "BusMessage.hh"
11
12 using namespace std;
13 using namespace plpbus_orb;
14 using namespace plpbus;
15 using namespace CORBA;
16
17 BusMessage::BusMessage()
18 {
19         _dataItemSeq.length(0);
20
21 }
22
23 BusMessage::BusMessage(const char *name_param, const char *value_param)
24 {
25         DataItem        *item;
26
27         if (name_param != NULL) {
28                 item            = new DataItem();
29                 item->name      = strdup(name_param);
30                 item->value     <<= strdup(value_param);
31
32                 _dataItemSeq.length(1);
33                 _dataItemSeq[0] = *item;
34         }
35         else {
36                 _dataItemSeq.length(0);
37         }
38
39 }
40
41 BusMessage::~BusMessage()
42 {
43         // TODO Auto-generated destructor stub
44 }
45
46 int BusMessage::add_string_parameter(const char *name_param, const char *value_param)
47 {
48         long            length;
49         int             ret_val;
50         DataItem        *item;
51
52         ret_val = 0;
53         if (name_param != NULL) {
54                 length          = _dataItemSeq.length();
55                 item            = new DataItem();
56                 item->name              = strdup(name_param);
57                 if (value_param != NULL) {
58                         item->value     <<= strdup(value_param);
59                         _dataItemSeq.length(length + 1);
60                         _dataItemSeq[length]    = *item;
61                 }
62         }
63         else {
64                 _dataItemSeq.length(0);
65                 ret_val = -1;
66         }
67         return ret_val;
68 }
69
70 int BusMessage::add_long_parameter(const char *name_param, long value_param)
71 {
72         long            length;
73         int             ret_val;
74         DataItem        *item;
75
76         ret_val = 0;
77         if (name_param != NULL) {
78                 length          = _dataItemSeq.length();
79                 item            = new DataItem();
80                 item->name      = strdup(name_param);
81                 item->value     <<= value_param;
82
83                 _dataItemSeq.length(length + 1);
84                 _dataItemSeq[length]    = *item;
85         }
86         else {
87                 _dataItemSeq.length(0);
88                 ret_val = -1;
89         }
90         return ret_val;
91 }
92
93 int BusMessage::add_int_parameter(const char *name_param, int value_param)
94 {
95         long            length;
96         int             ret_val;
97         DataItem        *item;
98
99         ret_val = 0;
100         if (name_param != NULL) {
101                 length          = _dataItemSeq.length();
102                 item            = new DataItem();
103                 item->name      = strdup(name_param);
104                 item->value     <<= (long)value_param;
105
106                 _dataItemSeq.length(length + 1);
107                 _dataItemSeq[length]    = *item;
108         }
109         else {
110                 _dataItemSeq.length(0);
111                 ret_val = -1;
112         }
113         return ret_val;
114 }
115
116 int BusMessage::add_double_parameter(const char *name_param, double value_param)
117 {
118         long            length;
119         int             ret_val;
120         DataItem        *item;
121
122         ret_val = 0;
123         if (name_param != NULL) {
124                 length          = _dataItemSeq.length();
125                 item            = new DataItem();
126                 item->name      = strdup(name_param);
127                 item->value     <<= (long)value_param;
128
129                 _dataItemSeq.length(length + 1);
130                 _dataItemSeq[length]    = *item;
131         }
132         else {
133                 _dataItemSeq.length(0);
134                 ret_val = -1;
135         }
136         return ret_val;
137 }
138
139 int BusMessage::add_float_parameter(const char *name_param, float value_param)
140 {
141         long            length;
142         int             ret_val;
143         DataItem        *item;
144
145         ret_val = 0;
146         if (name_param != NULL) {
147                 length          = _dataItemSeq.length();
148                 item            = new DataItem();
149                 item->name      = strdup(name_param);
150                 item->value     <<= (long)value_param;
151
152                 _dataItemSeq.length(length + 1);
153                 _dataItemSeq[length]    = *item;
154         }
155         else {
156                 _dataItemSeq.length(0);
157                 ret_val = -1;
158         }
159         return ret_val;
160 }
161
162 void BusMessage::printout_dataitem(long index, plpbus_orb::DataItem *item) {
163         CORBA::TCKind   kind;
164
165         if (item != NULL) {
166                 if (item->name != NULL) {
167                         kind    = item->value.type()->kind();
168                         switch(kind) {
169                                 case tk_string:
170                                         {
171                                                 const char *val;
172
173                                                 item->value >>= val;
174                                                 log_debug("     [%ld], value: %s\n", index, val);
175                                         }
176                                         break;
177                                 case tk_long:
178                                         {
179                                                 long    val;
180                                                 item->value >>= val;
181                                                 log_debug("     [%ld], value: %ld\n", index, val);
182                                                 //val_str       = strdup("long");
183                                         }
184                                         break;
185                                 case tk_double:
186                                         {
187                                                 double val;
188                                                 item->value >>= val;
189                                                 log_debug("     [%ld], value: %f\n", index, val);
190                                                 //val_str       = strdup("double");
191                                         }
192                                         break;
193                                 case tk_float:
194                                         {
195                                                 float val;
196                                                 item->value >>= val;
197                                                 log_debug("     [l%ld] value: %f\n", index, val);
198                                                 //val_str       = strdup("float");
199                                         }
200                                         break;
201                                 default:
202                                         log_error("     [%ld], value unknown\n", index);
203                         }
204                 }
205                 else {
206                         log_error("     [%ld] Invalid data item name name or value\n", index);
207                 }
208         }
209         else {
210                 log_error("     [%ld] dataItem NULL.", index);
211         }
212 }
213
214 void BusMessage::printout() {
215         long int        count;
216         DataItem        item;
217
218         count   = _dataItemSeq.length();
219         log_debug("BusMessage.printout(): parameter count: %ld\n", count);
220         for (long ii = 0; ii < count; ii++) {
221                 item    = _dataItemSeq[ii];
222                 printout_dataitem(ii, &item);
223         }
224         log_debug("BusMessage.printout() done\n");;
225 }