4 * Created on: Aug 17, 2010
10 #include "BusMessage.hh"
11 #include "RequestResponseBus.hh"
14 using namespace plpbus_orb;
15 using namespace plpbus;
16 using namespace CORBA;
18 BusMessage::BusMessage() {
19 _dataItemSeq = new DataItemSequence(0);
22 BusMessage::BusMessage(long type_param) {
23 _dataItemSeq = new DataItemSequence(0);
25 add_long_parameter(CONST_MSG_ID_KEY_NAME, type_param);
28 BusMessage::BusMessage(long type_param,
29 const char *arg_name_param,
30 const char *arg_string_value_param) {
31 _dataItemSeq = new DataItemSequence(0);
32 add_long_parameter(CONST_MSG_ID_KEY_NAME, type_param);
33 add_string_parameter(arg_name_param, arg_string_value_param);
36 BusMessage::~BusMessage() {
39 int BusMessage::add_string_parameter(const char *arg_name_param, const char *value_param)
44 DataItemSequence *seq;
47 seq = (DataItemSequence *)_dataItemSeq;
48 if (arg_name_param != NULL) {
49 length = seq->length();
50 item = new DataItem();
51 item->name = strdup(arg_name_param);
52 if (value_param != NULL) {
53 item->value <<= strdup(value_param);
54 seq->length(length + 1);
55 (*seq)[length] = *item;
64 int BusMessage::add_long_parameter(const char *arg_name_param, long value_param)
69 DataItemSequence *seq;
72 seq = (DataItemSequence *)_dataItemSeq;
73 if (arg_name_param != NULL) {
74 length = seq->length();
75 item = new DataItem();
76 item->name = strdup(arg_name_param);
77 item->value <<= value_param;
79 seq->length(length + 1);
80 (*seq)[length] = *item;
88 int BusMessage::add_int_parameter(const char *arg_name_param, int value_param)
93 DataItemSequence *seq;
96 seq = (DataItemSequence *)_dataItemSeq;
97 if (arg_name_param != NULL) {
98 length = seq->length();
99 item = new DataItem();
100 item->name = strdup(arg_name_param);
101 item->value <<= (long)value_param;
103 seq->length(length + 1);
104 (*seq)[length] = *item;
112 int BusMessage::add_double_parameter(const char *arg_name_param, double value_param)
117 DataItemSequence *seq;
120 log_debug("add_double_parameter() started\n");
121 seq = (DataItemSequence *)_dataItemSeq;
122 if (arg_name_param != NULL) {
123 length = seq->length();
124 item = new DataItem();
125 item->name = strdup(arg_name_param);
126 item->value <<= (long)value_param;
128 seq->length(length + 1);
129 (*seq)[length] = *item;
134 log_debug("add_double_parameter() done\n");
138 int BusMessage::add_float_parameter(const char *arg_name_param, float value_param)
143 DataItemSequence *seq;
146 seq = (DataItemSequence *)_dataItemSeq;
147 if (arg_name_param != NULL) {
148 length = seq->length();
149 item = new DataItem();
150 item->name = strdup(arg_name_param);
151 item->value <<= (long)value_param;
153 seq->length(length + 1);
154 (*seq)[length] = *item;
162 void BusMessage::printout_dataitem(long index, void *item) {
166 dataitem = (DataItem *)item;
168 if (dataitem->name != NULL) {
169 kind = dataitem->value.type()->kind();
175 dataitem->value >>= val;
176 log_debug("\t[%ld], value: %s\n", index, val);
182 dataitem->value >>= val;
183 log_debug("\t[%ld], value: %ld\n", index, val);
184 //val_str = strdup("long");
190 dataitem->value >>= val;
191 log_debug("\t[%ld], value: %f\n", index, val);
192 //val_str = strdup("double");
198 dataitem->value >>= val;
199 log_debug("\t[l%ld] value: %f\n", index, val);
200 //val_str = strdup("float");
204 log_error("\t[%ld], value unknown\n", index);
208 log_error("\t[%ld] Invalid data item name name or value\n", index);
212 log_error("\t[%ld] dataItem NULL.", index);
216 void BusMessage::printout() {
219 DataItemSequence *seq;
221 seq = (DataItemSequence *)_dataItemSeq;
222 count = seq->length();
223 log_debug("BusMessage.printout(): parameter count: %ld\n", count);
224 for (long ii = 0; ii < count; ii++) {
226 printout_dataitem(ii, &item);
228 log_debug("BusMessage.printout() done\n");;