]> pilppa.org Git - libplpbus.git/blobdiff - src/plpbus/BusMessage.cc
Methods for reading data from the BusMessage datatype.
[libplpbus.git] / src / plpbus / BusMessage.cc
index 7cab6e9d8f48edfb410c60e244d8bb58257211b2..16eaec47fd48faec3b964296d0183e0533e02541 100644 (file)
@@ -5,7 +5,11 @@
  *      Author: lamikr
  */
 
+#include <malloc.h>
+#include <omniORB4/CORBA.h>
+
 #include <plp/log.h>
+#include <plp/retval.h>
 
 #include "BusMessage.hh"
 #include "RequestResponseBus.hh"
@@ -38,7 +42,7 @@ BusMessage::BusMessage(long type_param,
 BusMessage::~BusMessage() {
 }
 
-int BusMessage::add_string_parameter(const char *arg_name_param, const char *value_param)
+int BusMessage::add_string_parameter(string arg_name_param, string value_param)
 {
        long                    length;
        int                     ret_val;
@@ -47,15 +51,13 @@ int BusMessage::add_string_parameter(const char *arg_name_param, const char *val
 
        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);
-               if (value_param != NULL) {
-                       item->value     <<= strdup(value_param);
-                       seq->length(length + 1);
-                       (*seq)[length]  = *item;
-               }
+               item->name      = strdup(arg_name_param.c_str());
+               item->value     <<= strdup(value_param.c_str());
+               seq->length(length + 1);
+               (*seq)[length]  = *item;
        }
        else {
                ret_val = -1;
@@ -87,7 +89,7 @@ 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;
@@ -96,10 +98,10 @@ int BusMessage::add_int_parameter(const char *arg_name_param, int value_param)
 
        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->name      = strdup(arg_name_param.c_str());
                item->value     <<= (long)value_param;
 
                seq->length(length + 1);
@@ -161,7 +163,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 +174,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 +182,92 @@ 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;
+       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);
+               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);
+       *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);
+       *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);
+       *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);
+       *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;
 }