X-Git-Url: http://pilppa.org/gitweb/?a=blobdiff_plain;f=src%2Fplpbus%2FBusMessage.cc;h=1fbc724064dbf6fcb33070c6ce87319788d1503c;hb=8d8f86ae288245111e80196ea1b03aca6e4febc3;hp=16eaec47fd48faec3b964296d0183e0533e02541;hpb=3325b4c3b02fdd377f8460c4a1d19bd75b4e32ab;p=libplpbus.git diff --git a/src/plpbus/BusMessage.cc b/src/plpbus/BusMessage.cc index 16eaec4..1fbc724 100644 --- a/src/plpbus/BusMessage.cc +++ b/src/plpbus/BusMessage.cc @@ -40,24 +40,52 @@ BusMessage::BusMessage(long type_param, } BusMessage::~BusMessage() { + DataItemSequence *seq; + + log_debug("\n"); + seq = (DataItemSequence *)_dataItemSeq; + if (seq != NULL) { + delete(seq); + } +} + +int BusMessage::add_cstring_parameter(const char *arg_name_param, const char *value_param) { + long ln; + int ret_val; + DataItemSequence *seq; + DataItem *item; + + ret_val = 0; + seq = (DataItemSequence *)_dataItemSeq; + if (arg_name_param != NULL) { + ln = seq->length(); + seq->length(ln + 1); + item = &((*seq)[ln]); + item->name = arg_name_param; + item->str_value = value_param; + } + else { + ret_val = -1; + } + return ret_val; } int BusMessage::add_string_parameter(string arg_name_param, string value_param) { - long length; + long ln; int ret_val; - DataItem *item; DataItemSequence *seq; + DataItem *item; + //str = (const char)"hooo"; ret_val = 0; seq = (DataItemSequence *)_dataItemSeq; if (arg_name_param.empty() == false) { - length = seq->length(); - item = new DataItem(); - item->name = strdup(arg_name_param.c_str()); - item->value <<= strdup(value_param.c_str()); - seq->length(length + 1); - (*seq)[length] = *item; + 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; @@ -65,23 +93,20 @@ int BusMessage::add_string_parameter(string arg_name_param, string value_param) return ret_val; } -int BusMessage::add_long_parameter(const char *arg_name_param, long value_param) +int BusMessage::add_long_parameter(string arg_name_param, long 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 <<= 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; @@ -93,19 +118,16 @@ 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.empty() == false) { length = seq->length(); - item = new DataItem(); - item->name = strdup(arg_name_param.c_str()); - 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; @@ -113,24 +135,21 @@ int BusMessage::add_int_parameter(string 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; @@ -139,23 +158,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; @@ -186,6 +202,7 @@ long BusMessage::get_type(int *err_flg) { long ret_val; long res; + ret_val = -1; res = get_long_parameter(CONST_MSG_ID_KEY_NAME, err_flg); if (*err_flg == PLP_OK) { ret_val = res; @@ -203,7 +220,8 @@ string BusMessage::get_string_parameter(string arg_name_param, int *err_flg) { seq = (DataItemSequence *)_dataItemSeq; item = get_dataitem_by_param_name(seq, arg_name_param); if (item != NULL) { - item->value >>= CORBA::Any::to_string(ch, 0); + //item->value >>= CORBA::Any::to_string(ch, 0); + ch = item->str_value; ret_val = ch; *err_flg = PLP_OK; } @@ -215,6 +233,7 @@ long BusMessage::get_long_parameter(string arg_name_param, int *err_flg) { DataItem *item; DataItemSequence *seq; + ret_val = 0; *err_flg = PLP_ERR_DATA_NOT_FOUND; seq = (DataItemSequence *)_dataItemSeq; item = get_dataitem_by_param_name(seq, arg_name_param); @@ -231,6 +250,7 @@ int BusMessage::get_int_parameter(string arg_name_param, int *err_flg) { DataItemSequence *seq; long tmp; + ret_val = 0; *err_flg = PLP_ERR_DATA_NOT_FOUND; seq = (DataItemSequence *)_dataItemSeq; item = get_dataitem_by_param_name(seq, arg_name_param); @@ -247,6 +267,7 @@ double BusMessage::get_double_parameter(string arg_name_param, int *err_flg) { DataItem *item; DataItemSequence *seq; + ret_val = 0; *err_flg = PLP_ERR_DATA_NOT_FOUND; seq = (DataItemSequence *)_dataItemSeq; item = get_dataitem_by_param_name(seq, arg_name_param); @@ -262,6 +283,7 @@ float BusMessage::get_float_parameter(string arg_name_param, int *err_flg) { DataItem *item; DataItemSequence *seq; + ret_val = 0; *err_flg = PLP_ERR_DATA_NOT_FOUND; seq = (DataItemSequence *)_dataItemSeq; item = get_dataitem_by_param_name(seq, arg_name_param); @@ -272,6 +294,15 @@ float BusMessage::get_float_parameter(string arg_name_param, int *err_flg) { return ret_val; } +unsigned long BusMessage::get_parameter_count() { + int ret_val; + DataItemSequence *seq; + + seq = (DataItemSequence *)_dataItemSeq; + ret_val = seq->length(); + return ret_val; +} + void BusMessage::printout_dataitem(long index, void *item) { CORBA::TCKind kind; const char *name; @@ -283,14 +314,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; @@ -316,6 +339,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); } }