X-Git-Url: http://pilppa.org/gitweb/?a=blobdiff_plain;f=src%2Fplpbus%2FBusMessage.cc;h=99d32a0f9ac9d958dd52a1f25bd317619b3a7abe;hb=f6bd0d4fefd6459f2e8e5e7b813933be2d87dd47;hp=7cab6e9d8f48edfb410c60e244d8bb58257211b2;hpb=cc8c00aeb93557b1e73e98d106236606b781502d;p=libplpbus.git diff --git a/src/plpbus/BusMessage.cc b/src/plpbus/BusMessage.cc index 7cab6e9..99d32a0 100644 --- a/src/plpbus/BusMessage.cc +++ b/src/plpbus/BusMessage.cc @@ -5,7 +5,11 @@ * Author: lamikr */ +#include +#include + #include +#include #include "BusMessage.hh" #include "RequestResponseBus.hh" @@ -36,26 +40,41 @@ BusMessage::BusMessage(long type_param, } BusMessage::~BusMessage() { + long cnt; + DataItemSequence *seq; + + log_debug("\n"); + seq = (DataItemSequence *)_dataItemSeq; + if (seq != NULL) { + cnt = seq->length(); +/* + DataItem *item; + + for (long ii = 0; ii < cnt; ii++) { + item = seq[ii]; + log_debug("deleting BusMessage item:\n"); + printout_dataitem(ii, item); + delete(item); + } +*/ + delete(seq); + } } -int BusMessage::add_string_parameter(const char *arg_name_param, const char *value_param) -{ - long length; +int BusMessage::add_cstring_parameter(const char *arg_name_param, const char *value_param) { + long ln; int ret_val; - DataItem *item; DataItemSequence *seq; + DataItem *item; ret_val = 0; seq = (DataItemSequence *)_dataItemSeq; if (arg_name_param != NULL) { - length = seq->length(); - item = new DataItem(); - item->name = strdup(arg_name_param); - if (value_param != NULL) { - item->value <<= strdup(value_param); - seq->length(length + 1); - (*seq)[length] = *item; - } + ln = seq->length(); + seq->length(ln + 1); + item = &((*seq)[ln]); + item->name = arg_name_param; + item->str_value = value_param; } else { ret_val = -1; @@ -63,23 +82,43 @@ int BusMessage::add_string_parameter(const char *arg_name_param, const char *val return ret_val; } -int BusMessage::add_long_parameter(const char *arg_name_param, long value_param) +int BusMessage::add_string_parameter(string arg_name_param, string value_param) { - long length; + long ln; int ret_val; + DataItemSequence *seq; DataItem *item; + + //str = (const char)"hooo"; + ret_val = 0; + seq = (DataItemSequence *)_dataItemSeq; + if (arg_name_param.empty() == false) { + ln = seq->length(); + seq->length(ln + 1); + item = &((*seq)[ln]); + item->name = arg_name_param.c_str(); + item->str_value = value_param.c_str(); + } + else { + ret_val = -1; + } + return ret_val; +} + +int BusMessage::add_long_parameter(string arg_name_param, long value_param) +{ + long length; + int ret_val; DataItemSequence *seq; ret_val = 0; seq = (DataItemSequence *)_dataItemSeq; - if (arg_name_param != NULL) { + if (arg_name_param.empty() == false) { length = seq->length(); - item = new DataItem(); - item->name = strdup(arg_name_param); - item->value <<= value_param; - seq->length(length + 1); - (*seq)[length] = *item; + (*seq)[length].name = arg_name_param.c_str(); + (*seq)[length].value <<= value_param; + (*seq)[length].str_value = ""; } else { ret_val = -1; @@ -87,23 +126,20 @@ int BusMessage::add_long_parameter(const char *arg_name_param, long value_param) return ret_val; } -int BusMessage::add_int_parameter(const char *arg_name_param, int value_param) +int BusMessage::add_int_parameter(string arg_name_param, int value_param) { long length; int ret_val; - DataItem *item; DataItemSequence *seq; ret_val = 0; seq = (DataItemSequence *)_dataItemSeq; - if (arg_name_param != NULL) { + if (arg_name_param.empty() == false) { length = seq->length(); - item = new DataItem(); - item->name = strdup(arg_name_param); - item->value <<= (long)value_param; - seq->length(length + 1); - (*seq)[length] = *item; + (*seq)[length].name = arg_name_param.c_str(); + (*seq)[length].value <<= (long)value_param; + (*seq)[length].str_value = ""; } else { ret_val = -1; @@ -111,24 +147,21 @@ int BusMessage::add_int_parameter(const char *arg_name_param, int value_param) return ret_val; } -int BusMessage::add_double_parameter(const char *arg_name_param, double value_param) +int BusMessage::add_double_parameter(string arg_name_param, double value_param) { long length; int ret_val; - DataItem *item; DataItemSequence *seq; ret_val = 0; log_debug("add_double_parameter() started\n"); seq = (DataItemSequence *)_dataItemSeq; - if (arg_name_param != NULL) { + if (arg_name_param.empty() == false) { length = seq->length(); - item = new DataItem(); - item->name = strdup(arg_name_param); - item->value <<= (long)value_param; - seq->length(length + 1); - (*seq)[length] = *item; + (*seq)[length].name = arg_name_param.c_str(); + (*seq)[length].value <<= (double)value_param; + (*seq)[length].str_value = ""; } else { ret_val = -1; @@ -137,23 +170,20 @@ int BusMessage::add_double_parameter(const char *arg_name_param, double value_pa return ret_val; } -int BusMessage::add_float_parameter(const char *arg_name_param, float value_param) +int BusMessage::add_float_parameter(string arg_name_param, float value_param) { long length; int ret_val; - DataItem *item; DataItemSequence *seq; ret_val = 0; seq = (DataItemSequence *)_dataItemSeq; - if (arg_name_param != NULL) { + if (arg_name_param.empty() == false) { length = seq->length(); - item = new DataItem(); - item->name = strdup(arg_name_param); - item->value <<= (long)value_param; - seq->length(length + 1); - (*seq)[length] = *item; + (*seq)[length].name = arg_name_param.c_str(); + (*seq)[length].value <<= (float)value_param; + (*seq)[length].str_value = ""; } else { ret_val = -1; @@ -161,7 +191,7 @@ int BusMessage::add_float_parameter(const char *arg_name_param, float value_para return ret_val; } -static DataItem *get_dataitem_by_param_name(DataItemSequence *seq, const char *arg_name_param) { +static DataItem *get_dataitem_by_param_name(DataItemSequence *seq, string arg_name_param) { DataItem *ret_val; long int count; DataItem *item; @@ -172,7 +202,7 @@ static DataItem *get_dataitem_by_param_name(DataItemSequence *seq, const char *a for (long ii = 0; ii < count; ii++) { item = &(*seq)[ii]; item_name = item->name; - if (strcmp(arg_name_param, item_name) == 0) { + if (strcmp(arg_name_param.c_str(), item_name) == 0) { ret_val = item; break; } @@ -180,90 +210,98 @@ static DataItem *get_dataitem_by_param_name(DataItemSequence *seq, const char *a return ret_val; } -bool BusMessage::get_type(long *type_param) { - bool ret_val; +long BusMessage::get_type(int *err_flg) { + long ret_val; long res; - ret_val = get_long_parameter(CONST_MSG_ID_KEY_NAME, &res); - if (ret_val == true) { - *type_param = res; + ret_val = -1; + res = get_long_parameter(CONST_MSG_ID_KEY_NAME, err_flg); + if (*err_flg == PLP_OK) { + ret_val = res; } return ret_val; } -bool BusMessage::get_string_parameter(const char *arg_name_param, const char **value_param) { - bool ret_val; - DataItem *item; - DataItemSequence *seq; +string BusMessage::get_string_parameter(string arg_name_param, int *err_flg) { + string ret_val; + DataItem *item; + DataItemSequence *seq; + const char *ch; - ret_val = false; - seq = (DataItemSequence *)_dataItemSeq; - item = get_dataitem_by_param_name(seq, arg_name_param); + *err_flg = PLP_ERR_DATA_NOT_FOUND; + seq = (DataItemSequence *)_dataItemSeq; + item = get_dataitem_by_param_name(seq, arg_name_param); if (item != NULL) { - item->value >>= *value_param; - ret_val = true; + //item->value >>= CORBA::Any::to_string(ch, 0); + ch = item->str_value; + ret_val = ch; + *err_flg = PLP_OK; } return ret_val; } -bool BusMessage::get_long_parameter(const char *arg_name_param, long *value_param) { - bool ret_val; +long BusMessage::get_long_parameter(string arg_name_param, int *err_flg) { + long ret_val; DataItem *item; DataItemSequence *seq; - ret_val = false; - seq = (DataItemSequence *)_dataItemSeq; - item = get_dataitem_by_param_name(seq, arg_name_param); + ret_val = 0; + *err_flg = PLP_ERR_DATA_NOT_FOUND; + seq = (DataItemSequence *)_dataItemSeq; + item = get_dataitem_by_param_name(seq, arg_name_param); if (item != NULL) { - item->value >>= *value_param; - ret_val = true; + item->value >>= ret_val; + *err_flg = PLP_OK; } return ret_val; } -bool BusMessage::get_int_parameter(const char *arg_name_param, int *value_param) { - bool ret_val; +int BusMessage::get_int_parameter(string arg_name_param, int *err_flg) { + int ret_val; DataItem *item; DataItemSequence *seq; long tmp; - ret_val = false; - seq = (DataItemSequence *)_dataItemSeq; - item = get_dataitem_by_param_name(seq, arg_name_param); + ret_val = 0; + *err_flg = PLP_ERR_DATA_NOT_FOUND; + seq = (DataItemSequence *)_dataItemSeq; + item = get_dataitem_by_param_name(seq, arg_name_param); if (item != NULL) { item->value >>= tmp; - *value_param = (int)tmp; - ret_val = true; + ret_val = (int)tmp; + *err_flg = PLP_OK; } return ret_val; } -bool BusMessage::get_double_parameter(const char *arg_name_param, double *value_param) { - bool ret_val; +double BusMessage::get_double_parameter(string arg_name_param, int *err_flg) { + double ret_val; DataItem *item; DataItemSequence *seq; - ret_val = false; - seq = (DataItemSequence *)_dataItemSeq; - item = get_dataitem_by_param_name(seq, arg_name_param); + ret_val = 0; + *err_flg = PLP_ERR_DATA_NOT_FOUND; + seq = (DataItemSequence *)_dataItemSeq; + item = get_dataitem_by_param_name(seq, arg_name_param); if (item != NULL) { - item->value >>= *value_param; - ret_val = true; + item->value >>= ret_val; + *err_flg = PLP_OK; } return ret_val; } -bool BusMessage::get_float_parameter(const char *arg_name_param, float *value_param) { - bool ret_val; +float BusMessage::get_float_parameter(string arg_name_param, int *err_flg) { + float ret_val; DataItem *item; DataItemSequence *seq; - ret_val = false; - seq = (DataItemSequence *)_dataItemSeq; - item = get_dataitem_by_param_name(seq, arg_name_param); + ret_val = 0; + *err_flg = PLP_ERR_DATA_NOT_FOUND; + seq = (DataItemSequence *)_dataItemSeq; + item = get_dataitem_by_param_name(seq, arg_name_param); if (item != NULL) { - item->value >>= *value_param; - ret_val = true; + item->value >>= ret_val; + *err_flg = PLP_OK; } return ret_val; } @@ -279,14 +317,6 @@ void BusMessage::printout_dataitem(long index, void *item) { name = dataitem->name; kind = dataitem->value.type()->kind(); switch(kind) { - case tk_string: - { - const char *val; - - dataitem->value >>= val; - log_debug("\t[%ld] %s: %s\n", index, name, val); - } - break; case tk_long: { long val; @@ -312,6 +342,12 @@ void BusMessage::printout_dataitem(long index, void *item) { } break; default: + { + const char *val; + val = dataitem->str_value; + log_debug("\t[%ld] %s: %s\n", index, name, val); + } + break; log_error("\t[%ld], name: %s, value unknown\n", index, name); } } @@ -333,6 +369,7 @@ void BusMessage::printout() { count = seq->length(); log_debug("BusMessage.printout(): parameter count: %ld\n", count); for (long ii = 0; ii < count; ii++) { + printf("item[%ld]\n", ii); item = (*seq)[ii]; printout_dataitem(ii, &item); }