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