From 10af5cc7c4686a42a825bf454919af404b3659aa Mon Sep 17 00:00:00 2001 From: ingvord Date: Tue, 18 Jul 2017 14:13:58 +0300 Subject: [PATCH 01/21] progress: use proper idl branch --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 66428712a..17d66f803 100644 --- a/.travis.yml +++ b/.travis.yml @@ -20,7 +20,7 @@ before_install: - docker pull tangocs/mysql:9.2.2 - docker pull tangocs/tango-cs:latest - git clone https://github.com/JoakimSoderberg/coveralls-cmake.git - - git clone https://${CI_USER_TOKEN}@github.com/tango-controls/tango-idl.git idl + - git clone -b cppTango-378 https://${CI_USER_TOKEN}@github.com/tango-controls/tango-idl.git idl - chmod +x .travis/run.sh before_script: From 6a70d387b332f7685979f85a8175ac80bc4c13e1 Mon Sep 17 00:00:00 2001 From: ingvord Date: Tue, 18 Jul 2017 15:24:59 +0300 Subject: [PATCH 02/21] progress #378: increment version --- CMakeLists.txt | 2 +- RELEASE_NOTES | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 802e30dc8..57740d536 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -6,7 +6,7 @@ enable_testing() #need to define the version of the library set(MAJOR_VERSION "10") set(MINOR_VERSION "0") -set(PATCH_VERSION "1") +set(PATCH_VERSION "2") #convenient versions set(LIBRARY_VERSION "${MAJOR_VERSION}.${MINOR_VERSION}.${PATCH_VERSION}") diff --git a/RELEASE_NOTES b/RELEASE_NOTES index d774034b6..dcd1150aa 100644 --- a/RELEASE_NOTES +++ b/RELEASE_NOTES @@ -1,3 +1,8 @@ +10.0.2 +====== + +Support for PipeBlob in commands + 10.0.1 ====== From 986ae4859c5be9fbee6d360c301ec009c8262747 Mon Sep 17 00:00:00 2001 From: ingvord Date: Tue, 18 Jul 2017 16:59:49 +0300 Subject: [PATCH 03/21] progress #378: rename falsely named test --- test/cpp_test_suite/cxxtest/CMakeLists.txt | 2 +- .../new_tests/{cxx_cmd_types.cpp => cxx_attr_types.cpp} | 0 2 files changed, 1 insertion(+), 1 deletion(-) rename test/cpp_test_suite/new_tests/{cxx_cmd_types.cpp => cxx_attr_types.cpp} (100%) diff --git a/test/cpp_test_suite/cxxtest/CMakeLists.txt b/test/cpp_test_suite/cxxtest/CMakeLists.txt index 2ad5690fd..4f7277170 100644 --- a/test/cpp_test_suite/cxxtest/CMakeLists.txt +++ b/test/cpp_test_suite/cxxtest/CMakeLists.txt @@ -55,6 +55,7 @@ CXX_GENERATE_TEST(cxx_attrprop) CXX_GENERATE_TEST(cxx_attr_write) CXX_GENERATE_TEST(cxx_attr_conf) CXX_GENERATE_TEST(cxx_attr) +CXX_GENERATE_TEST(cxx_attr_types) CXX_GENERATE_TEST(cxx_misc_util) CXX_GENERATE_TEST(cxx_templ_cmd) CXX_GENERATE_TEST(cxx_exception) @@ -65,7 +66,6 @@ CXX_GENERATE_TEST(cxx_signal)#TODO Windows CXX_GENERATE_TEST(cxx_test_state_on) CXX_GENERATE_TEST(cxx_misc) CXX_GENERATE_TEST(cxx_misc_devproxy) -CXX_GENERATE_TEST(cxx_cmd_types) CXX_GENERATE_TEST(cxx_group) CXX_GENERATE_TEST(cxx_encoded) CXX_GENERATE_TEST(cxx_database) diff --git a/test/cpp_test_suite/new_tests/cxx_cmd_types.cpp b/test/cpp_test_suite/new_tests/cxx_attr_types.cpp similarity index 100% rename from test/cpp_test_suite/new_tests/cxx_cmd_types.cpp rename to test/cpp_test_suite/new_tests/cxx_attr_types.cpp From e8f64fa1d8665d310f5f62b297ce54aee9f2c9ef Mon Sep 17 00:00:00 2001 From: ingvord Date: Tue, 18 Jul 2017 19:51:30 +0300 Subject: [PATCH 04/21] progress #378: progress --- include/tango/client/DeviceData.h | 344 ++- include/tango/client/DeviceProxy.h | 731 ++--- src/client/devapi_base.cpp | 72 +- src/client/devapi_data.cpp | 2366 +++++++++-------- src/server/deviceclass.cpp | 1738 ++++++------ test/cpp_test_suite/cxxtest/CMakeLists.txt | 1 + .../new_tests/cxx_cmd_types.cpp | 902 +++++++ test/cpp_test_suite/old_tests/CMakeLists.txt | 3 - test/cpp_test_suite/old_tests/cmd_types.cpp | 1139 -------- 9 files changed, 3626 insertions(+), 3670 deletions(-) create mode 100644 test/cpp_test_suite/new_tests/cxx_cmd_types.cpp delete mode 100644 test/cpp_test_suite/old_tests/cmd_types.cpp diff --git a/include/tango/client/DeviceData.h b/include/tango/client/DeviceData.h index 564695114..0ac193dd8 100644 --- a/include/tango/client/DeviceData.h +++ b/include/tango/client/DeviceData.h @@ -59,33 +59,37 @@ * @headerfile tango.h * @ingroup Client */ -namespace Tango { - class DeviceData { +#include "DevicePipe.h" +namespace Tango +{ +class DeviceData +{ - public : +public : ///@privatesection // // constructor methods // - enum except_flags { - isempty_flag, - wrongtype_flag, - numFlags - }; + enum except_flags + { + isempty_flag, + wrongtype_flag, + numFlags + }; // DeviceData(); - DeviceData(const DeviceData &); + DeviceData(const DeviceData &); - DeviceData &operator=(const DeviceData &); + DeviceData &operator=(const DeviceData &); #ifdef HAS_RVALUE - DeviceData(DeviceData &&); - DeviceData & operator=(DeviceData &&); + DeviceData(DeviceData &&); + DeviceData &operator=(DeviceData &&); #endif - virtual ~DeviceData(); + virtual ~DeviceData(); - CORBA::Any_var any; + CORBA::Any_var any; ///@publicsection /**@name Constructors */ @@ -96,7 +100,7 @@ namespace Tango { * Default constructor. The instance is empty * */ - DeviceData(); + DeviceData(); //@} /**@name Inserters and Extractors */ @@ -226,7 +230,8 @@ namespace Tango { * @param [in] datum The data to be inserted * @exception WrongData if requested */ - void operator<<(bool datum) { any <<= CORBA::Any::from_boolean(datum); } + void operator<<(bool datum) + { any <<= CORBA::Any::from_boolean(datum); } /** * Insert data into a DeviceData for the DevVarLongStringArray data type @@ -237,7 +242,7 @@ namespace Tango { * @param [in] vs The string vector to be inserted * @exception WrongData if requested */ - void insert(vector &vl, vector &vs); + void insert(vector &vl, vector &vs); /** * Insert data into a DeviceData for the DevVarDoubleStringArray data type @@ -248,7 +253,7 @@ namespace Tango { * @param [in] vs The string vector to be inserted * @exception WrongData if requested */ - void insert(vector &vd, vector &vs); + void insert(vector &vd, vector &vs); /** * Insert data into a DeviceData for the DevEncoded data type @@ -265,8 +270,21 @@ namespace Tango { * @param [in] buffer The data part of the DevEncoded instance * @exception WrongData if requested */ - void insert(const string &str, vector &buffer); - + void insert(const string &str, vector &buffer); + + /** + * Inserts a PipeBlob + * + * @param blob + */ + void insert(DevicePipeBlob &blob); + + /** + * Inserts a PipeBlob + * + * @param blob + */ + void insert(DevicePipeBlob *blob); /** * The extract operators * @@ -326,7 +344,7 @@ namespace Tango { * @return Boolean set to false if the extraction failed * @exception WrongData if requested */ - bool operator>>(bool &datum); + bool operator>>(bool &datum); /** * Extract data from a DeviceData for the DevVarLongStringArray data type @@ -338,7 +356,7 @@ namespace Tango { * @return Boolean set to false if the extraction failed * @exception WrongData if requested */ - bool extract(vector &vl, vector &vs); + bool extract(vector &vl, vector &vs); /** * Extract data from a DeviceData for the DevVarDoubleStringArray data type @@ -350,7 +368,7 @@ namespace Tango { * @return Boolean set to false if the extraction failed * @exception WrongData if requested */ - bool extract(vector &vd, vector &vs); + bool extract(vector &vd, vector &vs); /** * Extract data from a DeviceData for the DevEncoded data type @@ -365,7 +383,9 @@ namespace Tango { * @return Boolean set to false if the extraction failed * @exception WrongData if requested */ - bool extract(const char *&str, const unsigned char *&data, unsigned int &length); + bool extract(const char *&str, const unsigned char *&data, unsigned int &length); + + bool extract(DevicePipeBlob *blob); //@} ///@privatesection @@ -373,195 +393,232 @@ namespace Tango { // insert methods for native C++ types // // void operator << (bool datum) {any <<= CORBA::Any::from_boolean(datum);} - void operator<<(short datum) { any <<= datum; } + void operator<<(short datum) + { any <<= datum; } - void operator<<(unsigned short datum) { any <<= datum; } + void operator<<(unsigned short datum) + { any <<= datum; } - void operator<<(DevLong datum) { any <<= datum; } + void operator<<(DevLong datum) + { any <<= datum; } - void operator<<(DevULong datum) { any <<= datum; } + void operator<<(DevULong datum) + { any <<= datum; } - void operator<<(DevLong64 datum) { any <<= datum; } + void operator<<(DevLong64 datum) + { any <<= datum; } - void operator<<(DevULong64 datum) { any <<= datum; } + void operator<<(DevULong64 datum) + { any <<= datum; } - void operator<<(float datum) { any <<= datum; } + void operator<<(float datum) + { any <<= datum; } - void operator<<(double datum) { any <<= datum; } + void operator<<(double datum) + { any <<= datum; } - void operator<<(char *datum) { any <<= datum; } + void operator<<(char *datum) + { any <<= datum; } - void operator<<(const char *datum) { any <<= datum; } + void operator<<(const char *datum) + { any <<= datum; } - void operator<<(string &datum) { any <<= datum.c_str(); } + void operator<<(string &datum) + { any <<= datum.c_str(); } - void operator<<(vector &); + void operator<<(vector &); - void operator<<(vector &); + void operator<<(vector &); - void operator<<(vector &); + void operator<<(vector &); - void operator<<(vector &); + void operator<<(vector &); - void operator<<(vector &); + void operator<<(vector &); - void operator<<(vector &); + void operator<<(vector &); - void operator<<(vector &); + void operator<<(vector &); - void operator<<(vector &); + void operator<<(vector &); - void operator<<(vector &); + void operator<<(vector &); - void operator<<(vector &); + void operator<<(vector &); - void operator<<(DevState datum) { (any.inout()) <<= datum; } + void operator<<(DevState datum) + { (any.inout()) <<= datum; } - void operator<<(DevEncoded &datum) { (any.inout()) <<= datum; } + void operator<<(DevEncoded &datum) + { (any.inout()) <<= datum; } // void insert(vector&, vector&); // void insert(vector&, vector&); // void insert(const string &,vector&); - void insert(const char *, DevVarCharArray *); + void insert(const char *, DevVarCharArray *); - void insert(const char *, unsigned char *, unsigned int); + void insert(const char *, unsigned char *, unsigned int); // // insert methods for TANGO CORBA sequence types // - inline void operator<<(DevVarCharArray *datum) { any.inout() <<= datum; } + inline void operator<<(DevVarCharArray *datum) + { any.inout() <<= datum; } - inline void operator<<(DevVarShortArray *datum) { any.inout() <<= datum; } + inline void operator<<(DevVarShortArray *datum) + { any.inout() <<= datum; } - inline void operator<<(DevVarUShortArray *datum) { any.inout() <<= datum; } + inline void operator<<(DevVarUShortArray *datum) + { any.inout() <<= datum; } - inline void operator<<(DevVarLongArray *datum) { any.inout() <<= datum; } + inline void operator<<(DevVarLongArray *datum) + { any.inout() <<= datum; } - inline void operator<<(DevVarLong64Array *datum) { any.inout() <<= datum; } + inline void operator<<(DevVarLong64Array *datum) + { any.inout() <<= datum; } - inline void operator<<(DevVarULongArray *datum) { any.inout() <<= datum; } + inline void operator<<(DevVarULongArray *datum) + { any.inout() <<= datum; } - inline void operator<<(DevVarULong64Array *datum) { any.inout() <<= datum; } + inline void operator<<(DevVarULong64Array *datum) + { any.inout() <<= datum; } - inline void operator<<(DevVarFloatArray *datum) { any.inout() <<= datum; } + inline void operator<<(DevVarFloatArray *datum) + { any.inout() <<= datum; } - inline void operator<<(DevVarDoubleArray *datum) { any.inout() <<= datum; } + inline void operator<<(DevVarDoubleArray *datum) + { any.inout() <<= datum; } - inline void operator<<(DevVarStringArray *datum) { any.inout() <<= datum; } + inline void operator<<(DevVarStringArray *datum) + { any.inout() <<= datum; } - inline void operator<<(DevVarLongStringArray *datum) { any.inout() <<= datum; } + inline void operator<<(DevVarLongStringArray *datum) + { any.inout() <<= datum; } - inline void operator<<(DevVarDoubleStringArray *datum) { any.inout() <<= datum; } + inline void operator<<(DevVarDoubleStringArray *datum) + { any.inout() <<= datum; } - inline void operator<<(DevVarCharArray &datum) { any.inout() <<= datum; } + inline void operator<<(DevVarCharArray &datum) + { any.inout() <<= datum; } - inline void operator<<(DevVarShortArray &datum) { any.inout() <<= datum; } + inline void operator<<(DevVarShortArray &datum) + { any.inout() <<= datum; } - inline void operator<<(DevVarUShortArray datum) { any.inout() <<= datum; } + inline void operator<<(DevVarUShortArray datum) + { any.inout() <<= datum; } - inline void operator<<(DevVarLongArray &datum) { any.inout() <<= datum; } + inline void operator<<(DevVarLongArray &datum) + { any.inout() <<= datum; } - inline void operator<<(DevVarLong64Array &datum) { any.inout() <<= datum; } + inline void operator<<(DevVarLong64Array &datum) + { any.inout() <<= datum; } - inline void operator<<(DevVarULongArray &datum) { any.inout() <<= datum; } + inline void operator<<(DevVarULongArray &datum) + { any.inout() <<= datum; } - inline void operator<<(DevVarULong64Array &datum) { any.inout() <<= datum; } + inline void operator<<(DevVarULong64Array &datum) + { any.inout() <<= datum; } - inline void operator<<(DevVarFloatArray &datum) { any.inout() <<= datum; } + inline void operator<<(DevVarFloatArray &datum) + { any.inout() <<= datum; } - inline void operator<<(DevVarDoubleArray &datum) { any.inout() <<= datum; } + inline void operator<<(DevVarDoubleArray &datum) + { any.inout() <<= datum; } - inline void operator<<(DevVarStringArray &datum) { any.inout() <<= datum; } + inline void operator<<(DevVarStringArray &datum) + { any.inout() <<= datum; } - inline void operator<<(DevVarLongStringArray &datum) { any.inout() <<= datum; } + inline void operator<<(DevVarLongStringArray &datum) + { any.inout() <<= datum; } - inline void operator<<(DevVarDoubleStringArray &datum) { any.inout() <<= datum; } + inline void operator<<(DevVarDoubleStringArray &datum) + { any.inout() <<= datum; } // // extract methods for native C++ types // // bool operator >> (bool&); - bool operator>>(short &); + bool operator>>(short &); - bool operator>>(unsigned short &); + bool operator>>(unsigned short &); - bool operator>>(DevLong &); + bool operator>>(DevLong &); - bool operator>>(DevULong &); + bool operator>>(DevULong &); - bool operator>>(DevLong64 &); + bool operator>>(DevLong64 &); - bool operator>>(DevULong64 &); + bool operator>>(DevULong64 &); - bool operator>>(float &); + bool operator>>(float &); - bool operator>>(double &); + bool operator>>(double &); - bool operator>>(const char *&); + bool operator>>(const char *&); - bool operator>>(string &); + bool operator>>(string &); - bool operator>>(vector &); + bool operator>>(vector &); - bool operator>>(vector &); + bool operator>>(vector &); - bool operator>>(vector &); + bool operator>>(vector &); - bool operator>>(vector &); + bool operator>>(vector &); - bool operator>>(vector &); + bool operator>>(vector &); - bool operator>>(vector &); + bool operator>>(vector &); - bool operator>>(vector &); + bool operator>>(vector &); - bool operator>>(vector &); + bool operator>>(vector &); - bool operator>>(vector &); + bool operator>>(vector &); - bool operator>>(vector &); + bool operator>>(vector &); - bool operator>>(DevState &); + bool operator>>(DevState &); // bool extract(vector&, vector&); // bool extract(vector&, vector&); // bool extract(const char *&,unsigned char *&,unsigned int &); - bool extract(string &, vector &); + bool extract(string &, vector &); // // extract methods for TANGO CORBA sequence types // - bool operator>>(const DevVarCharArray *&datum); + bool operator>>(const DevVarCharArray *&datum); - bool operator>>(const DevVarShortArray *&datum); + bool operator>>(const DevVarShortArray *&datum); - bool operator>>(const DevVarUShortArray *&datum); + bool operator>>(const DevVarUShortArray *&datum); - bool operator>>(const DevVarLongArray *&datum); + bool operator>>(const DevVarLongArray *&datum); - bool operator>>(const DevVarLong64Array *&datum); + bool operator>>(const DevVarLong64Array *&datum); - bool operator>>(const DevVarULongArray *&datum); + bool operator>>(const DevVarULongArray *&datum); - bool operator>>(const DevVarULong64Array *&datum); + bool operator>>(const DevVarULong64Array *&datum); - bool operator>>(const DevVarFloatArray *&datum); + bool operator>>(const DevVarFloatArray *&datum); - bool operator>>(const DevVarDoubleArray *&datum); + bool operator>>(const DevVarDoubleArray *&datum); - bool operator>>(const DevVarStringArray *&datum); + bool operator>>(const DevVarStringArray *&datum); - bool operator>>(const DevVarLongStringArray *&datum); + bool operator>>(const DevVarLongStringArray *&datum); - bool operator>>(const DevVarDoubleStringArray *&datum); + bool operator>>(const DevVarDoubleStringArray *&datum); - bool operator>>(const DevEncoded *&datum); + bool operator>>(const DevEncoded *&datum); - bool operator>>(DevEncoded &datum); + bool operator>>(DevEncoded &datum); ///@publicsection /**@name Exception and error related methods methods @@ -580,7 +637,8 @@ namespace Tango { * * @param [in] fl The exception flag */ - void exceptions(bitset fl) { exceptions_flags = fl; } + void exceptions(bitset fl) + { exceptions_flags = fl; } /** * Get exception flag @@ -601,7 +659,8 @@ namespace Tango { * * @return The exception flag */ - bitset exceptions() { return exceptions_flags; } + bitset exceptions() + { return exceptions_flags; } /** * Reset one exception flag @@ -610,7 +669,8 @@ namespace Tango { * * @param [in] fl The exception flag */ - void reset_exceptions(except_flags fl) { exceptions_flags.reset((size_t) fl); } + void reset_exceptions(except_flags fl) + { exceptions_flags.reset((size_t) fl); } /** * Set one exception flag @@ -619,7 +679,8 @@ namespace Tango { * * @param [in] fl The exception flag */ - void set_exceptions(except_flags fl) { exceptions_flags.set((size_t) fl); } + void set_exceptions(except_flags fl) + { exceptions_flags.set((size_t) fl); } /** * Get instance extraction state @@ -644,7 +705,8 @@ namespace Tango { * * @return The error bit set. */ - bitset state() { return ext->ext_state; } + bitset state() + { return ext->ext_state; } //@} /**@name miscellaneous methods */ @@ -673,7 +735,7 @@ namespace Tango { * * @return Boolean set to true is the instance is empty */ - bool is_empty(); + bool is_empty(); /** * Get Tango data type of the included data @@ -682,7 +744,7 @@ namespace Tango { * * @return The data type */ - int get_type(); + int get_type(); //@} /** @@ -702,28 +764,52 @@ namespace Tango { * @param [in] str The printing stream * @param [in] dd The instance to be printed */ - friend ostream &operator<<(ostream &str, DeviceData &dd); + friend ostream &operator<<(ostream &str, DeviceData &dd); - protected : +protected : ///@privatesection - bool any_is_null(); + bool any_is_null(); - bitset exceptions_flags; + bitset exceptions_flags; - private: - class DeviceDataExt { - public: - DeviceDataExt() {}; +private: + class DeviceDataExt + { + public: + DeviceDataExt() + {}; - bitset ext_state; - }; + bitset ext_state; + }; #ifdef HAS_UNIQUE_PTR - unique_ptr ext; + unique_ptr ext; #else - DeviceDataExt *ext; // Class extension + DeviceDataExt *ext; // Class extension #endif - }; + template + void checkResult(bool result, T *rv) + { + if (not(result)) + { + ext->ext_state.set(wrongtype_flag); + if (exceptions_flags.test(wrongtype_flag)) + { + ApiDataExcept::throw_exception((const char *) API_IncompatibleCmdArgumentType, + (const char *) "Cannot extract, data in DeviceData object is not a DevEncoded", + (const char *) "DeviceData::extract"); + } + } + + if (rv == nullptr) + { + ext->ext_state.set(wrongtype_flag); + ApiDataExcept::throw_exception((const char *) API_IncoherentDevData, + (const char *) "Incoherent data received from server", + (const char *) "DeviceData::extract"); + } + } +}; }//Tango diff --git a/include/tango/client/DeviceProxy.h b/include/tango/client/DeviceProxy.h index 9e743931e..341ea4191 100644 --- a/include/tango/client/DeviceProxy.h +++ b/include/tango/client/DeviceProxy.h @@ -53,111 +53,122 @@ * @ingroup Client * @headerfile tango.h */ -namespace Tango { - class DeviceProxy : public Tango::Connection { - private : - void real_constructor(string &, bool ch_acc = true); +namespace Tango +{ +//TODO replace inheritance with composition +class DeviceProxy: public Tango::Connection +{ +private : + //TODO replace with Factory + void real_constructor(string &, bool ch_acc = true); - Tango::DbDevice *db_dev; - string device_name; - string alias_name; - DeviceInfo _info; - bool is_alias; - DeviceProxy *adm_device; - string adm_dev_name; - omni_mutex netcalls_mutex; - int lock_ctr; - int lock_valid; + Tango::DbDevice *db_dev; + string device_name; + string alias_name; + DeviceInfo _info; + bool is_alias; + DeviceProxy *adm_device; + string adm_dev_name; + omni_mutex netcalls_mutex; + int lock_ctr; + int lock_valid; - void connect_to_adm_device(); + void connect_to_adm_device(); - void retrieve_read_args(TgRequest &, vector &); + void retrieve_read_args(TgRequest &, vector &); - DeviceAttribute *redo_synch_read_call(TgRequest &); + DeviceAttribute *redo_synch_read_call(TgRequest &); - vector *redo_synch_reads_call(TgRequest &); + vector *redo_synch_reads_call(TgRequest &); - void redo_synch_write_call(TgRequest &); + void redo_synch_write_call(TgRequest &); - void write_attribute(const AttributeValueList &); + void write_attribute(const AttributeValueList &); - void write_attribute(const AttributeValueList_4 &); + void write_attribute(const AttributeValueList_4 &); - void create_locking_thread(ApiUtil *, DevLong); + void create_locking_thread(ApiUtil *, DevLong); - void local_import(string &); + void local_import(string &); - enum read_attr_type { - SIMPLE, - MULTIPLE - }; + enum read_attr_type + { + SIMPLE, + MULTIPLE + }; - void read_attr_except(CORBA::Request_ptr, long, read_attr_type); + void read_attr_except(CORBA::Request_ptr, long, read_attr_type); - void write_attr_except(CORBA::Request_ptr, long, TgRequest::ReqType); + void write_attr_except(CORBA::Request_ptr, long, TgRequest::ReqType); - void check_connect_adm_device(); + void check_connect_adm_device(); - void omni420_timeout_attr(int, char *, read_attr_type); + void omni420_timeout_attr(int, char *, read_attr_type); - void omni420_except_attr(int, char *, read_attr_type); + void omni420_except_attr(int, char *, read_attr_type); - void omni420_timeout_wattr(int, char *); + void omni420_timeout_wattr(int, char *); - void omni420_except_wattr(int, char *); + void omni420_except_wattr(int, char *); - friend class AttributeProxy; + friend class AttributeProxy; - protected : + DevPipeData createDevPipeData(DevicePipe &dev_pipe) const; +protected : /// @privatesection - virtual string get_corba_name(bool); + virtual string get_corba_name(bool); - virtual string build_corba_name(); + virtual string build_corba_name(); - virtual int get_lock_ctr() { return lock_ctr; } + virtual int get_lock_ctr() + { return lock_ctr; } - virtual void set_lock_ctr(int lo) { lock_ctr = lo; } + virtual void set_lock_ctr(int lo) + { lock_ctr = lo; } - enum polled_object { - Cmd, - Attr - }; + enum polled_object + { + Cmd, + Attr + }; - bool is_polled(polled_object, string &, string &); + bool is_polled(polled_object, string &, string &); - virtual void reconnect(bool); + virtual void reconnect(bool); - void get_remaining_param(AttributeInfoListEx *); + void get_remaining_param(AttributeInfoListEx *); - template - void from_hist_2_AttHistory(T &, vector *); + template + void from_hist_2_AttHistory(T &, vector *); - void from_hist4_2_DataHistory(DevCmdHistory_4_var &, vector *); + void from_hist4_2_DataHistory(DevCmdHistory_4_var &, vector *); - void ask_locking_status(vector &, vector &); + void ask_locking_status(vector &, vector &); - void get_locker_host(string &, string &); + void get_locker_host(string &, string &); - void same_att_name(vector &, const char *); + void same_att_name(vector &, const char *); - private: - class DeviceProxyExt { - public: - DeviceProxyExt() {}; +private: + class DeviceProxyExt + { + public: + DeviceProxyExt() + {}; - bool nethost_alias; - string orig_tango_host; - }; + bool nethost_alias; + string orig_tango_host; + }; #ifdef HAS_UNIQUE_PTR - unique_ptr ext_proxy; + unique_ptr ext_proxy; #else - DeviceProxyExt *ext_proxy; // Class extension + DeviceProxyExt *ext_proxy; // Class extension #endif - omni_mutex lock_mutex; + omni_mutex lock_mutex; - public : +public : /**@name Constructors */ //@{ /** @@ -184,7 +195,7 @@ namespace Tango { * @throws WrongNameSyntax, ConnectionFailed * */ - DeviceProxy(string &name, CORBA::ORB *orb = NULL); + DeviceProxy(string &name, CORBA::ORB *orb = NULL); /** * Create a DeviceProxy instance. @@ -210,22 +221,24 @@ namespace Tango { * @throws WrongNameSyntax, ConnectionFailed * */ - DeviceProxy(const char *name, CORBA::ORB *orb = NULL); + DeviceProxy(const char *name, CORBA::ORB *orb = NULL); //@} /// @privatesection - DeviceProxy(string &name, bool ch_access, CORBA::ORB *orb = NULL); + DeviceProxy(string &name, bool ch_access, CORBA::ORB *orb = NULL); - DeviceProxy(const char *, bool ch_access, CORBA::ORB *orb = NULL); + DeviceProxy(const char *, bool ch_access, CORBA::ORB *orb = NULL); - DeviceProxy(const DeviceProxy &); + DeviceProxy(const DeviceProxy &); - DeviceProxy &operator=(const DeviceProxy &); + DeviceProxy &operator=(const DeviceProxy &); - virtual ~DeviceProxy(); + virtual ~DeviceProxy(); - DeviceProxy() : Connection((CORBA::ORB *) NULL), db_dev(NULL), adm_device(NULL), lock_ctr(0), - ext_proxy(Tango_nullptr) { dbase_used = false; } + DeviceProxy() + : Connection((CORBA::ORB *) NULL), db_dev(NULL), adm_device(NULL), lock_ctr(0), + ext_proxy(Tango_nullptr) + { dbase_used = false; } /// @publicsection // @@ -255,7 +268,7 @@ namespace Tango { * * @throws ConnectionFailed, CommunicationFailed, DevFailed from device */ - virtual DeviceInfo const &info(); + virtual DeviceInfo const &info(); /** * Get device state. @@ -269,7 +282,7 @@ namespace Tango { * * @throws ConnectionFailed, CommunicationFailed */ - virtual DevState state(); + virtual DevState state(); /** * Get device status. @@ -283,7 +296,7 @@ namespace Tango { * * @throws ConnectionFailed, CommunicationFailed */ - virtual string status(); + virtual string status(); /** * Ping a device. @@ -295,7 +308,7 @@ namespace Tango { * * @throws ConnectionFailed, CommunicationFailed */ - virtual int ping(); + virtual int ping(); /** * Get device black box content @@ -309,7 +322,7 @@ namespace Tango { * @return Black box content * @throws ConnectionFailed, CommunicationFailed, DevFailed from device */ - virtual vector *black_box(int nb); + virtual vector *black_box(int nb); /** * Return the device name (from the device itself) @@ -319,7 +332,7 @@ namespace Tango { * @return The device name * @throws ConnectionFailed, CommunicationFailed */ - virtual string name(); + virtual string name(); /** * Return the administrator device name @@ -330,7 +343,7 @@ namespace Tango { * @return The administrator device name * @throws ConnectionFailed, CommunicationFailed */ - virtual string adm_name(); + virtual string adm_name(); /** * Return the device name as it is stored locally @@ -339,7 +352,8 @@ namespace Tango { * * @return The device name */ - virtual inline string dev_name() { return device_name; } + virtual inline string dev_name() + { return device_name; } /** * Returns the device description as a string. @@ -349,7 +363,7 @@ namespace Tango { * @return The device description * @throws ConnectionFailed, CommunicationFailed */ - virtual string description(); + virtual string description(); /** * Returns device alias @@ -360,7 +374,7 @@ namespace Tango { * @return The device alias * @throws ConnectionFailed, CommunicationFailed, DevFailed from device */ - virtual string alias(); + virtual string alias(); /** * Query the device for import info from the database. @@ -370,7 +384,7 @@ namespace Tango { * @return The device import info * @throws ConnectionFailed, CommunicationFailed, NonDbDevice */ - virtual DbDevImportInfo import_info(); + virtual DbDevImportInfo import_info(); /** * Get device Tango lib version @@ -379,7 +393,7 @@ namespace Tango { * * @return The device Tango lib version */ - virtual int get_tango_lib_version(); + virtual int get_tango_lib_version(); //@} /** @name Synchronous command related methods */ @@ -394,7 +408,7 @@ namespace Tango { * @return The command information structure * @throws ConnectionFailed, CommunicationFailed, DevFailed from device */ - virtual CommandInfo command_query(string cmd_name); + virtual CommandInfo command_query(string cmd_name); /** * Query the device for all commands information. @@ -406,7 +420,7 @@ namespace Tango { * @return The command information list: One CommandInfo structure per command * @throws ConnectionFailed, CommunicationFailed, DevFailed from device */ - virtual CommandInfoList *command_list_query(); + virtual CommandInfoList *command_list_query(); /** * Query all commands name @@ -417,7 +431,7 @@ namespace Tango { * @return A vector of string with one string per command * @throws ConnectionFailed, CommunicationFailed, DevFailed from device */ - virtual vector *get_command_list(); + virtual vector *get_command_list(); /** * Get command information for a single command @@ -428,7 +442,8 @@ namespace Tango { * @return The command information * @throws ConnectionFailed, CommunicationFailed, DevFailed from device */ - virtual CommandInfo get_command_config(const string &cmd_name) { return command_query(cmd_name); } + virtual CommandInfo get_command_config(const string &cmd_name) + { return command_query(cmd_name); } /** * Get information for a set of commands @@ -440,7 +455,7 @@ namespace Tango { * @return A vector of CommadnInfo srtuctures with one element per command * @throws ConnectionFailed, CommunicationFailed, DevFailed from device */ - virtual CommandInfoList *get_command_config(vector &cmd_names); + virtual CommandInfoList *get_command_config(vector &cmd_names); /** * Retrieve command history from polling buffer. @@ -481,7 +496,7 @@ namespace Tango { * @return The command information list: One CommandInfo structure per command * @throws NonSupportedFeature, ConnectionFailed, CommunicationFailed, DevFailed from device */ - virtual vector *command_history(string &cmd_name, int depth); + virtual vector *command_history(string &cmd_name, int depth); /** * Retrieve command history from polling buffer. @@ -522,10 +537,11 @@ namespace Tango { * @return The command information list: One CommandInfo structure per command * @throws NonSupportedFeature, ConnectionFailed, CommunicationFailed, DevFailed from device */ - virtual vector *command_history(const char *cmd_name, int depth) { - string str(cmd_name); - return command_history(str, depth); - } + virtual vector *command_history(const char *cmd_name, int depth) + { + string str(cmd_name); + return command_history(str, depth); + } //@} /** @name Synchronous attribute related methods */ @@ -551,7 +567,8 @@ namespace Tango { * @return The attribute information structure * @throws ConnectionFailed, CommunicationFailed, DevFailed from device */ - virtual AttributeInfoEx attribute_query(string att_name) { return get_attribute_config(att_name); } + virtual AttributeInfoEx attribute_query(string att_name) + { return get_attribute_config(att_name); } /** * Query the device for information on all attributes @@ -564,7 +581,7 @@ namespace Tango { * @return A vector of AttributeInfo structures with one element per attribute * @throws ConnectionFailed, CommunicationFailed, DevFailed from device */ - virtual AttributeInfoList *attribute_list_query(); + virtual AttributeInfoList *attribute_list_query(); /** * Query the device for information on all attributes @@ -577,7 +594,7 @@ namespace Tango { * @return A vector of AttributeInfoEx structures with one element per attribute * @throws ConnectionFailed, CommunicationFailed, DevFailed from device */ - virtual AttributeInfoListEx *attribute_list_query_ex(); + virtual AttributeInfoListEx *attribute_list_query_ex(); /** * Query all attributes name @@ -588,7 +605,7 @@ namespace Tango { * @return A vector of string with one string per attribute * @throws ConnectionFailed, CommunicationFailed, DevFailed from device */ - virtual vector *get_attribute_list(); + virtual vector *get_attribute_list(); /** * Get attribute configuration for a list of attributes @@ -602,7 +619,7 @@ namespace Tango { * @return A vector of AttributeInfo structures with one element per attribute * @throws ConnectionFailed, CommunicationFailed, DevFailed from device */ - virtual AttributeInfoList *get_attribute_config(vector &att_names); + virtual AttributeInfoList *get_attribute_config(vector &att_names); /** * Get attribute configuration (extended) for a list of attributes @@ -616,7 +633,7 @@ namespace Tango { * @return A vector of AttributeInfoEx structures with one element per attribute * @throws ConnectionFailed, CommunicationFailed, DevFailed from device */ - virtual AttributeInfoListEx *get_attribute_config_ex(vector &att_names); + virtual AttributeInfoListEx *get_attribute_config_ex(vector &att_names); /** * Get attribute configuration (extended) for a single attribute @@ -628,7 +645,7 @@ namespace Tango { * @return The extended attribute information * @throws ConnectionFailed, CommunicationFailed, DevFailed from device */ - virtual AttributeInfoEx get_attribute_config(const string &att_name); + virtual AttributeInfoEx get_attribute_config(const string &att_name); /** * Set attribute configuration @@ -639,7 +656,7 @@ namespace Tango { * @param [in] atts New attributes configuration * @throws ConnectionFailed, CommunicationFailed, DevUnlocked, DevFailed from device */ - virtual void set_attribute_config(AttributeInfoList &atts); + virtual void set_attribute_config(AttributeInfoList &atts); /** * Set extended attribute configuration @@ -650,7 +667,7 @@ namespace Tango { * @param [in] atts New extended attributes configuration * @throws ConnectionFailed, CommunicationFailed, DevUnlocked, DevFailed from device */ - virtual void set_attribute_config(AttributeInfoListEx &atts); + virtual void set_attribute_config(AttributeInfoListEx &atts); /** * Read the list of specified attributes @@ -686,7 +703,7 @@ namespace Tango { * @return A vector of DeviceAttribute instances with one element for each read attribute * @throws ConnectionFailed, CommunicationFailed */ - virtual vector *read_attributes(vector &att_names); + virtual vector *read_attributes(vector &att_names); /** * Read a single attribute @@ -701,7 +718,7 @@ namespace Tango { * @return The attribute value in a DeviceAttribute instance * @throws ConnectionFailed, CommunicationFailed */ - virtual DeviceAttribute read_attribute(string &att_name); + virtual DeviceAttribute read_attribute(string &att_name); /** * Read the list of specified attributes @@ -716,10 +733,11 @@ namespace Tango { * @return The attribute value in a DeviceAttribute instance * @throws ConnectionFailed, CommunicationFailed */ - virtual DeviceAttribute read_attribute(const char *att_name) { - string str(att_name); - return read_attribute(str); - } + virtual DeviceAttribute read_attribute(const char *att_name) + { + string str(att_name); + return read_attribute(str); + } /** * Write the specified attributes @@ -748,7 +766,7 @@ namespace Tango { * @param [in] attr_in Attributes name and value * @throws ConnectionFailed, CommunicationFailed, DeviceUnlocked, DevFailed or NamedDevFailedList from device */ - virtual void write_attributes(vector &attr_in); + virtual void write_attributes(vector &attr_in); /** * Write a single attribute @@ -761,7 +779,7 @@ namespace Tango { * @param [in] attr_in Attribute name and value * @throws ConnectionFailed, CommunicationFailed, DeviceUnlocked, DevFailed from device */ - virtual void write_attribute(DeviceAttribute &attr_in); + virtual void write_attribute(DeviceAttribute &attr_in); /** * Write and read a single attribute @@ -777,7 +795,7 @@ namespace Tango { * @return The read attribute data * @throws ConnectionFailed, CommunicationFailed, DeviceUnlocked, DevFailed from device */ - virtual DeviceAttribute write_read_attribute(DeviceAttribute &attr_in); + virtual DeviceAttribute write_read_attribute(DeviceAttribute &attr_in); /** * Write and read attribute(s) @@ -796,8 +814,8 @@ namespace Tango { * @return The read attribute(s) data * @throws ConnectionFailed, CommunicationFailed, DeviceUnlocked, DevFailed from device */ - virtual vector * - write_read_attributes(vector &attr_in, vector &r_names); + virtual vector * + write_read_attributes(vector &attr_in, vector &r_names); /** * Retrieve attribute history from polling buffer @@ -841,7 +859,7 @@ namespace Tango { * @return The read attribute history data * @throws NonSupportedFeature, ConnectionFailed, CommunicationFailed, DevFailed from device */ - virtual vector *attribute_history(string &att_name, int depth); + virtual vector *attribute_history(string &att_name, int depth); /** * Retrieve attribute history from polling buffer @@ -885,10 +903,11 @@ namespace Tango { * @return The read attribute history data * @throws NonSupportedFeature, ConnectionFailed, CommunicationFailed, DevFailed from device */ - virtual vector *attribute_history(const char *att_name, int depth) { - string str(att_name); - return attribute_history(str, depth); - } + virtual vector *attribute_history(const char *att_name, int depth) + { + string str(att_name); + return attribute_history(str, depth); + } //@} /** @name Pipe related methods */ @@ -904,7 +923,7 @@ namespace Tango { * @return A vector of PipeInfo structures with one element per pipe * @throws ConnectionFailed, CommunicationFailed, DevFailed from device */ - virtual PipeInfoList *get_pipe_config(vector &pipe_names); + virtual PipeInfoList *get_pipe_config(vector &pipe_names); /** * Get pipe configuration for a single pipe @@ -915,7 +934,7 @@ namespace Tango { * @return The pipe information * @throws ConnectionFailed, CommunicationFailed, DevFailed from device */ - virtual PipeInfo get_pipe_config(const string &pipe_name); + virtual PipeInfo get_pipe_config(const string &pipe_name); /** * Set pipe configuration @@ -925,7 +944,7 @@ namespace Tango { * @param [in] pipes New pipes configuration * @throws ConnectionFailed, CommunicationFailed, DevUnlocked, DevFailed from device */ - virtual void set_pipe_config(PipeInfoList &pipes); + virtual void set_pipe_config(PipeInfoList &pipes); /** * Query all pipes name @@ -936,7 +955,7 @@ namespace Tango { * @return A vector of string with one string per pipe * @throws ConnectionFailed, CommunicationFailed, DevFailed from device */ - virtual vector *get_pipe_list(); + virtual vector *get_pipe_list(); /** * Read a pipe @@ -947,7 +966,7 @@ namespace Tango { * @return The pipe value in a DevicePipe instance * @throws ConnectionFailed, CommunicationFailed */ - virtual DevicePipe read_pipe(const string &pipe_name); + virtual DevicePipe read_pipe(const string &pipe_name); /** * Write a pipe @@ -957,7 +976,7 @@ namespace Tango { * @param [in] pipe_data Data to be sent to the device through the pipe * @throws ConnectionFailed, CommunicationFailed */ - virtual void write_pipe(DevicePipe &pipe_data); + virtual void write_pipe(DevicePipe &pipe_data); /** * Write then read a pipe @@ -969,7 +988,7 @@ namespace Tango { * @return The pipe value in a DevicePipe instance * @throws ConnectionFailed, CommunicationFailed */ - virtual DevicePipe write_read_pipe(DevicePipe &pipe_data); + virtual DevicePipe write_read_pipe(DevicePipe &pipe_data); //@} /** @name Asynchronous attribute related methods */ @@ -984,7 +1003,7 @@ namespace Tango { * @return The call identifier * @throws ConnectionFailed */ - virtual long read_attribute_asynch(string &att_name); + virtual long read_attribute_asynch(string &att_name); /** * Read a single attribute asynchronously @@ -996,10 +1015,11 @@ namespace Tango { * @return The call identifier * @throws ConnectionFailed */ - virtual long read_attribute_asynch(const char *att_name) { - string tmp(att_name); - return read_attribute_asynch(tmp); - } + virtual long read_attribute_asynch(const char *att_name) + { + string tmp(att_name); + return read_attribute_asynch(tmp); + } /** * Read asynchronously alist of attributes @@ -1011,7 +1031,7 @@ namespace Tango { * @return The call identifier * @throws ConnectionFailed */ - virtual long read_attributes_asynch(vector &att_names); + virtual long read_attributes_asynch(vector &att_names); /** * Check if an asynchronous read_attributes call is arrived @@ -1029,7 +1049,7 @@ namespace Tango { * @return The attribute(s) data * @throws AsynCall, AsynReplyNotArrived, CommunicationFailed, DevFailed from device */ - virtual vector *read_attributes_reply(long id); + virtual vector *read_attributes_reply(long id); /** * Check if an asynchronous read_attributes call is arrived (with timeout) @@ -1050,7 +1070,7 @@ namespace Tango { * @return The attribute(s) data * @throws AsynCall, AsynReplyNotArrived, CommunicationFailed, DevFailed from device */ - virtual vector *read_attributes_reply(long id, long timeout); + virtual vector *read_attributes_reply(long id, long timeout); /** * Check if an asynchronous read_attribute (single attribute) call is arrived @@ -1068,7 +1088,7 @@ namespace Tango { * @return The attribute data * @throws AsynCall, AsynReplyNotArrived, CommunicationFailed, DevFailed from device */ - virtual DeviceAttribute *read_attribute_reply(long id); + virtual DeviceAttribute *read_attribute_reply(long id); /** * Check if an asynchronous read_attribute (single attribute) call is arrived (with timeout) @@ -1089,7 +1109,7 @@ namespace Tango { * @return The attribute data * @throws AsynCall, AsynReplyNotArrived, CommunicationFailed, DevFailed from device */ - virtual DeviceAttribute *read_attribute_reply(long id, long timeout); + virtual DeviceAttribute *read_attribute_reply(long id, long timeout); /** * Write a single attribute asynchronously @@ -1104,7 +1124,7 @@ namespace Tango { * @return The call identifier * @throws ConnectionFailed */ - virtual long write_attribute_asynch(DeviceAttribute &argin); + virtual long write_attribute_asynch(DeviceAttribute &argin); /** * Write asynchronously alist of attributes @@ -1119,7 +1139,7 @@ namespace Tango { * @return The call identifier * @throws ConnectionFailed */ - virtual long write_attributes_asynch(vector &argin); + virtual long write_attributes_asynch(vector &argin); /** * Check if the answer of one asynchronous write_attribute (single attribute) call is arrived @@ -1131,7 +1151,8 @@ namespace Tango { * @param [in] id The call identifier * @throws AsynCall, AsynReplyNotArrived, CommunicationFailed, DevFailed from device */ - virtual void write_attribute_reply(long id) { write_attributes_reply(id); } + virtual void write_attribute_reply(long id) + { write_attributes_reply(id); } /** * Check if the answer of one asynchronous write_attribute call (single attribute) is arrived with timeout @@ -1146,7 +1167,8 @@ namespace Tango { * @param [in] timeout The timeout value * @throws AsynCall, AsynReplyNotArrived, CommunicationFailed, DevFailed from device */ - virtual void write_attribute_reply(long id, long timeout) { write_attributes_reply(id, timeout); } + virtual void write_attribute_reply(long id, long timeout) + { write_attributes_reply(id, timeout); } /** * Check if the answer of one asynchronous write_attributes call is arrived @@ -1158,7 +1180,7 @@ namespace Tango { * @param [in] id The call identifier * @throws AsynCall, AsynReplyNotArrived, CommunicationFailed, DevFailed from device */ - virtual void write_attributes_reply(long id); + virtual void write_attributes_reply(long id); /** * Check if the answer of one asynchronous write_attributes call is arrived with timeout @@ -1173,7 +1195,7 @@ namespace Tango { * @param [in] timeout The timeout value * @throws AsynCall, AsynReplyNotArrived, CommunicationFailed, DevFailed from device */ - virtual void write_attributes_reply(long id, long timeout); + virtual void write_attributes_reply(long id, long timeout); /** * Read a single attribute asynchronously in callback model @@ -1186,10 +1208,11 @@ namespace Tango { * @param [in] cb The call-back object * @throws ConnectionFailed */ - virtual void read_attribute_asynch(const char *att_name, CallBack &cb) { - string tmp(att_name); - read_attribute_asynch(tmp, cb); - } + virtual void read_attribute_asynch(const char *att_name, CallBack &cb) + { + string tmp(att_name); + read_attribute_asynch(tmp, cb); + } /** * Read a single attribute asynchronously in callback model @@ -1202,7 +1225,7 @@ namespace Tango { * @param [in] cb The call-back object * @throws ConnectionFailed */ - virtual void read_attribute_asynch(string &att_name, CallBack &cb); + virtual void read_attribute_asynch(string &att_name, CallBack &cb); /** * Read asynchronously in callback model a list of attributes @@ -1215,7 +1238,7 @@ namespace Tango { * @param [in] cb The call-back object * @throws ConnectionFailed */ - virtual void read_attributes_asynch(vector &att_names, CallBack &cb); + virtual void read_attributes_asynch(vector &att_names, CallBack &cb); /** * Write asynchronously in callback model a single attribute @@ -1228,7 +1251,7 @@ namespace Tango { * @param [in] cb The call-back object * @throws ConnectionFailed */ - virtual void write_attribute_asynch(DeviceAttribute &argin, CallBack &cb); + virtual void write_attribute_asynch(DeviceAttribute &argin, CallBack &cb); /** * Write asynchronously in callback model a list of attributes @@ -1241,7 +1264,7 @@ namespace Tango { * @param [in] cb The call-back object * @throws ConnectionFailed */ - virtual void write_attributes_asynch(vector &argin, CallBack &cb); + virtual void write_attributes_asynch(vector &argin, CallBack &cb); //@} /** @name Asynchronous related methods */ @@ -1258,11 +1281,12 @@ namespace Tango { * @param [in] req The asynchronous request type * @return Pending asynchronous request number */ - virtual long pending_asynch_call(asyn_req_type req) { - if (req == POLLING)return pasyn_ctr; - else if (req == CALL_BACK) return pasyn_cb_ctr; - else return (pasyn_ctr + pasyn_cb_ctr); - } + virtual long pending_asynch_call(asyn_req_type req) + { + if (req == POLLING)return pasyn_ctr; + else if (req == CALL_BACK) return pasyn_cb_ctr; + else return (pasyn_ctr + pasyn_cb_ctr); + } //@} /** @name Polling related methods */ @@ -1275,7 +1299,7 @@ namespace Tango { * @param [in] cmd_name The command name * @return Flag set to true if the command is polled */ - virtual bool is_command_polled(string &cmd_name); + virtual bool is_command_polled(string &cmd_name); /** * Check if a command is polled @@ -1285,10 +1309,11 @@ namespace Tango { * @param [in] cmd_name The command name * @return Flag set to true if the command is polled */ - virtual bool is_command_polled(const char *cmd_name) { - string tmp(cmd_name); - return is_command_polled(tmp); - } + virtual bool is_command_polled(const char *cmd_name) + { + string tmp(cmd_name); + return is_command_polled(tmp); + } /** * Check if one attribute is polled @@ -1298,7 +1323,7 @@ namespace Tango { * @param [in] att_name The attribute name * @return Flag set to true if the attribute is polled */ - virtual bool is_attribute_polled(string &att_name); + virtual bool is_attribute_polled(string &att_name); /** * Check if one attribute is polled @@ -1308,10 +1333,11 @@ namespace Tango { * @param [in] att_name The attribute name * @return Flag set to true if the attribute is polled */ - virtual bool is_attribute_polled(const char *att_name) { - string tmp(att_name); - return is_attribute_polled(tmp); - } + virtual bool is_attribute_polled(const char *att_name) + { + string tmp(att_name); + return is_attribute_polled(tmp); + } /** * Get command polling period @@ -1321,7 +1347,7 @@ namespace Tango { * @param [in] cmd_name The command name * @return The command polling period */ - virtual int get_command_poll_period(string &cmd_name); + virtual int get_command_poll_period(string &cmd_name); /** * Get command polling period @@ -1331,10 +1357,11 @@ namespace Tango { * @param [in] cmd_name The command name * @return The command polling period */ - virtual int get_command_poll_period(const char *cmd_name) { - string tmp(cmd_name); - return get_command_poll_period(tmp); - } + virtual int get_command_poll_period(const char *cmd_name) + { + string tmp(cmd_name); + return get_command_poll_period(tmp); + } /** * Get attribute polling period @@ -1344,7 +1371,7 @@ namespace Tango { * @param [in] att_name The attribute name * @return The attribute polling period */ - virtual int get_attribute_poll_period(string &att_name); + virtual int get_attribute_poll_period(string &att_name); /** * Get attribute polling period @@ -1354,10 +1381,11 @@ namespace Tango { * @param [in] att_name The attribute name * @return The attribute polling period */ - virtual int get_attribute_poll_period(const char *att_name) { - string tmp(att_name); - return get_attribute_poll_period(tmp); - } + virtual int get_attribute_poll_period(const char *att_name) + { + string tmp(att_name); + return get_attribute_poll_period(tmp); + } /** * Get polling status @@ -1377,7 +1405,7 @@ namespace Tango { * * @return The polling status */ - virtual vector *polling_status(); + virtual vector *polling_status(); /** * Poll a command @@ -1388,7 +1416,7 @@ namespace Tango { * @param [in] cmd_name The command name * @param [in] polling_period The polling period */ - virtual void poll_command(string &cmd_name, int polling_period); + virtual void poll_command(string &cmd_name, int polling_period); /** * Poll a command @@ -1399,10 +1427,11 @@ namespace Tango { * @param [in] cmd_name The command name * @param [in] polling_period The polling period */ - virtual void poll_command(const char *cmd_name, int polling_period) { - string tmp(cmd_name); - poll_command(tmp, polling_period); - } + virtual void poll_command(const char *cmd_name, int polling_period) + { + string tmp(cmd_name); + poll_command(tmp, polling_period); + } /** * Poll an attribute @@ -1413,7 +1442,7 @@ namespace Tango { * @param [in] att_name The attribute name * @param [in] polling_period The polling period */ - virtual void poll_attribute(string &att_name, int polling_period); + virtual void poll_attribute(string &att_name, int polling_period); /** * Poll an attribute @@ -1424,10 +1453,11 @@ namespace Tango { * @param [in] att_name The attribute name * @param [in] polling_period The polling period */ - virtual void poll_attribute(const char *att_name, int polling_period) { - string tmp(att_name); - poll_attribute(tmp, polling_period); - } + virtual void poll_attribute(const char *att_name, int polling_period) + { + string tmp(att_name); + poll_attribute(tmp, polling_period); + } /** * Stop polling a command @@ -1436,7 +1466,7 @@ namespace Tango { * * @param [in] cmd_name The command name */ - virtual void stop_poll_command(string &cmd_name); + virtual void stop_poll_command(string &cmd_name); /** * Stop polling a command @@ -1445,10 +1475,11 @@ namespace Tango { * * @param [in] cmd_name The command name */ - virtual void stop_poll_command(const char *cmd_name) { - string tmp(cmd_name); - stop_poll_command(tmp); - } + virtual void stop_poll_command(const char *cmd_name) + { + string tmp(cmd_name); + stop_poll_command(tmp); + } /** * Stop polling an attribute @@ -1457,7 +1488,7 @@ namespace Tango { * * @param [in] att_name The attribute name */ - virtual void stop_poll_attribute(string &att_name); + virtual void stop_poll_attribute(string &att_name); /** * Stop polling an attribute @@ -1466,10 +1497,11 @@ namespace Tango { * * @param [in] att_name The attribute name */ - virtual void stop_poll_attribute(const char *att_name) { - string tmp(att_name); - stop_poll_attribute(tmp); - } + virtual void stop_poll_attribute(const char *att_name) + { + string tmp(att_name); + stop_poll_attribute(tmp); + } //@} /** @name Event related methods */ @@ -1497,7 +1529,7 @@ namespace Tango { * @return The event identifier * @throws EventSystemFailed */ - virtual int subscribe_event(const string &att_name, EventType event, CallBack *cb); + virtual int subscribe_event(const string &att_name, EventType event, CallBack *cb); /** * Subscribe for event reception with stateless support @@ -1528,7 +1560,7 @@ namespace Tango { * @return The event identifier * @throws EventSystemFailed */ - virtual int subscribe_event(const string &att_name, EventType event, CallBack *cb, bool stateless); + virtual int subscribe_event(const string &att_name, EventType event, CallBack *cb, bool stateless); /** * Subscribe for event reception with event queue @@ -1553,8 +1585,8 @@ namespace Tango { * @return The event identifier * @throws EventSystemFailed */ - virtual int - subscribe_event(const string &att_name, EventType event, int event_queue_size, bool stateless = false); + virtual int + subscribe_event(const string &att_name, EventType event, int event_queue_size, bool stateless = false); /** * Subscribe for device event reception with stateless support @@ -1580,7 +1612,7 @@ namespace Tango { * @return The event identifier * @throws EventSystemFailed */ - virtual int subscribe_event(EventType event, CallBack *cb, bool stateless = false); + virtual int subscribe_event(EventType event, CallBack *cb, bool stateless = false); /** * Subscribe for device event reception with stateless support and event queue @@ -1608,7 +1640,7 @@ namespace Tango { * @return The event identifier * @throws EventSystemFailed */ - virtual int subscribe_event(EventType event, int event_queue_size, bool stateless = false); + virtual int subscribe_event(EventType event, int event_queue_size, bool stateless = false); /** * Unsubscribe for event reception @@ -1619,7 +1651,7 @@ namespace Tango { * @param [in] event_id The event identifier * @throws EventSystemFailed */ - virtual void unsubscribe_event(int event_id); + virtual void unsubscribe_event(int event_id); /** * Fire event callback in event pull model @@ -1632,7 +1664,7 @@ namespace Tango { * @param [in] cb The callback object * @throws EventSystemFailed */ - virtual void get_events(int event_id, CallBack *cb); + virtual void get_events(int event_id, CallBack *cb); /** * Get arrived events from the event queue in event pull model @@ -1646,7 +1678,7 @@ namespace Tango { * @param [out] event_list The event(s) list * @throws EventSystemFailed */ - virtual void get_events(int event_id, EventDataList &event_list); + virtual void get_events(int event_id, EventDataList &event_list); /** * Get arrived events from event queue in event pull model @@ -1661,7 +1693,7 @@ namespace Tango { * @param [out] event_list The event(s) list * @throws EventSystemFailed */ - virtual void get_events(int event_id, AttrConfEventDataList &event_list); + virtual void get_events(int event_id, AttrConfEventDataList &event_list); /** * Get arrived events from event queue in event pull model @@ -1676,7 +1708,7 @@ namespace Tango { * @param [out] event_list The event(s) list * @throws EventSystemFailed */ - virtual void get_events(int event_id, DataReadyEventDataList &event_list); + virtual void get_events(int event_id, DataReadyEventDataList &event_list); /** * Get arrived events from event queue in event pull model @@ -1691,7 +1723,7 @@ namespace Tango { * @param [out] event_list The event(s) list * @throws EventSystemFailed */ - virtual void get_events(int event_id, DevIntrChangeEventDataList &event_list); + virtual void get_events(int event_id, DevIntrChangeEventDataList &event_list); /** * Get arrived events from event queue in event pull model @@ -1706,7 +1738,7 @@ namespace Tango { * @param [out] event_list The event(s) list * @throws EventSystemFailed */ - virtual void get_events(int event_id, PipeEventDataList &event_list); + virtual void get_events(int event_id, PipeEventDataList &event_list); /** * Get event number in event queue @@ -1720,7 +1752,7 @@ namespace Tango { * @return The event number in queue * @throws EventSystemFailed */ - virtual int event_queue_size(int event_id); + virtual int event_queue_size(int event_id); /** * Get date of the last event in queue @@ -1734,7 +1766,7 @@ namespace Tango { * @return The last event date * @throws EventSystemFailed */ - virtual TimeVal get_last_event_date(int event_id); + virtual TimeVal get_last_event_date(int event_id); /** * Check if the event queue is empty @@ -1747,7 +1779,7 @@ namespace Tango { * @return true if the event queue is empty * @throws EventSystemFailed */ - virtual bool is_event_queue_empty(int event_id); + virtual bool is_event_queue_empty(int event_id); //@} /** @name Property related methods */ @@ -1762,7 +1794,7 @@ namespace Tango { * @param [out] db The property value * @throws NonDbDevice, ConnectionFailed, CommunicationFailed, DevFailed from database device */ - virtual void get_property(string &prop_name, DbData &db); + virtual void get_property(string &prop_name, DbData &db); /** * Get a list of device properties @@ -1774,7 +1806,7 @@ namespace Tango { * @param [out] db The properties values * @throws NonDbDevice, ConnectionFailed, CommunicationFailed, DevFailed from database device */ - virtual void get_property(vector &prop_names, DbData &db); + virtual void get_property(vector &prop_names, DbData &db); /** * Get property(ies) for a device @@ -1785,7 +1817,7 @@ namespace Tango { * @param [in,out] db The property(ies) names and values * @throws NonDbDevice, ConnectionFailed, CommunicationFailed, DevFailed from database device */ - virtual void get_property(DbData &db); + virtual void get_property(DbData &db); /** * Put property(ies) for a device @@ -1796,7 +1828,7 @@ namespace Tango { * @param [in] db The property(ies) names and values * @throws NonDbDevice, ConnectionFailed, CommunicationFailed, DevFailed from database device */ - virtual void put_property(DbData &db); + virtual void put_property(DbData &db); /** * Delete a single device property @@ -1806,7 +1838,7 @@ namespace Tango { * @param [in] prop_name The property name * @throws NonDbDevice, ConnectionFailed, CommunicationFailed, DevFailed from database device */ - virtual void delete_property(string &prop_name); + virtual void delete_property(string &prop_name); /** * Delete a list of device properties @@ -1816,7 +1848,7 @@ namespace Tango { * @param [in] prop_names The property names list * @throws NonDbDevice, ConnectionFailed, CommunicationFailed, DevFailed from database device */ - virtual void delete_property(vector &prop_names); + virtual void delete_property(vector &prop_names); /** * Delete property(ies) for a device @@ -1827,7 +1859,7 @@ namespace Tango { * @param [in] db The property names * @throws NonDbDevice, ConnectionFailed, CommunicationFailed, DevFailed from database device */ - virtual void delete_property(DbData &db); + virtual void delete_property(DbData &db); /** * Get list of property names for a device @@ -1840,118 +1872,118 @@ namespace Tango { * @param [out] prop_list The device property list * @throws NonDbDevice, ConnectionFailed, CommunicationFailed, DevFailed from database device */ - virtual void get_property_list(const string &filter, vector &prop_list); + virtual void get_property_list(const string &filter, vector &prop_list); //@} /** @name Logging related methods */ //@{ #ifdef TANGO_HAS_LOG4TANGO - /** - * Add a logging target to the device - * - * Adds a new logging target to the device. The target_type_name input parameter must follow the - * format: @b target_type::target_name. Supported target types are: - * @li console - * @li file - * @li device - * - * For a device target, - * the target_name part of the target_type_target_name parameter must contain the name of a log consumer - * device (as defined in A.8). For a file target, target_name is the full path to the file to log to. If omitted, the - * device’s name is used to build the file name (which is something like domain_family_member.log). Finally, - * the target_name part of the target_type_target_name input parameter is ignored in case of a console target - * and can be omitted. - * - * @param [in] target_type_name The target type and name - * @throws DevFailed from device - */ - virtual void add_logging_target(const string &target_type_name); - /** - * Add a logging target to the device - * - * Adds a new logging target to the device. The target_type_name input parameter must follow the - * format: @b target_type::target_name. Supported target types are: - * @li console - * @li file - * @li device - * - * For a device target, - * the target_name part of the target_type_target_name parameter must contain the name of a log consumer - * device (as defined in A.8). For a file target, target_name is the full path to the file to log to. If omitted, the - * device’s name is used to build the file name (which is something like domain_family_member.log). Finally, - * the target_name part of the target_type_target_name input parameter is ignored in case of a console target - * and can be omitted. - * - * @param [in] target_type_name The target type and name - * @throws DevFailed from device - */ - virtual void add_logging_target(const char *target_type_name) - {add_logging_target(string(target_type_name));} - /** - * Remove a logging target from the device - * - * Removes a logging target from the device’s target list. The target_type_name input parameter must - * follow the format: target_type::target_name. Supported target types are: - * @li console - * @li file - * @li device - * - * For a - * device target, the target_name part of the target_type_target_name parameter must contain the name of a - * log consumer device (as defined in ). For a file target, target_name is the full path to the file to remove. If - * omitted, the default log file is removed. Finally, the target_name part of the target_type_target_name input - * parameter is ignored in case of a console target and can be omitted. - * If target_name is set to "*", all targets of the specified target_type are removed. - * - * @param [in] target_type_name The target type and name - */ - virtual void remove_logging_target(const string &target_type_name); - /** - * Remove a logging target from the device - * - * Removes a logging target from the device’s target list. The target_type_name input parameter must - * follow the format: target_type::target_name. Supported target types are: - * @li console - * @li file - * @li device - * - * For a - * device target, the target_name part of the target_type_target_name parameter must contain the name of a - * log consumer device (as defined in ). For a file target, target_name is the full path to the file to remove. If - * omitted, the default log file is removed. Finally, the target_name part of the target_type_target_name input - * parameter is ignored in case of a console target and can be omitted. - * If target_name is set to "*", all targets of the specified target_type are removed. - * - * @param [in] target_type_name The target type and name - */ - virtual void remove_logging_target(const char *target_type_name) - {remove_logging_target(string(target_type_name));} - /** - * Get current device's logging targets - * - * Returns a vector of string containing the current device’s logging targets. Each vector element has the - * following format: target_type::target_name. An empty vector is returned is the device has no logging - * targets. - * - * @return List of loggin target - */ - virtual vector get_logging_target (void); - /** - * Get current device's logging level - * - * Returns the current device’s logging level (0=OFF, 1=FATAL, 2=ERROR, 3=WARNING, 4=INFO, 5=DEBUG). - * - * @return The device logging level - */ - virtual int get_logging_level (void); - /** - * Set the device logging level - * - * Changes the device’s logging level. (0=OFF, 1=FATAL, 2=ERROR, 3=WARNING, 4=INFO, 5=DEBUG). - * - * @param [in] level The new device logging level - */ - virtual void set_logging_level (int level); + /** + * Add a logging target to the device + * + * Adds a new logging target to the device. The target_type_name input parameter must follow the + * format: @b target_type::target_name. Supported target types are: + * @li console + * @li file + * @li device + * + * For a device target, + * the target_name part of the target_type_target_name parameter must contain the name of a log consumer + * device (as defined in A.8). For a file target, target_name is the full path to the file to log to. If omitted, the + * device’s name is used to build the file name (which is something like domain_family_member.log). Finally, + * the target_name part of the target_type_target_name input parameter is ignored in case of a console target + * and can be omitted. + * + * @param [in] target_type_name The target type and name + * @throws DevFailed from device + */ + virtual void add_logging_target(const string &target_type_name); + /** + * Add a logging target to the device + * + * Adds a new logging target to the device. The target_type_name input parameter must follow the + * format: @b target_type::target_name. Supported target types are: + * @li console + * @li file + * @li device + * + * For a device target, + * the target_name part of the target_type_target_name parameter must contain the name of a log consumer + * device (as defined in A.8). For a file target, target_name is the full path to the file to log to. If omitted, the + * device’s name is used to build the file name (which is something like domain_family_member.log). Finally, + * the target_name part of the target_type_target_name input parameter is ignored in case of a console target + * and can be omitted. + * + * @param [in] target_type_name The target type and name + * @throws DevFailed from device + */ + virtual void add_logging_target(const char *target_type_name) + { add_logging_target(string(target_type_name)); } + /** + * Remove a logging target from the device + * + * Removes a logging target from the device’s target list. The target_type_name input parameter must + * follow the format: target_type::target_name. Supported target types are: + * @li console + * @li file + * @li device + * + * For a + * device target, the target_name part of the target_type_target_name parameter must contain the name of a + * log consumer device (as defined in ). For a file target, target_name is the full path to the file to remove. If + * omitted, the default log file is removed. Finally, the target_name part of the target_type_target_name input + * parameter is ignored in case of a console target and can be omitted. + * If target_name is set to "*", all targets of the specified target_type are removed. + * + * @param [in] target_type_name The target type and name + */ + virtual void remove_logging_target(const string &target_type_name); + /** + * Remove a logging target from the device + * + * Removes a logging target from the device’s target list. The target_type_name input parameter must + * follow the format: target_type::target_name. Supported target types are: + * @li console + * @li file + * @li device + * + * For a + * device target, the target_name part of the target_type_target_name parameter must contain the name of a + * log consumer device (as defined in ). For a file target, target_name is the full path to the file to remove. If + * omitted, the default log file is removed. Finally, the target_name part of the target_type_target_name input + * parameter is ignored in case of a console target and can be omitted. + * If target_name is set to "*", all targets of the specified target_type are removed. + * + * @param [in] target_type_name The target type and name + */ + virtual void remove_logging_target(const char *target_type_name) + { remove_logging_target(string(target_type_name)); } + /** + * Get current device's logging targets + * + * Returns a vector of string containing the current device’s logging targets. Each vector element has the + * following format: target_type::target_name. An empty vector is returned is the device has no logging + * targets. + * + * @return List of loggin target + */ + virtual vector get_logging_target(void); + /** + * Get current device's logging level + * + * Returns the current device’s logging level (0=OFF, 1=FATAL, 2=ERROR, 3=WARNING, 4=INFO, 5=DEBUG). + * + * @return The device logging level + */ + virtual int get_logging_level(void); + /** + * Set the device logging level + * + * Changes the device’s logging level. (0=OFF, 1=FATAL, 2=ERROR, 3=WARNING, 4=INFO, 5=DEBUG). + * + * @param [in] level The new device logging level + */ + virtual void set_logging_level(int level); #endif // TANGO_HAS_LOG4TANGO //@} @@ -1986,7 +2018,7 @@ namespace Tango { * * @param [in] lock_validity The lock validity (in seconds) */ - virtual void lock(int lock_validity = DEFAULT_LOCK_VALIDITY); + virtual void lock(int lock_validity = DEFAULT_LOCK_VALIDITY); /** * Unlock a device @@ -1998,7 +2030,7 @@ namespace Tango { * * @param [in] force The force unlock flag */ - virtual void unlock(bool force = false); + virtual void unlock(bool force = false); /** * Get device locking status @@ -2012,7 +2044,7 @@ namespace Tango { * * @return The device locking status */ - virtual string locking_status(); + virtual string locking_status(); /** * Check if the device is locked @@ -2021,7 +2053,7 @@ namespace Tango { * * @return The device locked flag */ - virtual bool is_locked(); + virtual bool is_locked(); /** * Check if the device is locked by the caller @@ -2031,7 +2063,7 @@ namespace Tango { * * @return The device locked flag */ - virtual bool is_locked_by_me(); + virtual bool is_locked_by_me(); /** * Get device locking information @@ -2064,40 +2096,41 @@ namespace Tango { * @param [out] li Device locking information * @return The device locked flag */ - virtual bool get_locker(LockerInfo &li); + virtual bool get_locker(LockerInfo &li); //@} /// @privatesection - virtual void parse_name(string &); + virtual void parse_name(string &); - virtual Database *get_device_db(); + virtual Database *get_device_db(); - DeviceProxy *get_adm_device() { return adm_device; } + DeviceProxy *get_adm_device() + { return adm_device; } // // attribute methods // - void read_attribute(const string &, AttributeValue_4 *&); + void read_attribute(const string &, AttributeValue_4 *&); - void read_attribute(const string &, AttributeValue_5 *&); + void read_attribute(const string &, AttributeValue_5 *&); - void read_attribute(const char *, DeviceAttribute &); + void read_attribute(const char *, DeviceAttribute &); - void read_attribute(string &at, DeviceAttribute &da) { read_attribute(at.c_str(), da); } + void read_attribute(string &at, DeviceAttribute &da) + { read_attribute(at.c_str(), da); } // // Old event methods // - virtual int subscribe_event(const string &attr_name, EventType event, CallBack *, - const vector &filters); // For compatibility with Tango < 8 - virtual int subscribe_event(const string &attr_name, EventType event, CallBack *, - const vector &filters, bool stateless); // For compatibility with Tango < 8 - virtual int subscribe_event(const string &attr_name, EventType event, int event_queue_size, - const vector &filters, - bool stateless = false); // For compatibility with Tango < 8 - - }; + virtual int subscribe_event(const string &attr_name, EventType event, CallBack *, + const vector &filters); // For compatibility with Tango < 8 + virtual int subscribe_event(const string &attr_name, EventType event, CallBack *, + const vector &filters, bool stateless); // For compatibility with Tango < 8 + virtual int subscribe_event(const string &attr_name, EventType event, int event_queue_size, + const vector &filters, + bool stateless = false); // For compatibility with Tango < 8 +}; }//Tango #endif /* _DEVICEPROXY_H */ diff --git a/src/client/devapi_base.cpp b/src/client/devapi_base.cpp index ee49875ad..716d305d9 100644 --- a/src/client/devapi_base.cpp +++ b/src/client/devapi_base.cpp @@ -1158,6 +1158,7 @@ void Connection::set_timeout_millis(int millisecs) } +//TODO all command_inout methods must be moved to DeviceProxy //----------------------------------------------------------------------------- // // Connection::command_inout() - public method to execute a command on a TANGO device @@ -1282,12 +1283,11 @@ DeviceData Connection::command_inout(string &command, DeviceData &data_in) // Now, try to execute the command // - CORBA::Any *received; - if (version >= 4) - { - ClntIdent ci; - ApiUtil *au = ApiUtil::instance(); - ci.cpp_clnt(au->get_client_pid()); + //TODO extract class hierarchyCORBA::Any *received; + if (version >= 4) + { ClntIdent ci; + ApiUtil *au = ApiUtil::instance(); + ci.cpp_clnt(au->get_client_pid()); Device_4_var dev = Device_4::_duplicate(device_4); received = dev->command_inout_4(command.c_str(), data_in.any, local_source, ci); @@ -5146,7 +5146,6 @@ DevicePipe DeviceProxy::read_pipe(const string &pipe_name) void DeviceProxy::write_pipe(DevicePipe &dev_pipe) { - DevPipeData pipe_value_5; int ctr = 0; // @@ -5164,22 +5163,9 @@ void DeviceProxy::write_pipe(DevicePipe &dev_pipe) // // Prepare data sent to device // + DevPipeData pipe_value_5 = createDevPipeData(dev_pipe); - pipe_value_5.name = dev_pipe.get_name().c_str(); - const string &bl_name = dev_pipe.get_root_blob().get_name(); - if (bl_name.size() != 0) - pipe_value_5.data_blob.name = bl_name.c_str(); - DevVarPipeDataEltArray *tmp_ptr = dev_pipe.get_root_blob().get_insert_data(); - if (tmp_ptr == Tango_nullptr) - { - Except::throw_exception(API_PipeNoDataElement, "No data in pipe!", "DeviceProxy::write_pipe()"); - } - - DevULong max, len; - max = tmp_ptr->maximum(); - len = tmp_ptr->length(); - pipe_value_5.data_blob.blob_data.replace(max, len, tmp_ptr->get_buffer((DevBoolean) true), true); while (ctr < 2) { @@ -5193,12 +5179,12 @@ void DeviceProxy::write_pipe(DevicePipe &dev_pipe) Device_5_var dev = Device_5::_duplicate(device_5); dev->write_pipe_5(pipe_value_5, ci); - ctr = 2; + ctr = 2; } catch (Tango::ConnectionFailed &e) { dev_pipe.get_root_blob().reset_insert_ctr(); - delete tmp_ptr; + stringstream desc; desc << "Failed to write_pipe on device " << device_name << ", pipe " << dev_pipe.get_name(); @@ -5207,7 +5193,7 @@ void DeviceProxy::write_pipe(DevicePipe &dev_pipe) catch (Tango::DevFailed &e) { dev_pipe.get_root_blob().reset_insert_ctr(); - delete tmp_ptr; + stringstream desc; desc << "Failed to write_pipe on device " << device_name << ", pipe " << dev_pipe.get_name(); @@ -5226,7 +5212,7 @@ void DeviceProxy::write_pipe(DevicePipe &dev_pipe) else { dev_pipe.get_root_blob().reset_insert_ctr(); - delete tmp_ptr; + set_connection_state(CONNECTION_NOTOK); stringstream desc; @@ -5244,7 +5230,7 @@ void DeviceProxy::write_pipe(DevicePipe &dev_pipe) else { dev_pipe.get_root_blob().reset_insert_ctr(); - delete tmp_ptr; + set_connection_state(CONNECTION_NOTOK); stringstream desc; @@ -5256,7 +5242,7 @@ void DeviceProxy::write_pipe(DevicePipe &dev_pipe) catch (CORBA::SystemException &ce) { dev_pipe.get_root_blob().reset_insert_ctr(); - delete tmp_ptr; + set_connection_state(CONNECTION_NOTOK); stringstream desc; @@ -5267,7 +5253,31 @@ void DeviceProxy::write_pipe(DevicePipe &dev_pipe) } dev_pipe.get_root_blob().reset_insert_ctr(); +} + +DevPipeData +DeviceProxy::createDevPipeData(DevicePipe &dev_pipe) const +{ + DevPipeData result; + + result.name = dev_pipe.get_name().c_str(); + const string &bl_name = dev_pipe.get_root_blob().get_name(); + if (bl_name.size() != 0) + result.data_blob.name = bl_name.c_str(); + + + DevVarPipeDataEltArray *tmp_ptr = dev_pipe.get_root_blob().get_insert_data(); + if (tmp_ptr == Tango_nullptr) + { + Except::throw_exception(API_PipeNoDataElement, "No data in pipe!", "DeviceProxy::write_pipe()"); + } + + DevULong max, len; + max = tmp_ptr->maximum(); + len = tmp_ptr->length(); + result.data_blob.blob_data.replace(max, len, tmp_ptr->get_buffer((DevBoolean) true), true); delete tmp_ptr; delete tmp_ptr; + return result; } //----------------------------------------------------------------------------- @@ -5299,6 +5309,7 @@ DevicePipe DeviceProxy::write_read_pipe(DevicePipe &pipe_data) // Prepare data sent to device // + //TODO replace with createDevPipeData pipe_value_5.name = pipe_data.get_name().c_str(); const string &bl_name = pipe_data.get_root_blob().get_name(); if (bl_name.size() != 0) @@ -7727,7 +7738,6 @@ int DeviceProxy::subscribe_event(const string &attr_name, EventType event, CallBack *callback, const vector &filters, bool stateless) { - //TODO inject ApiUtil *api_ptr = ApiUtil::instance(); if (api_ptr->get_zmq_event_consumer() == NULL) { @@ -7735,9 +7745,10 @@ int DeviceProxy::subscribe_event(const string &attr_name, EventType event, } return api_ptr->get_zmq_event_consumer()->subscribe_event(this, attr_name, event, callback, filters, - stateless); + stateless); } + //------------------------------------------------------------------------------------------------------------------ // // method : @@ -7761,9 +7772,10 @@ int DeviceProxy::subscribe_event(const string &attr_name, EventType event, } return api_ptr->get_zmq_event_consumer()->subscribe_event(this, attr_name, event, event_queue_size, filters, - stateless); + stateless); } + //------------------------------------------------------------------------------------------------------------------- // // method : diff --git a/src/client/devapi_data.cpp b/src/client/devapi_data.cpp index 18dbeabf5..677e0fb13 100644 --- a/src/client/devapi_data.cpp +++ b/src/client/devapi_data.cpp @@ -1,3 +1,4 @@ +//TODO rename file to device_data.cpp // // devapi_data.cpp - C++ source code file for TANGO devapi class DeviceData // @@ -45,19 +46,20 @@ namespace Tango // //----------------------------------------------------------------------------- -DeviceData::DeviceData():ext(new DeviceDataExt) +DeviceData::DeviceData() + : ext(new DeviceDataExt) { // // For omniORB, it is necessary to do the ORB::init before creating the Any. // Otherwise, string insertion into the Any will not be possible // - ApiUtil *au = ApiUtil::instance(); - if (CORBA::is_nil(au->get_orb()) == true) - au->create_orb(); + ApiUtil *au = ApiUtil::instance(); + if (CORBA::is_nil(au->get_orb()) == true) + au->create_orb(); - any = new CORBA::Any(); - exceptions_flags.set(isempty_flag); + any = new CORBA::Any(); + exceptions_flags.set(isempty_flag); } //----------------------------------------------------------------------------- @@ -66,13 +68,13 @@ DeviceData::DeviceData():ext(new DeviceDataExt) // //----------------------------------------------------------------------------- -DeviceData::DeviceData(const DeviceData & source) +DeviceData::DeviceData(const DeviceData &source) { - exceptions_flags = source.exceptions_flags; + exceptions_flags = source.exceptions_flags; #ifdef HAS_RVALUE - any = source.any; + any = source.any; #else - any = const_cast(source).any._retn(); + any = const_cast(source).any._retn(); #endif #ifdef HAS_UNIQUE_PTR @@ -82,13 +84,13 @@ DeviceData::DeviceData(const DeviceData & source) *(ext.get()) = *(source.ext.get()); } #else - if (source.ext != NULL) - { - ext = new DeviceDataExt(); - *ext = *(source.ext); - } - else - ext = NULL; + if (source.ext != NULL) + { + ext = new DeviceDataExt(); + *ext = *(source.ext); + } + else + ext = NULL; #endif } @@ -99,10 +101,11 @@ DeviceData::DeviceData(const DeviceData & source) //----------------------------------------------------------------------------- #ifdef HAS_RVALUE -DeviceData::DeviceData(DeviceData &&source):ext(new DeviceDataExt) +DeviceData::DeviceData(DeviceData &&source) + : ext(new DeviceDataExt) { - exceptions_flags = source.exceptions_flags; - any = source.any._retn(); + exceptions_flags = source.exceptions_flags; + any = source.any._retn(); if (source.ext.get() != NULL) ext = move(source.ext); @@ -115,7 +118,7 @@ DeviceData::DeviceData(DeviceData &&source):ext(new DeviceDataExt) // //----------------------------------------------------------------------------- -DeviceData & DeviceData::operator=(const DeviceData &rval) +DeviceData &DeviceData::operator=(const DeviceData &rval) { if (this != &rval) { @@ -146,7 +149,7 @@ DeviceData & DeviceData::operator=(const DeviceData &rval) ext = NULL; #endif } - return *this; + return *this; } //----------------------------------------------------------------------------- @@ -156,17 +159,17 @@ DeviceData & DeviceData::operator=(const DeviceData &rval) //----------------------------------------------------------------------------- #ifdef HAS_RVALUE -DeviceData & DeviceData::operator=(DeviceData &&rval) +DeviceData &DeviceData::operator=(DeviceData &&rval) { - exceptions_flags = rval.exceptions_flags; - any = rval.any._retn(); + exceptions_flags = rval.exceptions_flags; + any = rval.any._retn(); if (rval.ext.get() != NULL) ext = move(rval.ext); else ext.reset(); - return *this; + return *this; } #endif @@ -191,8 +194,8 @@ DeviceData::~DeviceData() bool DeviceData::is_empty() { - bool ret = any_is_null(); - return(ret); + bool ret = any_is_null(); + return (ret); } //----------------------------------------------------------------------------- @@ -204,23 +207,23 @@ bool DeviceData::is_empty() bool DeviceData::any_is_null() { ext->ext_state.reset(isempty_flag); - CORBA::TypeCode_ptr tc; + CORBA::TypeCode_ptr tc; - tc = any->type(); - if (tc->equal(CORBA::_tc_null)) - { - ext->ext_state.set(isempty_flag); - if (exceptions_flags.test(isempty_flag)) - { - ApiDataExcept::throw_exception((const char*)"API_EmptyDeviceData", - (const char*)"Cannot extract, no data in DeviceData object ", - (const char*)"DeviceData::any_is_null"); - } - return(true); - } - CORBA::release(tc); + tc = any->type(); + if (tc->equal(CORBA::_tc_null)) + { + ext->ext_state.set(isempty_flag); + if (exceptions_flags.test(isempty_flag)) + { + ApiDataExcept::throw_exception((const char *) "API_EmptyDeviceData", + (const char *) "Cannot extract, no data in DeviceData object ", + (const char *) "DeviceData::any_is_null"); + } + return (true); + } + CORBA::release(tc); - return(false); + return (false); } @@ -232,154 +235,154 @@ bool DeviceData::any_is_null() int DeviceData::get_type() { - int data_type = 0; - - if (any_is_null() == true) - return -1; - else - { - CORBA::TypeCode_ptr tc; - CORBA::TypeCode_var tc_al; - CORBA::TypeCode_var tc_seq; - CORBA::TypeCode_var tc_field; - - tc = any->type(); - switch(tc->kind()) - { - case CORBA::tk_boolean: - data_type = Tango::DEV_BOOLEAN; - break; - - case CORBA::tk_short: - data_type = Tango::DEV_SHORT; - break; - - case CORBA::tk_long: - data_type = Tango::DEV_LONG; - break; - - case CORBA::tk_longlong: - data_type = Tango::DEV_LONG64; - break; - - case CORBA::tk_float: - data_type = Tango::DEV_FLOAT; - break; - - case CORBA::tk_double: - data_type = Tango::DEV_DOUBLE; - break; - - case CORBA::tk_ushort: - data_type = Tango::DEV_USHORT; - break; - - case CORBA::tk_ulong: - data_type = Tango::DEV_ULONG; - break; - - case CORBA::tk_ulonglong: - data_type = Tango::DEV_ULONG64; - break; - - case CORBA::tk_string: - data_type = Tango::DEV_STRING; - break; - - case CORBA::tk_alias: - tc_al = tc->content_type(); - tc_seq = tc_al->content_type(); - switch (tc_seq->kind()) - { - case CORBA::tk_octet: - data_type = Tango::DEVVAR_CHARARRAY; - break; - - case CORBA::tk_short: - data_type = Tango::DEVVAR_SHORTARRAY; - break; - - case CORBA::tk_long: - data_type = Tango::DEVVAR_LONGARRAY; - break; - - case CORBA::tk_longlong: - data_type = Tango::DEVVAR_LONG64ARRAY; - break; - - case CORBA::tk_float: - data_type = Tango::DEVVAR_FLOATARRAY; - break; - - case CORBA::tk_double: - data_type = Tango::DEVVAR_DOUBLEARRAY; - break; - - case CORBA::tk_ushort: - data_type = Tango::DEVVAR_USHORTARRAY; - break; - - case CORBA::tk_ulong: - data_type = Tango::DEVVAR_ULONGARRAY; - break; - - case CORBA::tk_ulonglong: - data_type = Tango::DEVVAR_ULONG64ARRAY; - break; - - case CORBA::tk_string: - data_type = Tango::DEVVAR_STRINGARRAY; - break; - - default: - break; - } - break; - - case CORBA::tk_struct: - tc_field = tc->member_type(0); - tc_al = tc_field->content_type(); - switch (tc_al->kind()) - { - case CORBA::tk_sequence: - tc_seq = tc_al->content_type(); - switch (tc_seq->kind()) - { + int data_type = 0; + + if (any_is_null() == true) + return -1; + else + { + CORBA::TypeCode_ptr tc; + CORBA::TypeCode_var tc_al; + CORBA::TypeCode_var tc_seq; + CORBA::TypeCode_var tc_field; + + tc = any->type(); + switch (tc->kind()) + { + case CORBA::tk_boolean: + data_type = Tango::DEV_BOOLEAN; + break; + + case CORBA::tk_short: + data_type = Tango::DEV_SHORT; + break; + + case CORBA::tk_long: + data_type = Tango::DEV_LONG; + break; + + case CORBA::tk_longlong: + data_type = Tango::DEV_LONG64; + break; + + case CORBA::tk_float: + data_type = Tango::DEV_FLOAT; + break; + + case CORBA::tk_double: + data_type = Tango::DEV_DOUBLE; + break; + + case CORBA::tk_ushort: + data_type = Tango::DEV_USHORT; + break; + + case CORBA::tk_ulong: + data_type = Tango::DEV_ULONG; + break; + + case CORBA::tk_ulonglong: + data_type = Tango::DEV_ULONG64; + break; + + case CORBA::tk_string: + data_type = Tango::DEV_STRING; + break; + + case CORBA::tk_alias: + tc_al = tc->content_type(); + tc_seq = tc_al->content_type(); + switch (tc_seq->kind()) + { + case CORBA::tk_octet: + data_type = Tango::DEVVAR_CHARARRAY; + break; + + case CORBA::tk_short: + data_type = Tango::DEVVAR_SHORTARRAY; + break; + case CORBA::tk_long: - data_type = Tango::DEVVAR_LONGSTRINGARRAY; + data_type = Tango::DEVVAR_LONGARRAY; + break; + + case CORBA::tk_longlong: + data_type = Tango::DEVVAR_LONG64ARRAY; + break; + + case CORBA::tk_float: + data_type = Tango::DEVVAR_FLOATARRAY; break; case CORBA::tk_double: - data_type = Tango::DEVVAR_DOUBLESTRINGARRAY; + data_type = Tango::DEVVAR_DOUBLEARRAY; + break; + + case CORBA::tk_ushort: + data_type = Tango::DEVVAR_USHORTARRAY; + break; + + case CORBA::tk_ulong: + data_type = Tango::DEVVAR_ULONGARRAY; + break; + + case CORBA::tk_ulonglong: + data_type = Tango::DEVVAR_ULONG64ARRAY; + break; + + case CORBA::tk_string: + data_type = Tango::DEVVAR_STRINGARRAY; break; default: break; - } - break; + } + break; + + case CORBA::tk_struct: + tc_field = tc->member_type(0); + tc_al = tc_field->content_type(); + switch (tc_al->kind()) + { + case CORBA::tk_sequence: + tc_seq = tc_al->content_type(); + switch (tc_seq->kind()) + { + case CORBA::tk_long: + data_type = Tango::DEVVAR_LONGSTRINGARRAY; + break; - case CORBA::tk_string: - data_type = Tango::DEV_ENCODED; - break; + case CORBA::tk_double: + data_type = Tango::DEVVAR_DOUBLESTRINGARRAY; + break; - default: - break; - } - break; + default: + break; + } + break; - case CORBA::tk_enum: - data_type = Tango::DEV_STATE; - break; + case CORBA::tk_string: + data_type = Tango::DEV_ENCODED; + break; - default: - break; + default: + break; + } + break; + + case CORBA::tk_enum: + data_type = Tango::DEV_STATE; + break; + + default: + break; - } + } - CORBA::release(tc); - } + CORBA::release(tc); + } - return data_type; + return data_type; } @@ -389,25 +392,25 @@ int DeviceData::get_type() // //----------------------------------------------------------------------------- -bool DeviceData::operator >> (bool& datum) +bool DeviceData::operator>>(bool &datum) { ext->ext_state.reset(); - bool ret = any >>= CORBA::Any::to_boolean(datum); - if (ret == false) - { + bool ret = any >>= CORBA::Any::to_boolean(datum); + if (ret == false) + { if (any_is_null()) return ret; ext->ext_state.set(wrongtype_flag); - if (exceptions_flags.test(wrongtype_flag)) - { - ApiDataExcept::throw_exception((const char*)API_IncompatibleCmdArgumentType, - (const char*)"Cannot extract, data in DeviceData object is not a boolean", - (const char*)"DeviceData::operator>>"); - } - } - return ret; + if (exceptions_flags.test(wrongtype_flag)) + { + ApiDataExcept::throw_exception((const char *) API_IncompatibleCmdArgumentType, + (const char *) "Cannot extract, data in DeviceData object is not a boolean", + (const char *) "DeviceData::operator>>"); + } + } + return ret; } //----------------------------------------------------------------------------- @@ -416,25 +419,25 @@ bool DeviceData::operator >> (bool& datum) // //----------------------------------------------------------------------------- -bool DeviceData::operator >> (short& datum) +bool DeviceData::operator>>(short &datum) { ext->ext_state.reset(); - bool ret = any >>= datum; - if (ret == false) - { + bool ret = any >>= datum; + if (ret == false) + { if (any_is_null()) return ret; ext->ext_state.set(wrongtype_flag); - if (exceptions_flags.test(wrongtype_flag)) - { - ApiDataExcept::throw_exception((const char*)API_IncompatibleCmdArgumentType, - (const char*)"Cannot extract, data in DeviceData object is not a short", - (const char*)"DeviceData::operator>>"); - } - } - return ret; + if (exceptions_flags.test(wrongtype_flag)) + { + ApiDataExcept::throw_exception((const char *) API_IncompatibleCmdArgumentType, + (const char *) "Cannot extract, data in DeviceData object is not a short", + (const char *) "DeviceData::operator>>"); + } + } + return ret; } @@ -444,25 +447,25 @@ bool DeviceData::operator >> (short& datum) // //----------------------------------------------------------------------------- -bool DeviceData::operator >> (unsigned short& datum) +bool DeviceData::operator>>(unsigned short &datum) { ext->ext_state.reset(); - bool ret = any >>= datum; - if (ret == false) - { + bool ret = any >>= datum; + if (ret == false) + { if (any_is_null()) return ret; ext->ext_state.set(wrongtype_flag); - if (exceptions_flags.test(wrongtype_flag)) - { - ApiDataExcept::throw_exception((const char*)API_IncompatibleCmdArgumentType, - (const char*)"Cannot extract, data in DeviceData object is not an unsigned short", - (const char*)"DeviceData::operator>>"); - } - } - return ret; + if (exceptions_flags.test(wrongtype_flag)) + { + ApiDataExcept::throw_exception((const char *) API_IncompatibleCmdArgumentType, + (const char *) "Cannot extract, data in DeviceData object is not an unsigned short", + (const char *) "DeviceData::operator>>"); + } + } + return ret; } //----------------------------------------------------------------------------- @@ -471,25 +474,25 @@ bool DeviceData::operator >> (unsigned short& datum) // //----------------------------------------------------------------------------- -bool DeviceData::operator >> (DevLong& datum) +bool DeviceData::operator>>(DevLong &datum) { ext->ext_state.reset(); - bool ret = (any >>= datum); - if (ret == false) - { + bool ret = (any >>= datum); + if (ret == false) + { if (any_is_null()) return ret; ext->ext_state.set(wrongtype_flag); - if (exceptions_flags.test(wrongtype_flag)) - { - ApiDataExcept::throw_exception((const char*)API_IncompatibleCmdArgumentType, - (const char*)"Cannot extract, data in DeviceData object is not a DevLong (long 32 bits)", - (const char*)"DeviceData::operator>>"); - } - } - return ret; + if (exceptions_flags.test(wrongtype_flag)) + { + ApiDataExcept::throw_exception((const char *) API_IncompatibleCmdArgumentType, + (const char *) "Cannot extract, data in DeviceData object is not a DevLong (long 32 bits)", + (const char *) "DeviceData::operator>>"); + } + } + return ret; } //----------------------------------------------------------------------------- @@ -498,25 +501,25 @@ bool DeviceData::operator >> (DevLong& datum) // //----------------------------------------------------------------------------- -bool DeviceData::operator >> (DevULong& datum) +bool DeviceData::operator>>(DevULong &datum) { ext->ext_state.reset(); - bool ret = any >>= datum; - if (ret == false) - { + bool ret = any >>= datum; + if (ret == false) + { if (any_is_null()) return ret; ext->ext_state.set(wrongtype_flag); - if (exceptions_flags.test(wrongtype_flag)) - { - ApiDataExcept::throw_exception((const char*)API_IncompatibleCmdArgumentType, - (const char*)"Cannot extract, data in DeviceData object is not an DevULong (unsigned long 32 bits)", - (const char*)"DeviceData::operator>>"); - } - } - return ret; + if (exceptions_flags.test(wrongtype_flag)) + { + ApiDataExcept::throw_exception((const char *) API_IncompatibleCmdArgumentType, + (const char *) "Cannot extract, data in DeviceData object is not an DevULong (unsigned long 32 bits)", + (const char *) "DeviceData::operator>>"); + } + } + return ret; } //----------------------------------------------------------------------------- @@ -525,25 +528,25 @@ bool DeviceData::operator >> (DevULong& datum) // //----------------------------------------------------------------------------- -bool DeviceData::operator >> (DevLong64 & datum) +bool DeviceData::operator>>(DevLong64 &datum) { ext->ext_state.reset(); - bool ret = any >>= datum; - if (ret == false) - { + bool ret = any >>= datum; + if (ret == false) + { if (any_is_null()) return ret; ext->ext_state.set(wrongtype_flag); - if (exceptions_flags.test(wrongtype_flag)) - { - ApiDataExcept::throw_exception((const char*)API_IncompatibleCmdArgumentType, - (const char*)"Cannot extract, data in DeviceData object is not a DevLong64 (64 bits long)", - (const char*)"DeviceData::operator>>"); - } - } - return ret; + if (exceptions_flags.test(wrongtype_flag)) + { + ApiDataExcept::throw_exception((const char *) API_IncompatibleCmdArgumentType, + (const char *) "Cannot extract, data in DeviceData object is not a DevLong64 (64 bits long)", + (const char *) "DeviceData::operator>>"); + } + } + return ret; } //----------------------------------------------------------------------------- @@ -552,25 +555,25 @@ bool DeviceData::operator >> (DevLong64 & datum) // //----------------------------------------------------------------------------- -bool DeviceData::operator >> (DevULong64 & datum) +bool DeviceData::operator>>(DevULong64 &datum) { ext->ext_state.reset(); - bool ret = any >>= datum; - if (ret == false) - { + bool ret = any >>= datum; + if (ret == false) + { if (any_is_null()) return ret; ext->ext_state.set(wrongtype_flag); - if (exceptions_flags.test(wrongtype_flag)) - { - ApiDataExcept::throw_exception((const char*)API_IncompatibleCmdArgumentType, - (const char*)"Cannot extract, data in DeviceData object is not a DevULong64 (unsigned 64 bits long)", - (const char*)"DeviceData::operator>>"); - } - } - return ret; + if (exceptions_flags.test(wrongtype_flag)) + { + ApiDataExcept::throw_exception((const char *) API_IncompatibleCmdArgumentType, + (const char *) "Cannot extract, data in DeviceData object is not a DevULong64 (unsigned 64 bits long)", + (const char *) "DeviceData::operator>>"); + } + } + return ret; } //----------------------------------------------------------------------------- @@ -579,25 +582,25 @@ bool DeviceData::operator >> (DevULong64 & datum) // //----------------------------------------------------------------------------- -bool DeviceData::operator >> (float& datum) +bool DeviceData::operator>>(float &datum) { ext->ext_state.reset(); - bool ret = any >>= datum; - if (ret == false) - { + bool ret = any >>= datum; + if (ret == false) + { if (any_is_null()) return ret; ext->ext_state.set(wrongtype_flag); - if (exceptions_flags.test(wrongtype_flag)) - { - ApiDataExcept::throw_exception((const char*)API_IncompatibleCmdArgumentType, - (const char*)"Cannot extract, data in DeviceData object is not a float", - (const char*)"DeviceData::operator>>"); - } - } - return ret; + if (exceptions_flags.test(wrongtype_flag)) + { + ApiDataExcept::throw_exception((const char *) API_IncompatibleCmdArgumentType, + (const char *) "Cannot extract, data in DeviceData object is not a float", + (const char *) "DeviceData::operator>>"); + } + } + return ret; } @@ -607,25 +610,25 @@ bool DeviceData::operator >> (float& datum) // //----------------------------------------------------------------------------- -bool DeviceData::operator >> (double& datum) +bool DeviceData::operator>>(double &datum) { ext->ext_state.reset(); - bool ret = any >>= datum; - if (ret == false) - { + bool ret = any >>= datum; + if (ret == false) + { if (any_is_null()) return ret; ext->ext_state.set(wrongtype_flag); - if (exceptions_flags.test(wrongtype_flag)) - { - ApiDataExcept::throw_exception((const char*)API_IncompatibleCmdArgumentType, - (const char*)"Cannot extract, data in DeviceData object is not a double", - (const char*)"DeviceData::operator>>"); - } - } - return ret; + if (exceptions_flags.test(wrongtype_flag)) + { + ApiDataExcept::throw_exception((const char *) API_IncompatibleCmdArgumentType, + (const char *) "Cannot extract, data in DeviceData object is not a double", + (const char *) "DeviceData::operator>>"); + } + } + return ret; } //----------------------------------------------------------------------------- @@ -634,30 +637,30 @@ bool DeviceData::operator >> (double& datum) // //----------------------------------------------------------------------------- -bool DeviceData::operator >> (string& datum) +bool DeviceData::operator>>(string &datum) { ext->ext_state.reset(); - const char *c_string = NULL; - bool ret = (any >>= c_string); - if (ret == false) - { + const char *c_string = NULL; + bool ret = (any >>= c_string); + if (ret == false) + { if (any_is_null()) return ret; ext->ext_state.set(wrongtype_flag); - if (exceptions_flags.test(wrongtype_flag)) - { - ApiDataExcept::throw_exception((const char*)API_IncompatibleCmdArgumentType, - (const char*)"Cannot extract, data in DeviceData object is not a string", - (const char*)"DeviceData::operator>>"); - } - } - else - { - datum = c_string; - } - return ret; + if (exceptions_flags.test(wrongtype_flag)) + { + ApiDataExcept::throw_exception((const char *) API_IncompatibleCmdArgumentType, + (const char *) "Cannot extract, data in DeviceData object is not a string", + (const char *) "DeviceData::operator>>"); + } + } + else + { + datum = c_string; + } + return ret; } //----------------------------------------------------------------------------- @@ -666,25 +669,25 @@ bool DeviceData::operator >> (string& datum) // //----------------------------------------------------------------------------- -bool DeviceData::operator >> (const char*& datum) +bool DeviceData::operator>>(const char *&datum) { ext->ext_state.reset(); - bool ret = any >>= datum; - if (ret == false) - { + bool ret = any >>= datum; + if (ret == false) + { if (any_is_null()) return ret; ext->ext_state.set(wrongtype_flag); - if (exceptions_flags.test(wrongtype_flag)) - { - ApiDataExcept::throw_exception((const char*)API_IncompatibleCmdArgumentType, - (const char*)"Cannot extract, data in DeviceData object is not an array of char", - (const char*)"DeviceData::operator>>"); - } - } - return ret; + if (exceptions_flags.test(wrongtype_flag)) + { + ApiDataExcept::throw_exception((const char *) API_IncompatibleCmdArgumentType, + (const char *) "Cannot extract, data in DeviceData object is not an array of char", + (const char *) "DeviceData::operator>>"); + } + } + return ret; } //----------------------------------------------------------------------------- @@ -693,25 +696,25 @@ bool DeviceData::operator >> (const char*& datum) // //----------------------------------------------------------------------------- -bool DeviceData::operator >> (DevState& datum) +bool DeviceData::operator>>(DevState &datum) { ext->ext_state.reset(); - bool ret = (any.inout() >>= datum); - if (ret == false) - { + bool ret = (any.inout() >>= datum); + if (ret == false) + { if (any_is_null()) return ret; ext->ext_state.set(wrongtype_flag); - if (exceptions_flags.test(wrongtype_flag)) - { - ApiDataExcept::throw_exception((const char*)API_IncompatibleCmdArgumentType, - (const char*)"Cannot extract, data in DeviceData object is not a DevState", - (const char*)"DeviceData::operator>>"); - } - } - return ret; + if (exceptions_flags.test(wrongtype_flag)) + { + ApiDataExcept::throw_exception((const char *) API_IncompatibleCmdArgumentType, + (const char *) "Cannot extract, data in DeviceData object is not a DevState", + (const char *) "DeviceData::operator>>"); + } + } + return ret; } //----------------------------------------------------------------------------- @@ -720,44 +723,44 @@ bool DeviceData::operator >> (DevState& datum) // //----------------------------------------------------------------------------- -bool DeviceData::operator >> (vector& datum) +bool DeviceData::operator>>(vector &datum) { ext->ext_state.reset(); - const DevVarCharArray *char_array = NULL; - bool ret = (any.inout() >>= char_array); - if (ret == false) - { + const DevVarCharArray *char_array = NULL; + bool ret = (any.inout() >>= char_array); + if (ret == false) + { if (any_is_null()) return ret; ext->ext_state.set(wrongtype_flag); - if (exceptions_flags.test(wrongtype_flag)) - { - ApiDataExcept::throw_exception((const char*)API_IncompatibleCmdArgumentType, - (const char*)"Cannot extract, data in DeviceData object is not an array of char", - (const char*)"DeviceData::operator>>"); - } - } - else - { - if (char_array == NULL) - { + if (exceptions_flags.test(wrongtype_flag)) + { + ApiDataExcept::throw_exception((const char *) API_IncompatibleCmdArgumentType, + (const char *) "Cannot extract, data in DeviceData object is not an array of char", + (const char *) "DeviceData::operator>>"); + } + } + else + { + if (char_array == NULL) + { ext->ext_state.set(wrongtype_flag); - ApiDataExcept::throw_exception((const char *)API_IncoherentDevData, - (const char *)"Incoherent data received from server", - (const char *)"DeviceData::operator>>"); - } + ApiDataExcept::throw_exception((const char *) API_IncoherentDevData, + (const char *) "Incoherent data received from server", + (const char *) "DeviceData::operator>>"); + } else { datum.resize(char_array->length()); - for (unsigned int i=0; ilength(); i++) + for (unsigned int i = 0; i < char_array->length(); i++) { datum[i] = (*char_array)[i]; } } - } - return ret; + } + return ret; } @@ -768,25 +771,25 @@ bool DeviceData::operator >> (vector& datum) //----------------------------------------------------------------------------- -bool DeviceData::operator >> (const DevVarCharArray* &datum) +bool DeviceData::operator>>(const DevVarCharArray *&datum) { ext->ext_state.reset(); - bool ret = (any.inout() >>= datum); - if (ret == false) - { + bool ret = (any.inout() >>= datum); + if (ret == false) + { if (any_is_null()) return ret; ext->ext_state.set(wrongtype_flag); - if (exceptions_flags.test(wrongtype_flag)) - { - ApiDataExcept::throw_exception((const char*)API_IncompatibleCmdArgumentType, - (const char*)"Cannot extract, data in DeviceData object is not an array of char", - (const char*)"DeviceData::operator>>"); - } - } - return ret; + if (exceptions_flags.test(wrongtype_flag)) + { + ApiDataExcept::throw_exception((const char *) API_IncompatibleCmdArgumentType, + (const char *) "Cannot extract, data in DeviceData object is not an array of char", + (const char *) "DeviceData::operator>>"); + } + } + return ret; } //----------------------------------------------------------------------------- @@ -795,44 +798,44 @@ bool DeviceData::operator >> (const DevVarCharArray* &datum) // //----------------------------------------------------------------------------- -bool DeviceData::operator >> (vector& datum) +bool DeviceData::operator>>(vector &datum) { ext->ext_state.reset(); - const DevVarShortArray *short_array = NULL; - bool ret = (any.inout() >>= short_array); - if (ret == false) - { + const DevVarShortArray *short_array = NULL; + bool ret = (any.inout() >>= short_array); + if (ret == false) + { if (any_is_null()) return ret; ext->ext_state.set(wrongtype_flag); - if (exceptions_flags.test(wrongtype_flag)) - { - ApiDataExcept::throw_exception((const char*)API_IncompatibleCmdArgumentType, - (const char*)"Cannot extract, data in DeviceData object is not an array of short", - (const char*)"DeviceData::operator>>"); - } - } - else - { - if (short_array == NULL) - { + if (exceptions_flags.test(wrongtype_flag)) + { + ApiDataExcept::throw_exception((const char *) API_IncompatibleCmdArgumentType, + (const char *) "Cannot extract, data in DeviceData object is not an array of short", + (const char *) "DeviceData::operator>>"); + } + } + else + { + if (short_array == NULL) + { ext->ext_state.set(wrongtype_flag); - ApiDataExcept::throw_exception((const char *)API_IncoherentDevData, - (const char *)"Incoherent data received from server", - (const char *)"DeviceData::operator>>"); - } + ApiDataExcept::throw_exception((const char *) API_IncoherentDevData, + (const char *) "Incoherent data received from server", + (const char *) "DeviceData::operator>>"); + } else { datum.resize(short_array->length()); - for (unsigned int i=0; ilength(); i++) + for (unsigned int i = 0; i < short_array->length(); i++) { datum[i] = (*short_array)[i]; } } - } - return ret; + } + return ret; } @@ -843,26 +846,26 @@ bool DeviceData::operator >> (vector& datum) //----------------------------------------------------------------------------- -bool DeviceData::operator >> (const DevVarShortArray* &datum) +bool DeviceData::operator>>(const DevVarShortArray *&datum) { ext->ext_state.reset(); - bool ret = (any.inout() >>= datum); + bool ret = (any.inout() >>= datum); - if (ret == false) - { + if (ret == false) + { if (any_is_null()) return ret; ext->ext_state.set(wrongtype_flag); - if (exceptions_flags.test(wrongtype_flag)) - { - ApiDataExcept::throw_exception((const char*)API_IncompatibleCmdArgumentType, - (const char*)"Cannot extract, data in DeviceData object is not an array of short", - (const char*)"DeviceData::operator>>"); - } - } - return ret; + if (exceptions_flags.test(wrongtype_flag)) + { + ApiDataExcept::throw_exception((const char *) API_IncompatibleCmdArgumentType, + (const char *) "Cannot extract, data in DeviceData object is not an array of short", + (const char *) "DeviceData::operator>>"); + } + } + return ret; } //----------------------------------------------------------------------------- @@ -871,44 +874,44 @@ bool DeviceData::operator >> (const DevVarShortArray* &datum) // //----------------------------------------------------------------------------- -bool DeviceData::operator >> (vector& datum) +bool DeviceData::operator>>(vector &datum) { ext->ext_state.reset(); - const DevVarUShortArray *ushort_array = NULL; - bool ret = (any.inout() >>= ushort_array); - if (ret == false) - { + const DevVarUShortArray *ushort_array = NULL; + bool ret = (any.inout() >>= ushort_array); + if (ret == false) + { if (any_is_null()) return ret; ext->ext_state.set(wrongtype_flag); - if (exceptions_flags.test(wrongtype_flag)) - { - ApiDataExcept::throw_exception((const char*)API_IncompatibleCmdArgumentType, - (const char*)"Cannot extract, data in DeviceData object is not an array of unsigned short", - (const char*)"DeviceData::operator>>"); - } - } - else - { - if (ushort_array == NULL) - { + if (exceptions_flags.test(wrongtype_flag)) + { + ApiDataExcept::throw_exception((const char *) API_IncompatibleCmdArgumentType, + (const char *) "Cannot extract, data in DeviceData object is not an array of unsigned short", + (const char *) "DeviceData::operator>>"); + } + } + else + { + if (ushort_array == NULL) + { ext->ext_state.set(wrongtype_flag); - ApiDataExcept::throw_exception((const char *)API_IncoherentDevData, - (const char *)"Incoherent data received from server", - (const char *)"DeviceData::operator>>"); - } + ApiDataExcept::throw_exception((const char *) API_IncoherentDevData, + (const char *) "Incoherent data received from server", + (const char *) "DeviceData::operator>>"); + } else { datum.resize(ushort_array->length()); - for (unsigned int i=0; ilength(); i++) + for (unsigned int i = 0; i < ushort_array->length(); i++) { datum[i] = (*ushort_array)[i]; } } - } - return ret; + } + return ret; } @@ -919,25 +922,25 @@ bool DeviceData::operator >> (vector& datum) //----------------------------------------------------------------------------- -bool DeviceData::operator >> (const DevVarUShortArray* &datum) +bool DeviceData::operator>>(const DevVarUShortArray *&datum) { ext->ext_state.reset(); - bool ret = (any.inout() >>= datum); - if (ret == false) - { + bool ret = (any.inout() >>= datum); + if (ret == false) + { if (any_is_null()) return ret; ext->ext_state.set(wrongtype_flag); - if (exceptions_flags.test(wrongtype_flag)) - { - ApiDataExcept::throw_exception((const char*)API_IncompatibleCmdArgumentType, - (const char*)"Cannot extract, data in DeviceData object is not an array of unusigned short", - (const char*)"DeviceData::operator>>"); - } - } - return ret; + if (exceptions_flags.test(wrongtype_flag)) + { + ApiDataExcept::throw_exception((const char *) API_IncompatibleCmdArgumentType, + (const char *) "Cannot extract, data in DeviceData object is not an array of unusigned short", + (const char *) "DeviceData::operator>>"); + } + } + return ret; } //----------------------------------------------------------------------------- @@ -946,44 +949,44 @@ bool DeviceData::operator >> (const DevVarUShortArray* &datum) // //----------------------------------------------------------------------------- -bool DeviceData::operator >> (vector& datum) +bool DeviceData::operator>>(vector &datum) { ext->ext_state.reset(); - const DevVarLongArray *long_array = NULL; + const DevVarLongArray *long_array = NULL; - bool ret = (any.inout() >>= long_array); - if (ret == false) - { + bool ret = (any.inout() >>= long_array); + if (ret == false) + { if (any_is_null()) return ret; ext->ext_state.set(wrongtype_flag); - if (exceptions_flags.test(wrongtype_flag)) - { - ApiDataExcept::throw_exception((const char*)API_IncompatibleCmdArgumentType, - (const char*)"Cannot extract, data in DeviceData object is not an array of DevLong (long 32 bits)", - (const char*)"DeviceData::operator>>"); - } - } - else - { - if (long_array == NULL) - { + if (exceptions_flags.test(wrongtype_flag)) + { + ApiDataExcept::throw_exception((const char *) API_IncompatibleCmdArgumentType, + (const char *) "Cannot extract, data in DeviceData object is not an array of DevLong (long 32 bits)", + (const char *) "DeviceData::operator>>"); + } + } + else + { + if (long_array == NULL) + { ext->ext_state.set(wrongtype_flag); - ApiDataExcept::throw_exception((const char *)API_IncoherentDevData, - (const char *)"Incoherent data received from server", - (const char *)"DeviceData::operator>>"); - } + ApiDataExcept::throw_exception((const char *) API_IncoherentDevData, + (const char *) "Incoherent data received from server", + (const char *) "DeviceData::operator>>"); + } else { datum.resize(long_array->length()); - for (unsigned int i=0; ilength(); i++) + for (unsigned int i = 0; i < long_array->length(); i++) { datum[i] = (*long_array)[i]; } } - } - return ret; + } + return ret; } @@ -994,25 +997,25 @@ bool DeviceData::operator >> (vector& datum) //----------------------------------------------------------------------------- -bool DeviceData::operator >> (const DevVarLongArray* &datum) +bool DeviceData::operator>>(const DevVarLongArray *&datum) { ext->ext_state.reset(); - bool ret = (any.inout() >>= datum); - if (ret == false) - { + bool ret = (any.inout() >>= datum); + if (ret == false) + { if (any_is_null()) return ret; ext->ext_state.set(wrongtype_flag); - if (exceptions_flags.test(wrongtype_flag)) - { - ApiDataExcept::throw_exception((const char*)API_IncompatibleCmdArgumentType, - (const char*)"Cannot extract, data in DeviceData object is not an array of long (32 bits)", - (const char*)"DeviceData::operator>>"); - } - } - return ret; + if (exceptions_flags.test(wrongtype_flag)) + { + ApiDataExcept::throw_exception((const char *) API_IncompatibleCmdArgumentType, + (const char *) "Cannot extract, data in DeviceData object is not an array of long (32 bits)", + (const char *) "DeviceData::operator>>"); + } + } + return ret; } //----------------------------------------------------------------------------- @@ -1021,45 +1024,45 @@ bool DeviceData::operator >> (const DevVarLongArray* &datum) // //----------------------------------------------------------------------------- -bool DeviceData::operator >> (vector& datum) +bool DeviceData::operator>>(vector &datum) { ext->ext_state.reset(); - const DevVarULongArray *ulong_array = NULL; + const DevVarULongArray *ulong_array = NULL; - bool ret = (any.inout() >>= ulong_array); - if (ret == false) - { + bool ret = (any.inout() >>= ulong_array); + if (ret == false) + { if (any_is_null()) return ret; ext->ext_state.set(wrongtype_flag); - if (exceptions_flags.test(wrongtype_flag)) - { - ApiDataExcept::throw_exception((const char*)API_IncompatibleCmdArgumentType, - (const char*)"Cannot extract, data in DeviceData object is not an array of DevULong (unsigned long 32 bits)", - (const char*)"DeviceData::operator>>"); - } - } - else - { - if (ulong_array == NULL) - { + if (exceptions_flags.test(wrongtype_flag)) + { + ApiDataExcept::throw_exception((const char *) API_IncompatibleCmdArgumentType, + (const char *) "Cannot extract, data in DeviceData object is not an array of DevULong (unsigned long 32 bits)", + (const char *) "DeviceData::operator>>"); + } + } + else + { + if (ulong_array == NULL) + { ext->ext_state.set(wrongtype_flag); - ApiDataExcept::throw_exception((const char *)API_IncoherentDevData, - (const char *)"Incoherent data received from server", - (const char *)"DeviceData::operator>>"); - } + ApiDataExcept::throw_exception((const char *) API_IncoherentDevData, + (const char *) "Incoherent data received from server", + (const char *) "DeviceData::operator>>"); + } else { datum.resize(ulong_array->length()); - for (unsigned int i=0; ilength(); i++) + for (unsigned int i = 0; i < ulong_array->length(); i++) { datum[i] = (*ulong_array)[i]; } } - } - return ret; + } + return ret; } @@ -1070,25 +1073,25 @@ bool DeviceData::operator >> (vector& datum) //----------------------------------------------------------------------------- -bool DeviceData::operator >> (const DevVarULongArray* &datum) +bool DeviceData::operator>>(const DevVarULongArray *&datum) { ext->ext_state.reset(); - bool ret = (any.inout() >>= datum); - if (ret == false) - { + bool ret = (any.inout() >>= datum); + if (ret == false) + { if (any_is_null()) return ret; ext->ext_state.set(wrongtype_flag); - if (exceptions_flags.test(wrongtype_flag)) - { - ApiDataExcept::throw_exception((const char*)API_IncompatibleCmdArgumentType, - (const char*)"Cannot extract, data in DeviceData object is not an array of unsigned long (32 bits)", - (const char*)"DeviceData::operator>>"); - } - } - return ret; + if (exceptions_flags.test(wrongtype_flag)) + { + ApiDataExcept::throw_exception((const char *) API_IncompatibleCmdArgumentType, + (const char *) "Cannot extract, data in DeviceData object is not an array of unsigned long (32 bits)", + (const char *) "DeviceData::operator>>"); + } + } + return ret; } @@ -1099,25 +1102,25 @@ bool DeviceData::operator >> (const DevVarULongArray* &datum) //----------------------------------------------------------------------------- -bool DeviceData::operator >> (const DevVarLong64Array* &datum) +bool DeviceData::operator>>(const DevVarLong64Array *&datum) { ext->ext_state.reset(); - bool ret = (any.inout() >>= datum); - if (ret == false) - { + bool ret = (any.inout() >>= datum); + if (ret == false) + { if (any_is_null()) return ret; ext->ext_state.set(wrongtype_flag); - if (exceptions_flags.test(wrongtype_flag)) - { - ApiDataExcept::throw_exception((const char*)API_IncompatibleCmdArgumentType, - (const char*)"Cannot extract, data in DeviceData object is not an array of long (64 bits)", - (const char*)"DeviceData::operator>>"); - } - } - return ret; + if (exceptions_flags.test(wrongtype_flag)) + { + ApiDataExcept::throw_exception((const char *) API_IncompatibleCmdArgumentType, + (const char *) "Cannot extract, data in DeviceData object is not an array of long (64 bits)", + (const char *) "DeviceData::operator>>"); + } + } + return ret; } //----------------------------------------------------------------------------- @@ -1127,25 +1130,25 @@ bool DeviceData::operator >> (const DevVarLong64Array* &datum) //----------------------------------------------------------------------------- -bool DeviceData::operator >> (const DevVarULong64Array* &datum) +bool DeviceData::operator>>(const DevVarULong64Array *&datum) { ext->ext_state.reset(); - bool ret = (any.inout() >>= datum); - if (ret == false) - { + bool ret = (any.inout() >>= datum); + if (ret == false) + { if (any_is_null()) return ret; ext->ext_state.set(wrongtype_flag); - if (exceptions_flags.test(wrongtype_flag)) - { - ApiDataExcept::throw_exception((const char*)API_IncompatibleCmdArgumentType, - (const char*)"Cannot extract, data in DeviceData object is not an array of unsigned long (64 bits)", - (const char*)"DeviceData::operator>>"); - } - } - return ret; + if (exceptions_flags.test(wrongtype_flag)) + { + ApiDataExcept::throw_exception((const char *) API_IncompatibleCmdArgumentType, + (const char *) "Cannot extract, data in DeviceData object is not an array of unsigned long (64 bits)", + (const char *) "DeviceData::operator>>"); + } + } + return ret; } //----------------------------------------------------------------------------- @@ -1154,44 +1157,44 @@ bool DeviceData::operator >> (const DevVarULong64Array* &datum) // //----------------------------------------------------------------------------- -bool DeviceData::operator >> (vector& datum) +bool DeviceData::operator>>(vector &datum) { ext->ext_state.reset(); - const DevVarLong64Array *ll_array = NULL; - bool ret = (any.inout() >>= ll_array); - if (ret == false) - { + const DevVarLong64Array *ll_array = NULL; + bool ret = (any.inout() >>= ll_array); + if (ret == false) + { if (any_is_null()) return ret; ext->ext_state.set(wrongtype_flag); - if (exceptions_flags.test(wrongtype_flag)) - { - ApiDataExcept::throw_exception((const char*)API_IncompatibleCmdArgumentType, - (const char*)"Cannot extract, data in DeviceData object is not an array of DevLong64 (64 bits long)", - (const char*)"DeviceData::operator>>"); - } - } - else - { - if (ll_array == NULL) - { + if (exceptions_flags.test(wrongtype_flag)) + { + ApiDataExcept::throw_exception((const char *) API_IncompatibleCmdArgumentType, + (const char *) "Cannot extract, data in DeviceData object is not an array of DevLong64 (64 bits long)", + (const char *) "DeviceData::operator>>"); + } + } + else + { + if (ll_array == NULL) + { ext->ext_state.set(wrongtype_flag); - ApiDataExcept::throw_exception((const char *)API_IncoherentDevData, - (const char *)"Incoherent data received from server", - (const char *)"DeviceData::operator>>"); - } + ApiDataExcept::throw_exception((const char *) API_IncoherentDevData, + (const char *) "Incoherent data received from server", + (const char *) "DeviceData::operator>>"); + } else { datum.resize(ll_array->length()); - for (unsigned int i=0; ilength(); i++) + for (unsigned int i = 0; i < ll_array->length(); i++) { datum[i] = (*ll_array)[i]; } } - } - return ret; + } + return ret; } //----------------------------------------------------------------------------- @@ -1200,44 +1203,44 @@ bool DeviceData::operator >> (vector& datum) // //----------------------------------------------------------------------------- -bool DeviceData::operator >> (vector& datum) +bool DeviceData::operator>>(vector &datum) { ext->ext_state.reset(); - const DevVarULong64Array *ull_array = NULL; - bool ret = (any.inout() >>= ull_array); - if (ret == false) - { + const DevVarULong64Array *ull_array = NULL; + bool ret = (any.inout() >>= ull_array); + if (ret == false) + { if (any_is_null()) - return ret; + return ret; ext->ext_state.set(wrongtype_flag); - if (exceptions_flags.test(wrongtype_flag)) - { - ApiDataExcept::throw_exception((const char*)API_IncompatibleCmdArgumentType, - (const char*)"Cannot extract, data in DeviceData object is not an array of DevULong64 (unsigned 64 bits long)", - (const char*)"DeviceData::operator>>"); - } - } - else - { - if (ull_array == NULL) - { + if (exceptions_flags.test(wrongtype_flag)) + { + ApiDataExcept::throw_exception((const char *) API_IncompatibleCmdArgumentType, + (const char *) "Cannot extract, data in DeviceData object is not an array of DevULong64 (unsigned 64 bits long)", + (const char *) "DeviceData::operator>>"); + } + } + else + { + if (ull_array == NULL) + { ext->ext_state.set(wrongtype_flag); - ApiDataExcept::throw_exception((const char *)API_IncoherentDevData, - (const char *)"Incoherent data received from server", - (const char *)"DeviceData::operator>>"); - } + ApiDataExcept::throw_exception((const char *) API_IncoherentDevData, + (const char *) "Incoherent data received from server", + (const char *) "DeviceData::operator>>"); + } else { datum.resize(ull_array->length()); - for (unsigned int i=0; ilength(); i++) + for (unsigned int i = 0; i < ull_array->length(); i++) { datum[i] = (*ull_array)[i]; } } - } - return ret; + } + return ret; } //----------------------------------------------------------------------------- @@ -1246,44 +1249,44 @@ bool DeviceData::operator >> (vector& datum) // //----------------------------------------------------------------------------- -bool DeviceData::operator >> (vector& datum) +bool DeviceData::operator>>(vector &datum) { ext->ext_state.reset(); - const DevVarFloatArray *float_array = NULL; - bool ret = (any.inout() >>= float_array); - if (ret == false) - { + const DevVarFloatArray *float_array = NULL; + bool ret = (any.inout() >>= float_array); + if (ret == false) + { if (any_is_null()) return ret; ext->ext_state.set(wrongtype_flag); - if (exceptions_flags.test(wrongtype_flag)) - { - ApiDataExcept::throw_exception((const char*)API_IncompatibleCmdArgumentType, - (const char*)"Cannot extract, data in DeviceData object is not an array of float", - (const char*)"DeviceData::operator>>"); - } - } - else - { - if (float_array == NULL) - { + if (exceptions_flags.test(wrongtype_flag)) + { + ApiDataExcept::throw_exception((const char *) API_IncompatibleCmdArgumentType, + (const char *) "Cannot extract, data in DeviceData object is not an array of float", + (const char *) "DeviceData::operator>>"); + } + } + else + { + if (float_array == NULL) + { ext->ext_state.set(wrongtype_flag); - ApiDataExcept::throw_exception((const char *)API_IncoherentDevData, - (const char *)"Incoherent data received from server", - (const char *)"DeviceData::operator>>"); - } + ApiDataExcept::throw_exception((const char *) API_IncoherentDevData, + (const char *) "Incoherent data received from server", + (const char *) "DeviceData::operator>>"); + } else { datum.resize(float_array->length()); - for (unsigned int i=0; ilength(); i++) + for (unsigned int i = 0; i < float_array->length(); i++) { datum[i] = (*float_array)[i]; } } - } - return ret; + } + return ret; } @@ -1294,25 +1297,25 @@ bool DeviceData::operator >> (vector& datum) //----------------------------------------------------------------------------- -bool DeviceData::operator >> (const DevVarFloatArray* &datum) +bool DeviceData::operator>>(const DevVarFloatArray *&datum) { ext->ext_state.reset(); - bool ret = (any.inout() >>= datum); - if (ret == false) - { + bool ret = (any.inout() >>= datum); + if (ret == false) + { if (any_is_null()) return ret; ext->ext_state.set(wrongtype_flag); - if (exceptions_flags.test(wrongtype_flag)) - { - ApiDataExcept::throw_exception((const char*)API_IncompatibleCmdArgumentType, - (const char*)"Cannot extract, data in DeviceData object is not an array of float", - (const char*)"DeviceData::operator>>"); - } - } - return ret; + if (exceptions_flags.test(wrongtype_flag)) + { + ApiDataExcept::throw_exception((const char *) API_IncompatibleCmdArgumentType, + (const char *) "Cannot extract, data in DeviceData object is not an array of float", + (const char *) "DeviceData::operator>>"); + } + } + return ret; } //----------------------------------------------------------------------------- @@ -1321,45 +1324,45 @@ bool DeviceData::operator >> (const DevVarFloatArray* &datum) // //----------------------------------------------------------------------------- -bool DeviceData::operator >> (vector& datum) +bool DeviceData::operator>>(vector &datum) { ext->ext_state.reset(); - const DevVarDoubleArray *double_array = NULL; + const DevVarDoubleArray *double_array = NULL; - bool ret = (any.inout() >>= double_array); - if (ret == false) - { + bool ret = (any.inout() >>= double_array); + if (ret == false) + { if (any_is_null()) return ret; ext->ext_state.set(wrongtype_flag); - if (exceptions_flags.test(wrongtype_flag)) - { - ApiDataExcept::throw_exception((const char*)API_IncompatibleCmdArgumentType, - (const char*)"Cannot extract, data in DeviceData object is not an array of double", - (const char*)"DeviceData::operator>>"); - } - } - else - { - if (double_array == NULL) - { + if (exceptions_flags.test(wrongtype_flag)) + { + ApiDataExcept::throw_exception((const char *) API_IncompatibleCmdArgumentType, + (const char *) "Cannot extract, data in DeviceData object is not an array of double", + (const char *) "DeviceData::operator>>"); + } + } + else + { + if (double_array == NULL) + { ext->ext_state.set(wrongtype_flag); - ApiDataExcept::throw_exception((const char *)API_IncoherentDevData, - (const char *)"Incoherent data received from server", - (const char *)"DeviceData::operator>>"); - } + ApiDataExcept::throw_exception((const char *) API_IncoherentDevData, + (const char *) "Incoherent data received from server", + (const char *) "DeviceData::operator>>"); + } else { datum.resize(double_array->length()); - for (unsigned int i=0; ilength(); i++) + for (unsigned int i = 0; i < double_array->length(); i++) { datum[i] = (*double_array)[i]; } } - } - return ret; + } + return ret; } @@ -1370,25 +1373,25 @@ bool DeviceData::operator >> (vector& datum) //----------------------------------------------------------------------------- -bool DeviceData::operator >> (const DevVarDoubleArray* &datum) +bool DeviceData::operator>>(const DevVarDoubleArray *&datum) { ext->ext_state.reset(); - bool ret = (any.inout() >>= datum); - if (ret == false) - { + bool ret = (any.inout() >>= datum); + if (ret == false) + { if (any_is_null()) return ret; ext->ext_state.set(wrongtype_flag); - if (exceptions_flags.test(wrongtype_flag)) - { - ApiDataExcept::throw_exception((const char*)API_IncompatibleCmdArgumentType, - (const char*)"Cannot extract, data in DeviceData object is not an array of double", - (const char*)"DeviceData::operator>>"); - } - } - return ret; + if (exceptions_flags.test(wrongtype_flag)) + { + ApiDataExcept::throw_exception((const char *) API_IncompatibleCmdArgumentType, + (const char *) "Cannot extract, data in DeviceData object is not an array of double", + (const char *) "DeviceData::operator>>"); + } + } + return ret; } //----------------------------------------------------------------------------- @@ -1397,45 +1400,45 @@ bool DeviceData::operator >> (const DevVarDoubleArray* &datum) // //----------------------------------------------------------------------------- -bool DeviceData::operator >> (vector& datum) +bool DeviceData::operator>>(vector &datum) { ext->ext_state.reset(); - const DevVarStringArray *string_array = NULL; + const DevVarStringArray *string_array = NULL; - bool ret = (any.inout() >>= string_array); - if (ret == false) - { + bool ret = (any.inout() >>= string_array); + if (ret == false) + { if (any_is_null()) return ret; ext->ext_state.set(wrongtype_flag); - if (exceptions_flags.test(wrongtype_flag)) - { - ApiDataExcept::throw_exception((const char*)API_IncompatibleCmdArgumentType, - (const char*)"Cannot extract, data in DeviceData object is not an array of string", - (const char*)"DeviceData::operator>>"); - } - } - else - { - if (string_array == NULL) - { + if (exceptions_flags.test(wrongtype_flag)) + { + ApiDataExcept::throw_exception((const char *) API_IncompatibleCmdArgumentType, + (const char *) "Cannot extract, data in DeviceData object is not an array of string", + (const char *) "DeviceData::operator>>"); + } + } + else + { + if (string_array == NULL) + { ext->ext_state.set(wrongtype_flag); - ApiDataExcept::throw_exception((const char *)API_IncoherentDevData, - (const char *)"Incoherent data received from server", - (const char *)"DeviceData::operator>>"); - } + ApiDataExcept::throw_exception((const char *) API_IncoherentDevData, + (const char *) "Incoherent data received from server", + (const char *) "DeviceData::operator>>"); + } else { datum.resize(string_array->length()); - for (unsigned int i=0; ilength(); i++) + for (unsigned int i = 0; i < string_array->length(); i++) { datum[i] = (*string_array)[i]; } } - } - return ret; + } + return ret; } @@ -1445,25 +1448,25 @@ bool DeviceData::operator >> (vector& datum) // //----------------------------------------------------------------------------- -bool DeviceData::operator >> (const DevVarStringArray* &datum) +bool DeviceData::operator>>(const DevVarStringArray *&datum) { ext->ext_state.reset(); - bool ret = (any.inout() >>= datum); - if (ret == false) - { + bool ret = (any.inout() >>= datum); + if (ret == false) + { if (any_is_null()) return ret; ext->ext_state.set(wrongtype_flag); - if (exceptions_flags.test(wrongtype_flag)) - { - ApiDataExcept::throw_exception((const char*)API_IncompatibleCmdArgumentType, - (const char*)"Cannot extract, data in DeviceData object is not an array of string", - (const char*)"DeviceData::operator>>"); - } - } - return ret; + if (exceptions_flags.test(wrongtype_flag)) + { + ApiDataExcept::throw_exception((const char *) API_IncompatibleCmdArgumentType, + (const char *) "Cannot extract, data in DeviceData object is not an array of string", + (const char *) "DeviceData::operator>>"); + } + } + return ret; } //----------------------------------------------------------------------------- @@ -1473,25 +1476,25 @@ bool DeviceData::operator >> (const DevVarStringArray* &datum) // //----------------------------------------------------------------------------- -bool DeviceData::operator >> (const DevEncoded* &datum) +bool DeviceData::operator>>(const DevEncoded *&datum) { ext->ext_state.reset(); - bool ret = (any.inout() >>= datum); - if (ret == false) - { + bool ret = (any.inout() >>= datum); + if (ret == false) + { if (any_is_null()) return ret; ext->ext_state.set(wrongtype_flag); - if (exceptions_flags.test(wrongtype_flag)) - { - ApiDataExcept::throw_exception((const char*)API_IncompatibleCmdArgumentType, - (const char*)"Cannot extract, data in DeviceData object is not a DevEncoded", - (const char*)"DeviceData::operator>>"); - } - } - return ret; + if (exceptions_flags.test(wrongtype_flag)) + { + ApiDataExcept::throw_exception((const char *) API_IncompatibleCmdArgumentType, + (const char *) "Cannot extract, data in DeviceData object is not a DevEncoded", + (const char *) "DeviceData::operator>>"); + } + } + return ret; } //----------------------------------------------------------------------------- @@ -1501,45 +1504,45 @@ bool DeviceData::operator >> (const DevEncoded* &datum) // //----------------------------------------------------------------------------- -bool DeviceData::operator >> (DevEncoded &datum) +bool DeviceData::operator>>(DevEncoded &datum) { ext->ext_state.reset(); const DevEncoded *tmp_enc = NULL; - bool ret = (any.inout() >>= tmp_enc); - if (ret == false) - { + bool ret = (any.inout() >>= tmp_enc); + if (ret == false) + { if (any_is_null()) return ret; ext->ext_state.set(wrongtype_flag); - if (exceptions_flags.test(wrongtype_flag)) - { - ApiDataExcept::throw_exception((const char*)API_IncompatibleCmdArgumentType, - (const char*)"Cannot extract, data in DeviceData object is not a DevEncoded", - (const char*)"DeviceData::operator>>"); - } - } - else - { - if (tmp_enc == NULL) - { + if (exceptions_flags.test(wrongtype_flag)) + { + ApiDataExcept::throw_exception((const char *) API_IncompatibleCmdArgumentType, + (const char *) "Cannot extract, data in DeviceData object is not a DevEncoded", + (const char *) "DeviceData::operator>>"); + } + } + else + { + if (tmp_enc == NULL) + { ext->ext_state.set(wrongtype_flag); - ApiDataExcept::throw_exception((const char *)API_IncoherentDevData, - (const char *)"Incoherent data received from server", - (const char *)"DeviceData::operator>>"); - } + ApiDataExcept::throw_exception((const char *) API_IncoherentDevData, + (const char *) "Incoherent data received from server", + (const char *) "DeviceData::operator>>"); + } else { datum.encoded_data.length(tmp_enc->encoded_data.length()); - for (unsigned int i=0; iencoded_data.length(); i++) + for (unsigned int i = 0; i < tmp_enc->encoded_data.length(); i++) { datum.encoded_data[i] = tmp_enc->encoded_data[i]; } datum.encoded_format = Tango::string_dup(tmp_enc->encoded_format); } - } - return ret; + } + return ret; } //----------------------------------------------------------------------------- @@ -1548,15 +1551,15 @@ bool DeviceData::operator >> (DevEncoded &datum) // //----------------------------------------------------------------------------- -void DeviceData::operator << (vector& datum) +void DeviceData::operator<<(vector &datum) { - DevVarCharArray *char_array = new DevVarCharArray(); - char_array->length(datum.size()); - for (unsigned int i=0; ilength(datum.size()); + for (unsigned int i = 0; i < datum.size(); i++) + { + (*char_array)[i] = datum[i]; + } + any.inout() <<= char_array; } //----------------------------------------------------------------------------- @@ -1565,15 +1568,15 @@ void DeviceData::operator << (vector& datum) // //----------------------------------------------------------------------------- -void DeviceData::operator << (vector& datum) +void DeviceData::operator<<(vector &datum) { - DevVarShortArray *short_array = new DevVarShortArray(); - short_array->length(datum.size()); - for (unsigned int i=0; ilength(datum.size()); + for (unsigned int i = 0; i < datum.size(); i++) + { + (*short_array)[i] = datum[i]; + } + any.inout() <<= short_array; } //----------------------------------------------------------------------------- @@ -1582,15 +1585,15 @@ void DeviceData::operator << (vector& datum) // //----------------------------------------------------------------------------- -void DeviceData::operator << (vector& datum) +void DeviceData::operator<<(vector &datum) { - DevVarUShortArray *ushort_array = new DevVarUShortArray(); - ushort_array->length(datum.size()); - for (unsigned int i=0; ilength(datum.size()); + for (unsigned int i = 0; i < datum.size(); i++) + { + (*ushort_array)[i] = datum[i]; + } + any.inout() <<= ushort_array; } @@ -1600,15 +1603,15 @@ void DeviceData::operator << (vector& datum) // //----------------------------------------------------------------------------- -void DeviceData::operator << (vector& datum) +void DeviceData::operator<<(vector &datum) { - DevVarLongArray *long_array = new DevVarLongArray(); - long_array->length(datum.size()); - for (unsigned int i=0; ilength(datum.size()); + for (unsigned int i = 0; i < datum.size(); i++) + { + (*long_array)[i] = datum[i]; + } + any.inout() <<= long_array; } @@ -1618,15 +1621,15 @@ void DeviceData::operator << (vector& datum) // //----------------------------------------------------------------------------- -void DeviceData::operator << (vector& datum) +void DeviceData::operator<<(vector &datum) { - DevVarULongArray *ulong_array = new DevVarULongArray(); - ulong_array->length(datum.size()); - for (unsigned int i=0; ilength(datum.size()); + for (unsigned int i = 0; i < datum.size(); i++) + { + (*ulong_array)[i] = datum[i]; + } + any.inout() <<= ulong_array; } //----------------------------------------------------------------------------- @@ -1635,15 +1638,15 @@ void DeviceData::operator << (vector& datum) // //----------------------------------------------------------------------------- -void DeviceData::operator << (vector& datum) +void DeviceData::operator<<(vector &datum) { - DevVarFloatArray *float_array = new DevVarFloatArray(); - float_array->length(datum.size()); - for (unsigned int i=0; ilength(datum.size()); + for (unsigned int i = 0; i < datum.size(); i++) + { + (*float_array)[i] = datum[i]; + } + any.inout() <<= float_array; } //----------------------------------------------------------------------------- @@ -1652,15 +1655,15 @@ void DeviceData::operator << (vector& datum) // //----------------------------------------------------------------------------- -void DeviceData::operator << (vector& datum) +void DeviceData::operator<<(vector &datum) { - DevVarDoubleArray *double_array = new DevVarDoubleArray(); - double_array->length(datum.size()); - for (unsigned int i=0; ilength(datum.size()); + for (unsigned int i = 0; i < datum.size(); i++) + { + (*double_array)[i] = datum[i]; + } + any.inout() <<= double_array; } @@ -1670,15 +1673,15 @@ void DeviceData::operator << (vector& datum) // //----------------------------------------------------------------------------- -void DeviceData::operator << (vector& datum) +void DeviceData::operator<<(vector &datum) { - DevVarStringArray *string_array = new DevVarStringArray(); - string_array->length(datum.size()); - for (unsigned int i=0; ilength(datum.size()); + for (unsigned int i = 0; i < datum.size(); i++) + { + (*string_array)[i] = string_dup(datum[i].c_str()); + } + any.inout() <<= string_array; } //----------------------------------------------------------------------------- @@ -1687,15 +1690,15 @@ void DeviceData::operator << (vector& datum) // //----------------------------------------------------------------------------- -void DeviceData::operator << (vector& datum) +void DeviceData::operator<<(vector &datum) { - DevVarLong64Array *ll_array = new DevVarLong64Array(); - ll_array->length(datum.size()); - for (unsigned int i=0; ilength(datum.size()); + for (unsigned int i = 0; i < datum.size(); i++) + { + (*ll_array)[i] = datum[i]; + } + any.inout() <<= ll_array; } //----------------------------------------------------------------------------- @@ -1704,15 +1707,15 @@ void DeviceData::operator << (vector& datum) // //----------------------------------------------------------------------------- -void DeviceData::operator << (vector& datum) +void DeviceData::operator<<(vector &datum) { - DevVarULong64Array *ull_array = new DevVarULong64Array(); - ull_array->length(datum.size()); - for (unsigned int i=0; ilength(datum.size()); + for (unsigned int i = 0; i < datum.size(); i++) + { + (*ull_array)[i] = datum[i]; + } + any.inout() <<= ull_array; } //----------------------------------------------------------------------------- @@ -1722,22 +1725,22 @@ void DeviceData::operator << (vector& datum) // //----------------------------------------------------------------------------- -void DeviceData::insert (vector &long_datum, vector& string_datum) +void DeviceData::insert(vector &long_datum, vector &string_datum) { - unsigned int i; + unsigned int i; - DevVarLongStringArray *long_string_array = new DevVarLongStringArray(); - long_string_array->lvalue.length(long_datum.size()); - for (i=0; ilvalue)[i] = long_datum[i]; - } - long_string_array->svalue.length(string_datum.size()); - for (i=0; isvalue)[i] = string_dup(string_datum[i].c_str()); - } - any.inout() <<= long_string_array; + DevVarLongStringArray *long_string_array = new DevVarLongStringArray(); + long_string_array->lvalue.length(long_datum.size()); + for (i = 0; i < long_datum.size(); i++) + { + (long_string_array->lvalue)[i] = long_datum[i]; + } + long_string_array->svalue.length(string_datum.size()); + for (i = 0; i < string_datum.size(); i++) + { + (long_string_array->svalue)[i] = string_dup(string_datum[i].c_str()); + } + any.inout() <<= long_string_array; } //----------------------------------------------------------------------------- @@ -1747,52 +1750,52 @@ void DeviceData::insert (vector &long_datum, vector& string_dat // //----------------------------------------------------------------------------- -bool DeviceData::extract(vector &long_datum, vector& string_datum) +bool DeviceData::extract(vector &long_datum, vector &string_datum) { - bool ret; - ext->ext_state.reset(); + bool ret; + ext->ext_state.reset(); - const DevVarLongStringArray *long_string_array = NULL; - ret = (any.inout() >>= long_string_array); - if (ret == false) - { + const DevVarLongStringArray *long_string_array = NULL; + ret = (any.inout() >>= long_string_array); + if (ret == false) + { if (any_is_null()) return ret; ext->ext_state.set(wrongtype_flag); - if (exceptions_flags.test(wrongtype_flag)) - { - ApiDataExcept::throw_exception((const char*)API_IncompatibleCmdArgumentType, - (const char*)"Cannot extract, data in DeviceData object is not a structure with sequences of string(s) and long(s) (32 bits)", - (const char*)"DeviceData::operator>>"); - } - } - else - { - if (long_string_array == NULL) - { + if (exceptions_flags.test(wrongtype_flag)) + { + ApiDataExcept::throw_exception((const char *) API_IncompatibleCmdArgumentType, + (const char *) "Cannot extract, data in DeviceData object is not a structure with sequences of string(s) and long(s) (32 bits)", + (const char *) "DeviceData::operator>>"); + } + } + else + { + if (long_string_array == NULL) + { ext->ext_state.set(wrongtype_flag); - ApiDataExcept::throw_exception((const char *)API_IncoherentDevData, - (const char *)"Incoherent data received from server", - (const char *)"DeviceData::operator>>"); - } + ApiDataExcept::throw_exception((const char *) API_IncoherentDevData, + (const char *) "Incoherent data received from server", + (const char *) "DeviceData::operator>>"); + } else { unsigned int i; long_datum.resize(long_string_array->lvalue.length()); - for (i=0; ilvalue)[i]; } string_datum.resize(long_string_array->svalue.length()); - for (i=0; isvalue)[i]; } } - } - return ret; + } + return ret; } //----------------------------------------------------------------------------- @@ -1801,25 +1804,25 @@ bool DeviceData::extract(vector &long_datum, vector& string_dat // //----------------------------------------------------------------------------- -bool DeviceData::operator >> (const DevVarLongStringArray* &datum) +bool DeviceData::operator>>(const DevVarLongStringArray *&datum) { ext->ext_state.reset(); - bool ret = (any.inout() >>= datum); - if (ret == false) - { + bool ret = (any.inout() >>= datum); + if (ret == false) + { if (any_is_null()) return ret; ext->ext_state.set(wrongtype_flag); - if (exceptions_flags.test(wrongtype_flag)) - { - ApiDataExcept::throw_exception((const char*)API_IncompatibleCmdArgumentType, - (const char*)"Cannot extract, data in DeviceData object is not a structure with sequences of string(s) and long(s) (32 bits) ", - (const char*)"DeviceData::operator>>"); - } - } - return ret; + if (exceptions_flags.test(wrongtype_flag)) + { + ApiDataExcept::throw_exception((const char *) API_IncompatibleCmdArgumentType, + (const char *) "Cannot extract, data in DeviceData object is not a structure with sequences of string(s) and long(s) (32 bits) ", + (const char *) "DeviceData::operator>>"); + } + } + return ret; } @@ -1830,22 +1833,22 @@ bool DeviceData::operator >> (const DevVarLongStringArray* &datum) // //----------------------------------------------------------------------------- -void DeviceData::insert (vector &double_datum, vector& string_datum) +void DeviceData::insert(vector &double_datum, vector &string_datum) { - unsigned int i; + unsigned int i; - DevVarDoubleStringArray *double_string_array = new DevVarDoubleStringArray(); - double_string_array->dvalue.length(double_datum.size()); - for (i=0; idvalue)[i] = double_datum[i]; - } - double_string_array->svalue.length(string_datum.size()); - for (i=0; isvalue)[i] = string_dup(string_datum[i].c_str()); - } - any.inout() <<= double_string_array; + DevVarDoubleStringArray *double_string_array = new DevVarDoubleStringArray(); + double_string_array->dvalue.length(double_datum.size()); + for (i = 0; i < double_datum.size(); i++) + { + (double_string_array->dvalue)[i] = double_datum[i]; + } + double_string_array->svalue.length(string_datum.size()); + for (i = 0; i < string_datum.size(); i++) + { + (double_string_array->svalue)[i] = string_dup(string_datum[i].c_str()); + } + any.inout() <<= double_string_array; } //----------------------------------------------------------------------------- @@ -1855,52 +1858,52 @@ void DeviceData::insert (vector &double_datum, vector& string_da // //----------------------------------------------------------------------------- -bool DeviceData::extract (vector &double_datum, vector& string_datum) +bool DeviceData::extract(vector &double_datum, vector &string_datum) { - bool ret; - ext->ext_state.reset(); + bool ret; + ext->ext_state.reset(); - const DevVarDoubleStringArray *double_string_array = NULL; - ret = (any.inout() >>= double_string_array); - if (ret == false) - { + const DevVarDoubleStringArray *double_string_array = NULL; + ret = (any.inout() >>= double_string_array); + if (ret == false) + { if (any_is_null()) return ret; ext->ext_state.set(wrongtype_flag); - if (exceptions_flags.test(wrongtype_flag)) - { - ApiDataExcept::throw_exception((const char*)API_IncompatibleCmdArgumentType, - (const char*)"Cannot extract, data in DeviceData object is not a boolean", - (const char*)"DeviceData::operator>>"); - } - } - else - { - if (double_string_array == NULL) - { + if (exceptions_flags.test(wrongtype_flag)) + { + ApiDataExcept::throw_exception((const char *) API_IncompatibleCmdArgumentType, + (const char *) "Cannot extract, data in DeviceData object is not a boolean", + (const char *) "DeviceData::operator>>"); + } + } + else + { + if (double_string_array == NULL) + { ext->ext_state.set(wrongtype_flag); - ApiDataExcept::throw_exception((const char *)API_IncoherentDevData, - (const char *)"Incoherent data received from server", - (const char *)"DeviceData::operator>>"); - } + ApiDataExcept::throw_exception((const char *) API_IncoherentDevData, + (const char *) "Incoherent data received from server", + (const char *) "DeviceData::operator>>"); + } else { unsigned int i; double_datum.resize(double_string_array->dvalue.length()); - for (i=0; idvalue)[i]; } string_datum.resize(double_string_array->svalue.length()); - for (i=0; isvalue)[i]; } } - } - return ret; + } + return ret; } //----------------------------------------------------------------------------- @@ -1909,25 +1912,25 @@ bool DeviceData::extract (vector &double_datum, vector& string_d // //----------------------------------------------------------------------------- -bool DeviceData::operator >> (const DevVarDoubleStringArray* &datum) +bool DeviceData::operator>>(const DevVarDoubleStringArray *&datum) { ext->ext_state.reset(); - bool ret = (any.inout() >>= datum); - if (ret == false) - { + bool ret = (any.inout() >>= datum); + if (ret == false) + { if (any_is_null()) return ret; ext->ext_state.set(wrongtype_flag); - if (exceptions_flags.test(wrongtype_flag)) - { - ApiDataExcept::throw_exception((const char*)API_IncompatibleCmdArgumentType, - (const char*)"Cannot extract, data in DeviceData object is not a structure with sequences of string(s) and double(s) ", - (const char*)"DeviceData::operator>>"); - } - } - return ret; + if (exceptions_flags.test(wrongtype_flag)) + { + ApiDataExcept::throw_exception((const char *) API_IncompatibleCmdArgumentType, + (const char *) "Cannot extract, data in DeviceData object is not a structure with sequences of string(s) and double(s) ", + (const char *) "DeviceData::operator>>"); + } + } + return ret; } //----------------------------------------------------------------------------- @@ -1937,13 +1940,13 @@ bool DeviceData::operator >> (const DevVarDoubleStringArray* &datum) // //----------------------------------------------------------------------------- -void DeviceData::insert (const string &str_datum, vector& char_datum) +void DeviceData::insert(const string &str_datum, vector &char_datum) { - DevEncoded *the_enc = new DevEncoded(); - the_enc->encoded_format = Tango::string_dup(str_datum.c_str()); + DevEncoded *the_enc = new DevEncoded(); + the_enc->encoded_format = Tango::string_dup(str_datum.c_str()); - the_enc->encoded_data.replace(char_datum.size(),char_datum.size(),&(char_datum[0]),false); - any.inout() <<= the_enc; + the_enc->encoded_data.replace(char_datum.size(), char_datum.size(), &(char_datum[0]), false); + any.inout() <<= the_enc; } //----------------------------------------------------------------------------- @@ -1953,13 +1956,13 @@ void DeviceData::insert (const string &str_datum, vector& char_da // //----------------------------------------------------------------------------- -void DeviceData::insert (const char *str_datum, DevVarCharArray *char_datum) +void DeviceData::insert(const char *str_datum, DevVarCharArray *char_datum) { - DevEncoded *the_enc = new DevEncoded(); - the_enc->encoded_format = Tango::string_dup(str_datum); + DevEncoded *the_enc = new DevEncoded(); + the_enc->encoded_format = Tango::string_dup(str_datum); - the_enc->encoded_data.replace(char_datum->length(),char_datum->length(),char_datum->get_buffer(),false); - any.inout() <<= the_enc; + the_enc->encoded_data.replace(char_datum->length(), char_datum->length(), char_datum->get_buffer(), false); + any.inout() <<= the_enc; } //----------------------------------------------------------------------------- @@ -1969,13 +1972,13 @@ void DeviceData::insert (const char *str_datum, DevVarCharArray *char_datum) // //----------------------------------------------------------------------------- -void DeviceData::insert (const char *str_datum,unsigned char *data,unsigned int length) +void DeviceData::insert(const char *str_datum, unsigned char *data, unsigned int length) { - DevEncoded *the_enc = new DevEncoded(); - the_enc->encoded_format = Tango::string_dup(str_datum); + DevEncoded *the_enc = new DevEncoded(); + the_enc->encoded_format = Tango::string_dup(str_datum); - the_enc->encoded_data.replace(length,length,data,false); - any.inout() <<= the_enc; + the_enc->encoded_data.replace(length, length, data, false); + any.inout() <<= the_enc; } //----------------------------------------------------------------------------- @@ -1986,42 +1989,42 @@ void DeviceData::insert (const char *str_datum,unsigned char *data,unsigned int // //----------------------------------------------------------------------------- -bool DeviceData::extract(const char *&str,const unsigned char *&data_ptr,unsigned int &data_size) +bool DeviceData::extract(const char *&str, const unsigned char *&data_ptr, unsigned int &data_size) { ext->ext_state.reset(); const DevEncoded *tmp_enc = NULL; - bool ret = (any.inout() >>= tmp_enc); - if (ret == false) - { + bool ret = (any.inout() >>= tmp_enc); + if (ret == false) + { if (any_is_null()) return ret; ext->ext_state.set(wrongtype_flag); - if (exceptions_flags.test(wrongtype_flag)) - { - ApiDataExcept::throw_exception((const char*)API_IncompatibleCmdArgumentType, - (const char*)"Cannot extract, data in DeviceData object is not a DevEncoded", - (const char*)"DeviceData::extract"); - } - } - else - { - if (tmp_enc == NULL) - { + if (exceptions_flags.test(wrongtype_flag)) + { + ApiDataExcept::throw_exception((const char *) API_IncompatibleCmdArgumentType, + (const char *) "Cannot extract, data in DeviceData object is not a DevEncoded", + (const char *) "DeviceData::extract"); + } + } + else + { + if (tmp_enc == NULL) + { ext->ext_state.set(wrongtype_flag); - ApiDataExcept::throw_exception((const char *)API_IncoherentDevData, - (const char *)"Incoherent data received from server", - (const char *)"DeviceData::extract"); - } + ApiDataExcept::throw_exception((const char *) API_IncoherentDevData, + (const char *) "Incoherent data received from server", + (const char *) "DeviceData::extract"); + } else { str = tmp_enc->encoded_format; data_size = tmp_enc->encoded_data.length(); data_ptr = tmp_enc->encoded_data.get_buffer(); } - } - return ret; + } + return ret; } //----------------------------------------------------------------------------- @@ -2032,46 +2035,66 @@ bool DeviceData::extract(const char *&str,const unsigned char *&data_ptr,unsigne // //----------------------------------------------------------------------------- -bool DeviceData::extract(string &str,vector &datum) +bool DeviceData::extract(string &str, vector &datum) { ext->ext_state.reset(); const DevEncoded *tmp_enc = NULL; - bool ret = (any.inout() >>= tmp_enc); - if (ret == false) - { + bool ret = (any.inout() >>= tmp_enc); + if (ret == false) + { if (any_is_null()) return ret; ext->ext_state.set(wrongtype_flag); - if (exceptions_flags.test(wrongtype_flag)) - { - ApiDataExcept::throw_exception((const char*)API_IncompatibleCmdArgumentType, - (const char*)"Cannot extract, data in DeviceData object is not a DevEncoded", - (const char*)"DeviceData::extract"); - } - } - else - { - if (tmp_enc == NULL) - { + if (exceptions_flags.test(wrongtype_flag)) + { + ApiDataExcept::throw_exception((const char *) API_IncompatibleCmdArgumentType, + (const char *) "Cannot extract, data in DeviceData object is not a DevEncoded", + (const char *) "DeviceData::extract"); + } + } + else + { + if (tmp_enc == NULL) + { ext->ext_state.set(wrongtype_flag); - ApiDataExcept::throw_exception((const char *)API_IncoherentDevData, - (const char *)"Incoherent data received from server", - (const char *)"DeviceData::extract"); - } + ApiDataExcept::throw_exception((const char *) API_IncoherentDevData, + (const char *) "Incoherent data received from server", + (const char *) "DeviceData::extract"); + } else { - str = tmp_enc->encoded_format; + str = tmp_enc->encoded_format; - unsigned long length = tmp_enc->encoded_data.length(); - datum.resize(length); - datum.assign(tmp_enc->encoded_data.get_buffer(),tmp_enc->encoded_data.get_buffer() + length); + unsigned long length = tmp_enc->encoded_data.length(); + datum.resize(length); + datum.assign(tmp_enc->encoded_data.get_buffer(), tmp_enc->encoded_data.get_buffer() + length); } - } - return ret; + } + return ret; } +bool DeviceData::extract(DevicePipeBlob *blob) +{ + ext->ext_state.reset(); + + if (any_is_null()) return false; + + DevPipeBlob *tmp_blob = nullptr; + bool result = any.inout() >>= tmp_blob; + checkResult(result, tmp_blob); + blob->set_name(string(tmp_blob->name)); + blob->set_data_elt_nb(tmp_blob->blob_data.length()); + for (size_t i = 0; i < tmp_blob->blob_data.length(); ++i) + { + blob->set_current_delt_name(string(tmp_blob->blob_data[i].name)); + //TODO + } + return result; +} + + //+------------------------------------------------------------------------- // // operator overloading : << @@ -2081,221 +2104,248 @@ bool DeviceData::extract(string &str,vector &datum) // //-------------------------------------------------------------------------- -ostream &operator<<(ostream &o_str,DeviceData &dd) -{ - if (dd.any_is_null() == true) - o_str << "No data in DeviceData object"; - else - { - CORBA::TypeCode_ptr tc; - CORBA::TypeCode_var tc_al; - CORBA::TypeCode_var tc_seq; - CORBA::TypeCode_var tc_field; - - tc = dd.any->type(); - switch(tc->kind()) - { - case CORBA::tk_boolean: - bool bo_tmp; - dd.any >>= CORBA::Any::to_boolean(bo_tmp); - if (bo_tmp == true) - o_str << "true" ; - else - o_str << "false" ; - break; - - case CORBA::tk_short: - short tmp; - dd.any >>= tmp; - o_str << tmp; - break; - - case CORBA::tk_long: - Tango::DevLong l_tmp; - dd.any >>= l_tmp; - o_str << l_tmp; - break; - - case CORBA::tk_longlong: +ostream &operator<<(ostream &o_str, DeviceData &dd) +{ + if (dd.any_is_null() == true) + o_str << "No data in DeviceData object"; + else + { + CORBA::TypeCode_ptr tc; + CORBA::TypeCode_var tc_al; + CORBA::TypeCode_var tc_seq; + CORBA::TypeCode_var tc_field; + + tc = dd.any->type(); + switch (tc->kind()) + { + case CORBA::tk_boolean: + bool bo_tmp; + dd.any >>= CORBA::Any::to_boolean(bo_tmp); + if (bo_tmp == true) + o_str << "true"; + else + o_str << "false"; + break; + + case CORBA::tk_short: + short tmp; + dd.any >>= tmp; + o_str << tmp; + break; + + case CORBA::tk_long: + Tango::DevLong l_tmp; + dd.any >>= l_tmp; + o_str << l_tmp; + break; + + case CORBA::tk_longlong: #ifdef TANGO_LONG32 - long long ll_tmp; + long long ll_tmp; #else - long ll_tmp; + long ll_tmp; #endif - dd.any >>= ll_tmp; - o_str << ll_tmp; - break; - - case CORBA::tk_float: - float f_tmp; - dd.any >>= f_tmp; - o_str << f_tmp; - break; - - case CORBA::tk_double: - double db_tmp; - dd.any >>= db_tmp; - o_str << db_tmp; - break; - - case CORBA::tk_ushort: - unsigned short us_tmp; - dd.any >>= us_tmp; - o_str << us_tmp; - break; - - case CORBA::tk_ulong: - Tango::DevULong ul_tmp; - dd.any >>= ul_tmp; - o_str << ul_tmp; - break; - - case CORBA::tk_ulonglong: - unsigned long ull_tmp; - dd.any >>= ull_tmp; - o_str << ull_tmp; - break; - - case CORBA::tk_string: - const char *str_tmp; - dd.any >>= str_tmp; - o_str << str_tmp; - break; - - case CORBA::tk_alias: - tc_al = tc->content_type(); - tc_seq = tc_al->content_type(); - switch (tc_seq->kind()) - { - case CORBA::tk_octet: - Tango::DevVarCharArray *ch_arr; - dd.any.inout() >>= ch_arr; - o_str << *ch_arr; - break; - - case CORBA::tk_short: - Tango::DevVarShortArray *sh_arr; - dd.any.inout() >>= sh_arr; - o_str << *sh_arr; - break; - - case CORBA::tk_long: - Tango::DevVarLongArray *lg_arr; - dd.any.inout() >>= lg_arr; - o_str << *lg_arr; - break; - - case CORBA::tk_longlong: - Tango::DevVarLong64Array *llg_arr; - dd.any.inout() >>= llg_arr; - o_str << *llg_arr; - break; - - case CORBA::tk_float: - Tango::DevVarFloatArray *fl_arr; - dd.any.inout() >>= fl_arr; - o_str << *fl_arr; - break; - - case CORBA::tk_double: - Tango::DevVarDoubleArray *db_arr; - dd.any.inout() >>= db_arr; - o_str << *db_arr; - break; - - case CORBA::tk_ushort: - Tango::DevVarUShortArray *us_arr; - dd.any.inout() >>= us_arr; - o_str << *us_arr; - break; - - case CORBA::tk_ulong: - Tango::DevVarULongArray *ul_arr; - dd.any.inout() >>= ul_arr; - o_str << *ul_arr; - break; - - case CORBA::tk_ulonglong: - Tango::DevVarULong64Array *ull_arr; - dd.any.inout() >>= ull_arr; - o_str << *ull_arr; - break; - - case CORBA::tk_string: - Tango::DevVarStringArray *str_arr; - dd.any.inout() >>= str_arr; - o_str << *str_arr; - break; - - default: - break; - } - break; - - case CORBA::tk_struct: - tc_field = tc->member_type(0); - tc_al = tc_field->content_type(); - switch (tc_al->kind()) - { - case CORBA::tk_sequence: - tc_seq = tc_al->content_type(); - switch (tc_seq->kind()) - { - case CORBA::tk_long: - Tango::DevVarLongStringArray *lgstr_arr; - dd.any.inout() >>= lgstr_arr; - o_str << lgstr_arr->lvalue << endl; - o_str << lgstr_arr->svalue; - break; - - case CORBA::tk_double: - Tango::DevVarDoubleStringArray *dbstr_arr; - dd.any.inout() >>= dbstr_arr; - o_str << dbstr_arr->dvalue << endl; - o_str << dbstr_arr->svalue; - break; - - default: - break; - } - break; - - case CORBA::tk_string: - Tango::DevEncoded *enc; - dd.any.inout() >>= enc; - o_str << "Encoding string: " << enc->encoded_format << endl; - { - long nb_data_elt = enc->encoded_data.length(); - for (long i = 0;i < nb_data_elt;i++) + dd.any >>= ll_tmp; + o_str << ll_tmp; + break; + + case CORBA::tk_float: + float f_tmp; + dd.any >>= f_tmp; + o_str << f_tmp; + break; + + case CORBA::tk_double: + double db_tmp; + dd.any >>= db_tmp; + o_str << db_tmp; + break; + + case CORBA::tk_ushort: + unsigned short us_tmp; + dd.any >>= us_tmp; + o_str << us_tmp; + break; + + case CORBA::tk_ulong: + Tango::DevULong ul_tmp; + dd.any >>= ul_tmp; + o_str << ul_tmp; + break; + + case CORBA::tk_ulonglong: + unsigned long ull_tmp; + dd.any >>= ull_tmp; + o_str << ull_tmp; + break; + + case CORBA::tk_string: + const char *str_tmp; + dd.any >>= str_tmp; + o_str << str_tmp; + break; + + case CORBA::tk_alias: + tc_al = tc->content_type(); + tc_seq = tc_al->content_type(); + switch (tc_seq->kind()) + { + case CORBA::tk_octet: + Tango::DevVarCharArray *ch_arr; + dd.any.inout() >>= ch_arr; + o_str << *ch_arr; + break; + + case CORBA::tk_short: + Tango::DevVarShortArray *sh_arr; + dd.any.inout() >>= sh_arr; + o_str << *sh_arr; + break; + + case CORBA::tk_long: + Tango::DevVarLongArray *lg_arr; + dd.any.inout() >>= lg_arr; + o_str << *lg_arr; + break; + + case CORBA::tk_longlong: + Tango::DevVarLong64Array *llg_arr; + dd.any.inout() >>= llg_arr; + o_str << *llg_arr; + break; + + case CORBA::tk_float: + Tango::DevVarFloatArray *fl_arr; + dd.any.inout() >>= fl_arr; + o_str << *fl_arr; + break; + + case CORBA::tk_double: + Tango::DevVarDoubleArray *db_arr; + dd.any.inout() >>= db_arr; + o_str << *db_arr; + break; + + case CORBA::tk_ushort: + Tango::DevVarUShortArray *us_arr; + dd.any.inout() >>= us_arr; + o_str << *us_arr; + break; + + case CORBA::tk_ulong: + Tango::DevVarULongArray *ul_arr; + dd.any.inout() >>= ul_arr; + o_str << *ul_arr; + break; + + case CORBA::tk_ulonglong: + Tango::DevVarULong64Array *ull_arr; + dd.any.inout() >>= ull_arr; + o_str << *ull_arr; + break; + + case CORBA::tk_string: + Tango::DevVarStringArray *str_arr; + dd.any.inout() >>= str_arr; + o_str << *str_arr; + break; + + default: + break; + } + break; + + case CORBA::tk_struct: + tc_field = tc->member_type(0); + tc_al = tc_field->content_type(); + switch (tc_al->kind()) + { + case CORBA::tk_sequence: + tc_seq = tc_al->content_type(); + switch (tc_seq->kind()) { - o_str << "Data element number [" << i << "] = " << (int)enc->encoded_data[i]; - if (i < (nb_data_elt - 1)) - o_str << '\n'; + case CORBA::tk_long: + Tango::DevVarLongStringArray *lgstr_arr; + dd.any.inout() >>= lgstr_arr; + o_str << lgstr_arr->lvalue << endl; + o_str << lgstr_arr->svalue; + break; + + case CORBA::tk_double: + Tango::DevVarDoubleStringArray *dbstr_arr; + dd.any.inout() >>= dbstr_arr; + o_str << dbstr_arr->dvalue << endl; + o_str << dbstr_arr->svalue; + break; + + default: + break; } - } - break; + break; - default: - break; - } - break; + case CORBA::tk_string: + Tango::DevEncoded *enc; + dd.any.inout() >>= enc; + o_str << "Encoding string: " << enc->encoded_format << endl; + { + long nb_data_elt = enc->encoded_data.length(); + for (long i = 0; i < nb_data_elt; i++) + { + o_str << "Data element number [" << i << "] = " << (int) enc->encoded_data[i]; + if (i < (nb_data_elt - 1)) + o_str << '\n'; + } + } + break; - case CORBA::tk_enum: - Tango::DevState tmp_state; - dd.any.inout() >>= tmp_state; - o_str << Tango::DevStateName[tmp_state]; - break; + default: + break; + } + break; - default: - break; + case CORBA::tk_enum: + Tango::DevState tmp_state; + dd.any.inout() >>= tmp_state; + o_str << Tango::DevStateName[tmp_state]; + break; - } + default: + break; + + } - CORBA::release(tc); - } + CORBA::release(tc); + } - return o_str; + return o_str; +} +void DeviceData::insert(DevicePipeBlob &blob) +{ + insert(&blob); } +void DeviceData::insert(DevicePipeBlob *blob) +{ + DevPipeBlob *tmp = new DevPipeBlob(); + + DevVarPipeDataEltArray *tmp_ptr; + tmp_ptr = blob->get_insert_data(); + const string &bl_name = blob->get_name(); + if (bl_name.size() != 0) + tmp->name = bl_name.c_str(); + if (tmp_ptr == Tango_nullptr) + { + Except::throw_exception(API_PipeNoDataElement, "No data in pipe!", "DeviceData::insert(DevicePipeBlob)"); + } + + DevULong max, len; + max = tmp_ptr->maximum(); + len = tmp_ptr->length(); + tmp->blob_data.replace(max, len, tmp_ptr->get_buffer((DevBoolean) true), true); + + any.inout() <<= tmp; + + delete tmp_ptr; +} } // End of Tango namepsace diff --git a/src/server/deviceclass.cpp b/src/server/deviceclass.cpp index b338230dc..8c81914a6 100644 --- a/src/server/deviceclass.cpp +++ b/src/server/deviceclass.cpp @@ -53,20 +53,21 @@ #endif extern omni_thread::key_t key_py_data; + namespace Tango { static void lower_cmd_name(string &cmd) { - transform(cmd.begin(),cmd.end(),cmd.begin(),::tolower); + transform(cmd.begin(), cmd.end(), cmd.begin(), ::tolower); } -bool less_than_pipe (Pipe *a,Pipe *b) +bool less_than_pipe(Pipe *a, Pipe *b) { - if (a->get_name() < b->get_name()) - return true; - else - return false; + if (a->get_name() < b->get_name()) + return true; + else + return false; } //+------------------------------------------------------------------------------------------------------------------ @@ -79,62 +80,63 @@ bool less_than_pipe (Pipe *a,Pipe *b) // //------------------------------------------------------------------------------------------------------------------- -DeviceClass::DeviceClass(string &s):name(s),ext(new DeviceClassExt), - only_one("class"),default_cmd(NULL),py_class(false),device_factory_done(false) +DeviceClass::DeviceClass(string &s) + : name(s), ext(new DeviceClassExt), + only_one("class"), default_cmd(NULL), py_class(false), device_factory_done(false) { // // Create the associated DbClass object // - db_class = new DbClass(name,Tango::Util::instance()->get_database()); + db_class = new DbClass(name, Tango::Util::instance()->get_database()); // // initialise command_list with State, Status and Init // - try - { - command_list.push_back(new DevStatusCmd("Status",Tango::DEV_VOID,Tango::DEV_STRING)); - command_list[0]->set_out_type_desc("Device status"); - command_list.push_back(new DevStateCmd("State",Tango::DEV_VOID,Tango::DEV_STATE)); - command_list[1]->set_out_type_desc("Device state"); - command_list.push_back(new DevInitCmd("Init",Tango::DEV_VOID,Tango::DEV_VOID)); - } - catch (bad_alloc &) - { - if (command_list.empty() == false) - { - for(unsigned long i = 0;i < command_list.size();i++) - delete command_list[i]; - command_list.clear(); - } - throw; - } + try + { + command_list.push_back(new DevStatusCmd("Status", Tango::DEV_VOID, Tango::DEV_STRING)); + command_list[0]->set_out_type_desc("Device status"); + command_list.push_back(new DevStateCmd("State", Tango::DEV_VOID, Tango::DEV_STATE)); + command_list[1]->set_out_type_desc("Device state"); + command_list.push_back(new DevInitCmd("Init", Tango::DEV_VOID, Tango::DEV_VOID)); + } + catch (bad_alloc &) + { + if (command_list.empty() == false) + { + for (unsigned long i = 0; i < command_list.size(); i++) + delete command_list[i]; + command_list.clear(); + } + throw; + } // // Retrieve basic class resource // - get_class_system_resource(); + get_class_system_resource(); // // Create the multi class attribute object // - class_attr = new MultiClassAttribute(); + class_attr = new MultiClassAttribute(); // // Create the multi class pipe object // - class_pipe = new MultiClassPipe(); + class_pipe = new MultiClassPipe(); // // Give a default value for device type // - type = NotSet; + type = NotSet; } @@ -155,85 +157,85 @@ void DeviceClass::get_class_system_resource() // Try to retrieve the class resource doc_url // - Tango::Util *tg = Tango::Util::instance(); - if (tg->_UseDb == true) - { - Database *db = tg->get_database(); - DbData db_data; - - db_data.push_back(DbDatum("doc_url")); - db_data.push_back(DbDatum("cvs_tag")); - db_data.push_back(DbDatum("cvs_location")); - db_data.push_back(DbDatum("AllowedAccessCmd")); - db_data.push_back(DbDatum("svn_tag")); - db_data.push_back(DbDatum("svn_location")); - - try - { - db->get_class_property(name,db_data,tg->get_db_cache()); - } - catch (Tango::DevFailed &) - { - TangoSys_OMemStream o; - o << "Database error while trying to retrieve properties for class " << name.c_str() << ends; - - Except::throw_exception((const char *)API_DatabaseAccess, - o.str(), - (const char *)"DeviceClass::get_class_system_resource"); - } - - if (db_data[1].is_empty() == false) - db_data[1] >> cvs_tag; - if (db_data[2].is_empty() == false) - db_data[2] >> cvs_location; + Tango::Util *tg = Tango::Util::instance(); + if (tg->_UseDb == true) + { + Database *db = tg->get_database(); + DbData db_data; + + db_data.push_back(DbDatum("doc_url")); + db_data.push_back(DbDatum("cvs_tag")); + db_data.push_back(DbDatum("cvs_location")); + db_data.push_back(DbDatum("AllowedAccessCmd")); + db_data.push_back(DbDatum("svn_tag")); + db_data.push_back(DbDatum("svn_location")); + + try + { + db->get_class_property(name, db_data, tg->get_db_cache()); + } + catch (Tango::DevFailed &) + { + TangoSys_OMemStream o; + o << "Database error while trying to retrieve properties for class " << name.c_str() << ends; + + Except::throw_exception((const char *) API_DatabaseAccess, + o.str(), + (const char *) "DeviceClass::get_class_system_resource"); + } + + if (db_data[1].is_empty() == false) + db_data[1] >> cvs_tag; + if (db_data[2].is_empty() == false) + db_data[2] >> cvs_location; // // Init allowed commands vector (in lowercase letters) // - if (db_data[3].is_empty() == false) - { - db_data[3] >> allowed_cmds; - for_each(allowed_cmds.begin(),allowed_cmds.end(),lower_cmd_name); - } - - if (db_data[0].is_empty() == true) - { - cout4 << "doc_url property for class " << name << " is not defined in database" << endl; - try - { - db->get_class_property("Default",db_data,tg->get_db_cache()); - } - catch (Tango::DevFailed &) - { - TangoSys_OMemStream o; - o << "Database error while trying to retrieve properties for class " << name.c_str() << ends; - - Except::throw_exception((const char *)API_DatabaseAccess, - o.str(), - (const char *)"DeviceClass::get_class_system_resource"); - } - - if (db_data[0].is_empty() == true) - { - doc_url = DefaultDocUrl; - } - else - db_data[0] >> doc_url; - } - else - db_data[0] >> doc_url; - - if (db_data[4].is_empty() == false) - db_data[4] >> svn_tag; - if (db_data[5].is_empty() == false) - db_data[5] >> svn_location; - - } - else - { - doc_url = DefaultDocUrl; - } + if (db_data[3].is_empty() == false) + { + db_data[3] >> allowed_cmds; + for_each(allowed_cmds.begin(), allowed_cmds.end(), lower_cmd_name); + } + + if (db_data[0].is_empty() == true) + { + cout4 << "doc_url property for class " << name << " is not defined in database" << endl; + try + { + db->get_class_property("Default", db_data, tg->get_db_cache()); + } + catch (Tango::DevFailed &) + { + TangoSys_OMemStream o; + o << "Database error while trying to retrieve properties for class " << name.c_str() << ends; + + Except::throw_exception((const char *) API_DatabaseAccess, + o.str(), + (const char *) "DeviceClass::get_class_system_resource"); + } + + if (db_data[0].is_empty() == true) + { + doc_url = DefaultDocUrl; + } + else + db_data[0] >> doc_url; + } + else + db_data[0] >> doc_url; + + if (db_data[4].is_empty() == false) + db_data[4] >> svn_tag; + if (db_data[5].is_empty() == false) + db_data[5] >> svn_location; + + } + else + { + doc_url = DefaultDocUrl; + } } //--------------------------------------------------------------------------------------------------------------------- @@ -253,402 +255,412 @@ void DeviceClass::get_class_system_resource() // //-------------------------------------------------------------------------------------------------------------------- -void DeviceClass::set_memorized_values(bool all,long idx,bool from_init) +void DeviceClass::set_memorized_values(bool all, long idx, bool from_init) { - cout4 << "Entering DeviceClass::set_memorized_values() method" << endl; + cout4 << "Entering DeviceClass::set_memorized_values() method" << endl; - short sh; - Tango::DevVarShortArray sh_seq(1); - sh_seq.length(1); + short sh; + Tango::DevVarShortArray sh_seq(1); + sh_seq.length(1); - Tango::DevLong lg; - Tango::DevVarLongArray lg_seq(1); - lg_seq.length(1); + Tango::DevLong lg; + Tango::DevVarLongArray lg_seq(1); + lg_seq.length(1); - double db; - Tango::DevVarDoubleArray db_seq(1); - db_seq.length(1); + double db; + Tango::DevVarDoubleArray db_seq(1); + db_seq.length(1); - Tango::DevString tmp_str; - Tango::DevVarStringArray str_seq(1); - str_seq.length(1); + Tango::DevString tmp_str; + Tango::DevVarStringArray str_seq(1); + str_seq.length(1); - float fl; - Tango::DevVarFloatArray fl_seq(1); - fl_seq.length(1); + float fl; + Tango::DevVarFloatArray fl_seq(1); + fl_seq.length(1); - Tango::DevBoolean boo; - Tango::DevVarBooleanArray boo_seq(1); - boo_seq.length(1); + Tango::DevBoolean boo; + Tango::DevVarBooleanArray boo_seq(1); + boo_seq.length(1); - Tango::DevUShort ush; - Tango::DevVarUShortArray ush_seq(1); - ush_seq.length(1); + Tango::DevUShort ush; + Tango::DevVarUShortArray ush_seq(1); + ush_seq.length(1); - Tango::DevUChar uch; - Tango::DevVarCharArray uch_seq(1); - uch_seq.length(1); + Tango::DevUChar uch; + Tango::DevVarCharArray uch_seq(1); + uch_seq.length(1); - Tango::DevULong ulg; - Tango::DevVarULongArray ulg_seq(1); - ulg_seq.length(1); + Tango::DevULong ulg; + Tango::DevVarULongArray ulg_seq(1); + ulg_seq.length(1); - Tango::DevLong64 lg64; - Tango::DevVarLong64Array lg64_seq(1); - lg64_seq.length(1); + Tango::DevLong64 lg64; + Tango::DevVarLong64Array lg64_seq(1); + lg64_seq.length(1); - Tango::DevULong64 ulg64; - Tango::DevVarULong64Array ulg64_seq(1); - ulg64_seq.length(1); + Tango::DevULong64 ulg64; + Tango::DevVarULong64Array ulg64_seq(1); + ulg64_seq.length(1); // // Set loop start and stop limits // - unsigned long start,stop; - if (all == true) - { - start = 0; - stop = device_list.size(); - } - else - { - start = idx; - stop = idx + 1; - } + unsigned long start, stop; + if (all == true) + { + start = 0; + stop = device_list.size(); + } + else + { + start = idx; + stop = idx + 1; + } - for (unsigned long i = start;i < stop;i++) - { + for (unsigned long i = start; i < stop; i++) + { // // This feature is available only for devices implementing IDL release 3 and above // - if (device_list[i]->get_dev_idl_version() < 3) - continue; + if (device_list[i]->get_dev_idl_version() < 3) + continue; // // Get list of device writable attributes // - AttributeValueList att_val(10); - vector &att_list = device_list[i]->get_device_attr()->get_w_attr_list(); + AttributeValueList att_val(10); + vector &att_list = device_list[i]->get_device_attr()->get_w_attr_list(); - long nb_wr = 0; - for (unsigned long j = 0;j < att_list.size();j++) - { + long nb_wr = 0; + for (unsigned long j = 0; j < att_list.size(); j++) + { - WAttribute &att = device_list[i]->get_device_attr()->get_w_attr_by_ind(att_list[j]); + WAttribute &att = device_list[i]->get_device_attr()->get_w_attr_by_ind(att_list[j]); - if (att.is_memorized() == true) - { + if (att.is_memorized() == true) + { - string &mem_value = att.get_mem_value(); - if (mem_value != MemNotUsed) - { - nb_wr++; - att_val.length(nb_wr); + string &mem_value = att.get_mem_value(); + if (mem_value != MemNotUsed) + { + nb_wr++; + att_val.length(nb_wr); // // In order to not send a new time the already memorized value into db, mark it as not memorized before writing // the value // - att.set_memorized(false); + att.set_memorized(false); // // The memorized value gotten from db is a string, we need to convert this string to its real type before inserting // it into an Any // - TangoSys_MemStream str; - if (from_init == false) - str << mem_value << ends; - - try - { - switch (att.get_data_type()) - { - case Tango::DEV_SHORT: - case Tango::DEV_ENUM: - if (from_init == false) - { - if (!(str >> sh)) - throw_mem_value(device_list[i],att); - att.set_write_value(sh); - } - else - att.get_write_value(sh); - - sh_seq[0] = sh; - att_val[nb_wr - 1].value <<= sh_seq; - break; - - case Tango::DEV_LONG: - if (from_init == false) - { - if (!(str >> lg)) - throw_mem_value(device_list[i],att); - att.set_write_value(lg); - } - else - att.get_write_value(lg); - - lg_seq[0] = lg; - att_val[nb_wr - 1].value <<= lg_seq; - break; - - case Tango::DEV_DOUBLE: - if (from_init == false) - { - if (!(str >> db)) - throw_mem_value(device_list[i],att); - att.set_write_value(db); - } - else - att.get_write_value(db); - - db_seq[0] = db; - att_val[nb_wr - 1].value <<= db_seq; - break; - - case Tango::DEV_STRING: - if (from_init == false) - { - att.set_write_value(mem_value); - - str_seq[0] = Tango::string_dup(mem_value.c_str()); - } - else - { - att.get_write_value(tmp_str); - str_seq[0] = Tango::string_dup(tmp_str); - } - att_val[nb_wr - 1].value <<= str_seq; - break; - - case Tango::DEV_FLOAT: - if (from_init == false) - { - if (!(str >> fl)) - throw_mem_value(device_list[i],att); - att.set_write_value(fl); - } - else - att.get_write_value(fl); - - fl_seq[0] = fl; - att_val[nb_wr - 1].value <<= fl_seq; - break; - - case Tango::DEV_BOOLEAN: - if (from_init == false) - { - if (!(str >> boolalpha >> boo)) - throw_mem_value(device_list[i],att); - att.set_write_value(boo); - } - else - att.get_write_value(boo); - - boo_seq[0] = boo; - att_val[nb_wr - 1].value <<= boo_seq; - break; - - case Tango::DEV_USHORT: - if (from_init == false) - { - if (!(str >> ush)) - throw_mem_value(device_list[i],att); - att.set_write_value(ush); - } - else - att.get_write_value(ush); - - ush_seq[0] = ush; - att_val[nb_wr - 1].value <<= ush_seq; - break; - - case Tango::DEV_UCHAR: - if (from_init == false) - { - short tmp_sh; - if (!(str >> tmp_sh)) - throw_mem_value(device_list[i],att); - uch = (DevUChar)tmp_sh; - att.set_write_value(uch); - } - else - att.get_write_value(uch); - - uch_seq[0] = uch; - att_val[nb_wr - 1].value <<= uch_seq; - break; - - case Tango::DEV_ULONG: - if (from_init == false) - { - if (!(str >> ulg)) - throw_mem_value(device_list[i],att); - att.set_write_value(ulg); - } - else - att.get_write_value(ulg); - - ulg_seq[0] = ulg; - att_val[nb_wr - 1].value <<= ulg_seq; - break; - - case Tango::DEV_LONG64: - if (from_init == false) - { - if (!(str >> lg64)) - throw_mem_value(device_list[i],att); - att.set_write_value(lg64); - } - else - att.get_write_value(lg64); - - lg64_seq[0] = lg64; - att_val[nb_wr - 1].value <<= lg64_seq; - break; - - case Tango::DEV_ULONG64: - if (from_init == false) - { - if (!(str >> ulg64)) - throw_mem_value(device_list[i],att); - att.set_write_value(ulg64); - } - else - att.get_write_value(ulg64); - - ulg64_seq[0] = ulg64; - att_val[nb_wr - 1].value <<= ulg64_seq; - break; - } + TangoSys_MemStream str; + if (from_init == false) + str << mem_value << ends; + + try + { + switch (att.get_data_type()) + { + case Tango::DEV_SHORT: + case Tango::DEV_ENUM: + if (from_init == false) + { + if (!(str >> sh)) + throw_mem_value(device_list[i], att); + att.set_write_value(sh); + } + else + att.get_write_value(sh); + + sh_seq[0] = sh; + att_val[nb_wr - 1].value <<= sh_seq; + break; + + case Tango::DEV_LONG: + if (from_init == false) + { + if (!(str >> lg)) + throw_mem_value(device_list[i], att); + att.set_write_value(lg); + } + else + att.get_write_value(lg); + + lg_seq[0] = lg; + att_val[nb_wr - 1].value <<= lg_seq; + break; + + case Tango::DEV_DOUBLE: + if (from_init == false) + { + if (!(str >> db)) + throw_mem_value(device_list[i], att); + att.set_write_value(db); + } + else + att.get_write_value(db); + + db_seq[0] = db; + att_val[nb_wr - 1].value <<= db_seq; + break; + + case Tango::DEV_STRING: + if (from_init == false) + { + att.set_write_value(mem_value); + + str_seq[0] = Tango::string_dup(mem_value.c_str()); + } + else + { + att.get_write_value(tmp_str); + str_seq[0] = Tango::string_dup(tmp_str); + } + att_val[nb_wr - 1].value <<= str_seq; + break; + + case Tango::DEV_FLOAT: + if (from_init == false) + { + if (!(str >> fl)) + throw_mem_value(device_list[i], att); + att.set_write_value(fl); + } + else + att.get_write_value(fl); + + fl_seq[0] = fl; + att_val[nb_wr - 1].value <<= fl_seq; + break; + + case Tango::DEV_BOOLEAN: + if (from_init == false) + { + if (!(str >> boolalpha >> boo)) + throw_mem_value(device_list[i], att); + att.set_write_value(boo); + } + else + att.get_write_value(boo); + + boo_seq[0] = boo; + att_val[nb_wr - 1].value <<= boo_seq; + break; + + case Tango::DEV_USHORT: + if (from_init == false) + { + if (!(str >> ush)) + throw_mem_value(device_list[i], att); + att.set_write_value(ush); + } + else + att.get_write_value(ush); + + ush_seq[0] = ush; + att_val[nb_wr - 1].value <<= ush_seq; + break; + + case Tango::DEV_UCHAR: + if (from_init == false) + { + short tmp_sh; + if (!(str >> tmp_sh)) + throw_mem_value(device_list[i], att); + uch = (DevUChar) tmp_sh; + att.set_write_value(uch); + } + else + att.get_write_value(uch); + + uch_seq[0] = uch; + att_val[nb_wr - 1].value <<= uch_seq; + break; + + case Tango::DEV_ULONG: + if (from_init == false) + { + if (!(str >> ulg)) + throw_mem_value(device_list[i], att); + att.set_write_value(ulg); + } + else + att.get_write_value(ulg); + + ulg_seq[0] = ulg; + att_val[nb_wr - 1].value <<= ulg_seq; + break; + + case Tango::DEV_LONG64: + if (from_init == false) + { + if (!(str >> lg64)) + throw_mem_value(device_list[i], att); + att.set_write_value(lg64); + } + else + att.get_write_value(lg64); + + lg64_seq[0] = lg64; + att_val[nb_wr - 1].value <<= lg64_seq; + break; + + case Tango::DEV_ULONG64: + if (from_init == false) + { + if (!(str >> ulg64)) + throw_mem_value(device_list[i], att); + att.set_write_value(ulg64); + } + else + att.get_write_value(ulg64); + + ulg64_seq[0] = ulg64; + att_val[nb_wr - 1].value <<= ulg64_seq; + break; + } // // Check the initialisation flag for memorized attributes. If the flag is false, do not add the element to the att_val // vector. This avoids a call to write the memorized value to the attribute. // - if ( att.is_memorized_init() == false ) - { - nb_wr--; - att_val.length(nb_wr); - // reset memorized flag - att.set_memorized(true); - } - else - { + if (att.is_memorized_init() == false) + { + nb_wr--; + att_val.length(nb_wr); + // reset memorized flag + att.set_memorized(true); + } + else + { // // Init the AttributeValue structure // - att_val[nb_wr - 1].name = Tango::string_dup(att.get_name().c_str()); - att_val[nb_wr - 1].dim_x = 1; - att_val[nb_wr - 1].dim_y = 0; - att_val[nb_wr - 1].quality = Tango::ATTR_VALID; - } - } + att_val[nb_wr - 1].name = Tango::string_dup(att.get_name().c_str()); + att_val[nb_wr - 1].dim_x = 1; + att_val[nb_wr - 1].dim_y = 0; + att_val[nb_wr - 1].quality = Tango::ATTR_VALID; + } + } - catch (Tango::DevFailed &e) - { - cout3 << "Cannot configure setpoint value for memorized attribute " << att.get_name() << endl; - Tango::Except::print_exception(e); + catch (Tango::DevFailed &e) + { + cout3 << "Cannot configure setpoint value for memorized attribute " << att.get_name() << endl; + Tango::Except::print_exception(e); - nb_wr--; - att_val.length(nb_wr); - // reset memorized flag - att.set_memorized(true); - } - } - } - } + nb_wr--; + att_val.length(nb_wr); + // reset memorized flag + att.set_memorized(true); + } + } + } + } - if (nb_wr != 0) - { + if (nb_wr != 0) + { // // Write attribute values. Print exception if any. // - try - { - cout4 << "Writing data for " << att_val.length() << " attribute(s) for device " << device_list[i]->get_name() << endl; - (static_cast(device_list[i]))->write_attributes_3(att_val); - } - catch (Tango::DevFailed &e) - { - cout3 << "Cannot write setpoint(s) value for any memorized attribute(s) on device " << device_list[i]->get_name() << endl; - Tango::Except::print_exception(e); - } - catch (Tango::MultiDevFailed &e) - { - cout3 << "Cannot write setpoint(s) value for memorized attribute(s) of device " << device_list[i]->get_name() << endl; - for (unsigned long k = 0;k < e.errors.length();k++) - { - WAttribute &att = device_list[i]->get_device_attr()->get_w_attr_by_name(att_val[e.errors[k].index_in_call].name.in()); - att.set_mem_exception(e.errors[k].err_list); - log4tango::Logger *log = device_list[i]->get_logger(); - if (log->is_warn_enabled()) - { - log->warn_stream() << log4tango::LogInitiator::_begin_log << "Writing set_point for attribute " << att.get_name() << " failed" << endl; - log->warn_stream() << log4tango::LogInitiator::_begin_log << "\tException desc = " << e.errors[k].err_list[0].desc.in() << endl; - log->warn_stream() << log4tango::LogInitiator::_begin_log << "\tException reason = " << e.errors[k].err_list[0].reason.in() << endl; - } - - } - device_list[i]->set_run_att_conf_loop(true); - Tango::NamedDevFailedList e_list (e, device_list[i]->get_name(), (const char *)"DeviceClass::set_memorized_values()", - (const char *)API_AttributeFailed); - Tango::Except::print_exception(e_list); - } - catch (...) - { - cout3 << "Cannot write setpoint(s) value for memorized attribute(s) of device " << device_list[i]->get_name() << endl; - cerr << "Received unknown exception while trying to write memorized attribute(s)" << endl; - - size_t nb_att = att_val.length(); - for (size_t k = 0;k < nb_att;k++) - { - stringstream ss; - ss << "Received unknown exception (nor a DevFailed, nor a MultiDevFailed !!)"; - - Tango::DevErrorList errors; - errors.length(1); - errors[0].reason = API_WrongEventData; - errors[0].origin = "DeviceClass::set_memorized_values()"; - errors[0].desc = Tango::string_dup(ss.str().c_str()); - errors[0].severity = ERR; - - WAttribute &att = device_list[i]->get_device_attr()->get_w_attr_by_name(att_val[k].name.in()); - att.set_mem_exception(errors); - log4tango::Logger *log = device_list[i]->get_logger(); - if (log->is_warn_enabled()) - { - log->warn_stream() << log4tango::LogInitiator::_begin_log << "Writing set_point for attribute " << att.get_name() << " failed" << endl; - } - } - device_list[i]->set_run_att_conf_loop(true); - } + try + { + cout4 << "Writing data for " << att_val.length() << " attribute(s) for device " + << device_list[i]->get_name() << endl; + (static_cast(device_list[i]))->write_attributes_3(att_val); + } + catch (Tango::DevFailed &e) + { + cout3 << "Cannot write setpoint(s) value for any memorized attribute(s) on device " + << device_list[i]->get_name() << endl; + Tango::Except::print_exception(e); + } + catch (Tango::MultiDevFailed &e) + { + cout3 << "Cannot write setpoint(s) value for memorized attribute(s) of device " + << device_list[i]->get_name() << endl; + for (unsigned long k = 0; k < e.errors.length(); k++) + { + WAttribute &att = device_list[i]->get_device_attr() + ->get_w_attr_by_name(att_val[e.errors[k].index_in_call].name.in()); + att.set_mem_exception(e.errors[k].err_list); + log4tango::Logger *log = device_list[i]->get_logger(); + if (log->is_warn_enabled()) + { + log->warn_stream() << log4tango::LogInitiator::_begin_log << "Writing set_point for attribute " + << att.get_name() << " failed" << endl; + log->warn_stream() << log4tango::LogInitiator::_begin_log << "\tException desc = " + << e.errors[k].err_list[0].desc.in() << endl; + log->warn_stream() << log4tango::LogInitiator::_begin_log << "\tException reason = " + << e.errors[k].err_list[0].reason.in() << endl; + } + + } + device_list[i]->set_run_att_conf_loop(true); + Tango::NamedDevFailedList + e_list(e, device_list[i]->get_name(), (const char *) "DeviceClass::set_memorized_values()", + (const char *) API_AttributeFailed); + Tango::Except::print_exception(e_list); + } + catch (...) + { + cout3 << "Cannot write setpoint(s) value for memorized attribute(s) of device " + << device_list[i]->get_name() << endl; + cerr << "Received unknown exception while trying to write memorized attribute(s)" << endl; + + size_t nb_att = att_val.length(); + for (size_t k = 0; k < nb_att; k++) + { + stringstream ss; + ss << "Received unknown exception (nor a DevFailed, nor a MultiDevFailed !!)"; + + Tango::DevErrorList errors; + errors.length(1); + errors[0].reason = API_WrongEventData; + errors[0].origin = "DeviceClass::set_memorized_values()"; + errors[0].desc = Tango::string_dup(ss.str().c_str()); + errors[0].severity = ERR; + + WAttribute &att = device_list[i]->get_device_attr()->get_w_attr_by_name(att_val[k].name.in()); + att.set_mem_exception(errors); + log4tango::Logger *log = device_list[i]->get_logger(); + if (log->is_warn_enabled()) + { + log->warn_stream() << log4tango::LogInitiator::_begin_log << "Writing set_point for attribute " + << att.get_name() << " failed" << endl; + } + } + device_list[i]->set_run_att_conf_loop(true); + } // // Reset memorized flags // - for (unsigned long k = 0;k < att_val.length();k++) - { - WAttribute &att = device_list[i]->get_device_attr()->get_w_attr_by_name(att_val[k].name.in()); - att.set_memorized(true); - } - } - } + for (unsigned long k = 0; k < att_val.length(); k++) + { + WAttribute &att = device_list[i]->get_device_attr()->get_w_attr_by_name(att_val[k].name.in()); + att.set_memorized(true); + } + } + } - cout4 << "Leaving DeviceClass::set_memorized_values() method" << endl; + cout4 << "Leaving DeviceClass::set_memorized_values() method" << endl; } @@ -667,19 +679,19 @@ void DeviceClass::set_memorized_values(bool all,long idx,bool from_init) // //-------------------------------------------------------------------------------------------------------------------- -void DeviceClass::throw_mem_value(DeviceImpl *dev,Attribute &att) +void DeviceClass::throw_mem_value(DeviceImpl *dev, Attribute &att) { - TangoSys_OMemStream o; + TangoSys_OMemStream o; - o << "Memorized value for attribute "; - o << att.get_name(); - o << " (device "; - o << dev->get_name(); - o << ") is in an incorrect format !" << ends; + o << "Memorized value for attribute "; + o << att.get_name(); + o << " (device "; + o << dev->get_name(); + o << ") is in an incorrect format !" << ends; - Except::throw_exception((const char *)API_AttrWrongMemValue, - o.str(), - (const char *)"DeviceClass::set_memorized_values"); + Except::throw_exception((const char *) API_AttrWrongMemValue, + o.str(), + (const char *) "DeviceClass::set_memorized_values"); } //-------------------------------------------------------------------------------------------------------------------- @@ -694,109 +706,109 @@ void DeviceClass::throw_mem_value(DeviceImpl *dev,Attribute &att) DeviceClass::~DeviceClass() { - cout4 << "Entering DeviceClass destructor for class " << name << endl; + cout4 << "Entering DeviceClass destructor for class " << name << endl; // // Destroy the DbClass object // - delete db_class; + delete db_class; // // Destroy the device list // - unsigned long i; - if (device_list.size() != 0) - { - Tango::Util *tg = Tango::Util::instance(); - PortableServer::POA_ptr r_poa = tg->get_poa(); + unsigned long i; + if (device_list.size() != 0) + { + Tango::Util *tg = Tango::Util::instance(); + PortableServer::POA_ptr r_poa = tg->get_poa(); - unsigned long nb_dev = device_list.size(); - for (i = 0;i < nb_dev;i++) - { + unsigned long nb_dev = device_list.size(); + for (i = 0; i < nb_dev; i++) + { // // Clear vectors used to memorize info used to clean db in case of devices with dyn attr removed during device // destruction // - tg->get_polled_dyn_attr_names().clear(); - tg->get_full_polled_att_list().clear(); - tg->get_all_dyn_attr_names().clear(); - tg->get_dyn_att_dev_name().clear(); + tg->get_polled_dyn_attr_names().clear(); + tg->get_full_polled_att_list().clear(); + tg->get_all_dyn_attr_names().clear(); + tg->get_dyn_att_dev_name().clear(); // // Delete device // - delete_dev(0,tg,r_poa); + delete_dev(0, tg, r_poa); // // Clean-up db (dyn attribute and cmd) // - if (tg->get_polled_dyn_attr_names().size() != 0) - tg->clean_attr_polled_prop(); - if (tg->get_all_dyn_attr_names().size() != 0) - tg->clean_dyn_attr_prop(); - if (tg->get_polled_dyn_cmd_names().size() != 0) - tg->clean_cmd_polled_prop(); + if (tg->get_polled_dyn_attr_names().size() != 0) + tg->clean_attr_polled_prop(); + if (tg->get_all_dyn_attr_names().size() != 0) + tg->clean_dyn_attr_prop(); + if (tg->get_polled_dyn_cmd_names().size() != 0) + tg->clean_cmd_polled_prop(); - vector::iterator it = device_list.begin(); - device_list.erase(it); - } - device_list.clear(); - CORBA::release(r_poa); - } + vector::iterator it = device_list.begin(); + device_list.erase(it); + } + device_list.clear(); + CORBA::release(r_poa); + } // // Destroy the command list // - for (i = 0;i < command_list.size();i++) - delete command_list[i]; - command_list.clear(); + for (i = 0; i < command_list.size(); i++) + delete command_list[i]; + command_list.clear(); // // Destroy the pipe list // - map >::iterator ite; - for (ite = ext->dev_pipe_list.begin();ite != ext->dev_pipe_list.end();ite++) - { - for (size_t loop = 0;loop < ite->second.size();loop++) + map >::iterator ite; + for (ite = ext->dev_pipe_list.begin(); ite != ext->dev_pipe_list.end(); ite++) + { + for (size_t loop = 0; loop < ite->second.size(); loop++) delete (ite->second)[loop]; - } + } // // Destroy the MultiClassAttribute object // - delete class_attr; + delete class_attr; // // Destroy the MultiClassPipe object // - delete class_pipe; + delete class_pipe; // // Unregister the class from signal handler // - DServerSignal::instance()->unregister_class_signal(this); + DServerSignal::instance()->unregister_class_signal(this); // // Delete the class extension object // #ifndef HAS_UNIQUE_PTR - delete ext; + delete ext; #endif - cout4 << "Leaving DeviceClass destructor for class " << name << endl; + cout4 << "Leaving DeviceClass destructor for class " << name << endl; } @@ -817,28 +829,28 @@ DeviceClass::~DeviceClass() //------------------------------------------------------------------------------------------------------------------- -void DeviceClass::delete_dev(long idx,Tango::Util *tg,PortableServer::POA_ptr r_poa) +void DeviceClass::delete_dev(long idx, Tango::Util *tg, PortableServer::POA_ptr r_poa) { - cout4 << "Entering DeviceClas::delete_dev method for device with index " << idx << endl; + cout4 << "Entering DeviceClas::delete_dev method for device with index " << idx << endl; // // If the polling thread is alive and if device is polled, ask polling thread to stop polling // - if ((tg->get_polling_threads_info().empty() == false) && (device_list[idx]->is_polled() == true)) - { - device_list[idx]->stop_polling(false); - } + if ((tg->get_polling_threads_info().empty() == false) && (device_list[idx]->is_polled() == true)) + { + device_list[idx]->stop_polling(false); + } // // Deactivate the CORBA object // - bool py_dev = device_list[idx]->is_py_device(); - bool exported_device = device_list[idx]->get_exported_flag(); + bool py_dev = device_list[idx]->is_py_device(); + bool exported_device = device_list[idx]->get_exported_flag(); - if (exported_device == true) - r_poa->deactivate_object(device_list[idx]->get_obj_id().in()); + if (exported_device == true) + r_poa->deactivate_object(device_list[idx]->get_obj_id().in()); // // Remove the servant. @@ -846,36 +858,36 @@ void DeviceClass::delete_dev(long idx,Tango::Util *tg,PortableServer::POA_ptr r_ // device is not exported // - if (py_dev == true) - { - Device_3Impl *dev_3 = static_cast(device_list[idx]); - dev_3->delete_dev(); - } + if (py_dev == true) + { + Device_3Impl *dev_3 = static_cast(device_list[idx]); + dev_3->delete_dev(); + } // // Wait for CORBA to call the device dtor // - if (device_list[idx] != NULL && exported_device == true) - { + if (device_list[idx] != NULL && exported_device == true) + { #ifdef _TG_WINDOWS_ - while (device_list[idx] != NULL) - { - Sleep(10); - } + while (device_list[idx] != NULL) + { + Sleep(10); + } #else - struct timespec ts; - ts.tv_sec = 0; - ts.tv_nsec = 10000000; - - while (device_list[idx] != NULL) - { - nanosleep(&ts,NULL); - } + struct timespec ts; + ts.tv_sec = 0; + ts.tv_nsec = 10000000; + + while (device_list[idx] != NULL) + { + nanosleep(&ts, NULL); + } #endif - } + } - cout4 << "Leaving DeviceClass delete_dev" << endl; + cout4 << "Leaving DeviceClass delete_dev" << endl; } @@ -898,20 +910,20 @@ void DeviceClass::delete_dev(long idx,Tango::Util *tg,PortableServer::POA_ptr r_ #if defined _TG_WINDOWS_ void DeviceClass::register_signal(long signo) { - cout4 << "DeviceClass::register_signal() arrived for signal " << signo << endl; + cout4 << "DeviceClass::register_signal() arrived for signal " << signo << endl; - DServerSignal::instance()->register_class_signal(signo,this); + DServerSignal::instance()->register_class_signal(signo,this); - cout4 << "Leaving DeviceClass::register_signal method()" << endl; + cout4 << "Leaving DeviceClass::register_signal method()" << endl; } #else -void DeviceClass::register_signal(long signo,bool handler) +void DeviceClass::register_signal(long signo, bool handler) { - cout4 << "DeviceClass::register_signal() arrived for signal " << signo << endl; + cout4 << "DeviceClass::register_signal() arrived for signal " << signo << endl; - DServerSignal::instance()->register_class_signal(signo,handler,this); + DServerSignal::instance()->register_class_signal(signo, handler, this); - cout4 << "Leaving DeviceClass::register_signal method()" << endl; + cout4 << "Leaving DeviceClass::register_signal method()" << endl; } #endif @@ -932,11 +944,11 @@ void DeviceClass::register_signal(long signo,bool handler) void DeviceClass::unregister_signal(long signo) { - cout4 << "DeviceClass::unregister_signal() arrived for signal " << signo << endl; + cout4 << "DeviceClass::unregister_signal() arrived for signal " << signo << endl; - DServerSignal::instance()->unregister_class_signal(signo,this); + DServerSignal::instance()->unregister_class_signal(signo, this); - cout4 << "Leaving DeviceClass::unregister_signal method()" << endl; + cout4 << "Leaving DeviceClass::unregister_signal method()" << endl; } //+----------------------------------------------------------------------------------------------------------------- @@ -956,9 +968,9 @@ void DeviceClass::unregister_signal(long signo) void DeviceClass::signal_handler(long signo) { - cout4 << "DeviceClass::signal_handler() arrived for signal " << signo << endl; + cout4 << "DeviceClass::signal_handler() arrived for signal " << signo << endl; - cout4 << "Leaving DeviceClass::signal_handler method()" << endl; + cout4 << "Leaving DeviceClass::signal_handler method()" << endl; } @@ -979,14 +991,14 @@ void DeviceClass::signal_handler(long signo) // //------------------------------------------------------------------------------------------------------------------ -void DeviceClass::export_device(DeviceImpl *dev,const char *corba_obj_name) +void DeviceClass::export_device(DeviceImpl *dev, const char *corba_obj_name) { - cout4 << "DeviceClass::export_device() arrived" << endl; + cout4 << "DeviceClass::export_device() arrived" << endl; - Device_var d; + Device_var d; - if ((Tango::Util::_UseDb == true) && (Tango::Util::_FileDb == false)) - { + if ((Tango::Util::_UseDb == true) && (Tango::Util::_FileDb == false)) + { // // Take the Tango monitor in order to protect the device against external world access @@ -995,43 +1007,43 @@ void DeviceClass::export_device(DeviceImpl *dev,const char *corba_obj_name) // But don't do this for dynamic devices which are not created in the DServer::init_device method class loop // - string &dev_name = dev->get_name_lower(); - if ((get_device_factory_done() == false) && (dev_name.find("dserver") != 0)) - dev->get_dev_monitor().get_monitor(); + string &dev_name = dev->get_name_lower(); + if ((get_device_factory_done() == false) && (dev_name.find("dserver") != 0)) + dev->get_dev_monitor().get_monitor(); // // Activate the CORBA object incarnated by the dev C++ object // Also call _remove_ref to give POA the full ownership of servant // - d = dev->_this(); - dev->set_d_var(Tango::Device::_duplicate(d)); - if (is_py_class() == false) - dev->_remove_ref(); + d = dev->_this(); + dev->set_d_var(Tango::Device::_duplicate(d)); + if (is_py_class() == false) + dev->_remove_ref(); // // Store the ObjectId (The ObjectId_var type is a typedef of a string_var type) // - PortableServer::ObjectId_var oid; - try - { - PortableServer::POA_ptr r_poa = Util::instance()->get_poa(); - oid = r_poa->reference_to_id(d); - CORBA::release(r_poa); - } - catch (...) - { - TangoSys_OMemStream o; - o << "Cant get CORBA reference Id for device " << dev->get_name() << ends; - Except::throw_exception((const char *)API_CantGetDevObjectId, - o.str(), - (const char *)"DeviceClass::export_device"); - } - dev->set_obj_id(oid); - } - else - { + PortableServer::ObjectId_var oid; + try + { + PortableServer::POA_ptr r_poa = Util::instance()->get_poa(); + oid = r_poa->reference_to_id(d); + CORBA::release(r_poa); + } + catch (...) + { + TangoSys_OMemStream o; + o << "Cant get CORBA reference Id for device " << dev->get_name() << ends; + Except::throw_exception((const char *) API_CantGetDevObjectId, + o.str(), + (const char *) "DeviceClass::export_device"); + } + dev->set_obj_id(oid); + } + else + { // // For server started without db usage (Mostly the database server). In this case, it is necessary to create our own @@ -1040,49 +1052,49 @@ void DeviceClass::export_device(DeviceImpl *dev,const char *corba_obj_name) // Register device in POA with lower case letters // - string corba_obj_name_lower(corba_obj_name); - transform(corba_obj_name_lower.begin(),corba_obj_name_lower.end(),corba_obj_name_lower.begin(),::tolower); - PortableServer::ObjectId_var id = PortableServer::string_to_ObjectId(corba_obj_name_lower.c_str()); - try - { - PortableServer::POA_ptr r_poa = Util::instance()->get_poa(); - r_poa->activate_object_with_id(id.in(),dev); - CORBA::release(r_poa); - } - catch (...) - { - TangoSys_OMemStream o; - o << "Can't get CORBA reference Id for device " << dev->get_name() << ends; - Except::throw_exception((const char *)API_CantGetDevObjectId, - o.str(), - (const char *)"DeviceClass::export_device"); - } - - d = dev->_this(); - dev->set_obj_id(id); - dev->set_d_var(Tango::Device::_duplicate(d)); - dev->_remove_ref(); - } + string corba_obj_name_lower(corba_obj_name); + transform(corba_obj_name_lower.begin(), corba_obj_name_lower.end(), corba_obj_name_lower.begin(), ::tolower); + PortableServer::ObjectId_var id = PortableServer::string_to_ObjectId(corba_obj_name_lower.c_str()); + try + { + PortableServer::POA_ptr r_poa = Util::instance()->get_poa(); + r_poa->activate_object_with_id(id.in(), dev); + CORBA::release(r_poa); + } + catch (...) + { + TangoSys_OMemStream o; + o << "Can't get CORBA reference Id for device " << dev->get_name() << ends; + Except::throw_exception((const char *) API_CantGetDevObjectId, + o.str(), + (const char *) "DeviceClass::export_device"); + } + + d = dev->_this(); + dev->set_obj_id(id); + dev->set_d_var(Tango::Device::_duplicate(d)); + dev->_remove_ref(); + } // // Prepare sent parameters and allocate mem for them // - if ((Tango::Util::_UseDb == true) && (Tango::Util::_FileDb == false)) - { - Tango::Util *tg = Tango::Util::instance(); - CORBA::ORB_ptr orb_ptr = tg->get_orb(); + if ((Tango::Util::_UseDb == true) && (Tango::Util::_FileDb == false)) + { + Tango::Util *tg = Tango::Util::instance(); + CORBA::ORB_ptr orb_ptr = tg->get_orb(); - char *s = orb_ptr->object_to_string(d); - string ior_string(s); + char *s = orb_ptr->object_to_string(d); + string ior_string(s); - Tango::DbDevExportInfo exp; + Tango::DbDevExportInfo exp; - exp.name = dev->get_name(); - exp.ior = ior_string; - exp.host = tg->get_host_name(); - exp.pid = tg->get_pid(); - exp.version = tg->get_version_str(); + exp.name = dev->get_name(); + exp.ior = ior_string; + exp.host = tg->get_host_name(); + exp.pid = tg->get_pid(); + exp.version = tg->get_version_str(); // // Call db server @@ -1090,30 +1102,30 @@ void DeviceClass::export_device(DeviceImpl *dev,const char *corba_obj_name) // with 3 retries in case of timeout // - try - { - tg->get_database()->export_device(exp); - } - catch (Tango::CommunicationFailed &) - { - cerr << "CommunicationFailed while exporting device " << dev->get_name() << endl; - CORBA::release(orb_ptr); - CORBA::string_free(s); - throw; - } - - CORBA::release(orb_ptr); - CORBA::string_free(s); - } + try + { + tg->get_database()->export_device(exp); + } + catch (Tango::CommunicationFailed &) + { + cerr << "CommunicationFailed while exporting device " << dev->get_name() << endl; + CORBA::release(orb_ptr); + CORBA::string_free(s); + throw; + } + + CORBA::release(orb_ptr); + CORBA::string_free(s); + } // // Set the DeviceImpl exported flag to true. Also enable device interface change event // - dev->set_exported_flag(true); - dev->enable_intr_change_ev(); + dev->set_exported_flag(true); + dev->enable_intr_change_ev(); - cout4 << "Leaving DeviceClass::export_device method()" << endl; + cout4 << "Leaving DeviceClass::export_device method()" << endl; } @@ -1129,134 +1141,138 @@ void DeviceClass::export_device(DeviceImpl *dev,const char *corba_obj_name) // //------------------------------------------------------------------------------------------------------------------- -CORBA::Any *DeviceClass::command_handler(DeviceImpl *device,string &command,const CORBA::Any &in_any) +CORBA::Any *DeviceClass::command_handler(DeviceImpl *device, string &command, const CORBA::Any &in_any) { - CORBA::Any *ret = NULL; - vector::iterator i_cmd; + CORBA::Any *ret = NULL; + vector::iterator i_cmd; - string command_lower(command); + string command_lower(command); - cout4 << "Entering DeviceClass::command_handler() method" << endl; + cout4 << "Entering DeviceClass::command_handler() method" << endl; - transform(command_lower.begin(),command_lower.end(),command_lower.begin(),::tolower); + transform(command_lower.begin(), command_lower.end(), command_lower.begin(), ::tolower); // // Search for command object first at class level then at device level (case of dynamic command installed at device // level) // - bool found = false; - for (i_cmd = command_list.begin();i_cmd < command_list.end();++i_cmd) - { - if ((*i_cmd)->get_lower_name() == command_lower) - { - found = true; - break; - } - } - - if (found == false) - { - vector &dev_command_list = device->get_local_command_list(); - for (i_cmd = dev_command_list.begin();i_cmd < dev_command_list.end();++i_cmd) - { - if ((*i_cmd)->get_lower_name() == command_lower) - { - found = true; - break; - } - } - } - - if (found == true) - { + bool found = false; + for (i_cmd = command_list.begin(); i_cmd < command_list.end(); ++i_cmd) + { + if ((*i_cmd)->get_lower_name() == command_lower) + { + found = true; + break; + } + } + + if (found == false) + { + vector &dev_command_list = device->get_local_command_list(); + for (i_cmd = dev_command_list.begin(); i_cmd < dev_command_list.end(); ++i_cmd) + { + if ((*i_cmd)->get_lower_name() == command_lower) + { + found = true; + break; + } + } + } + + if (found == true) + { // // Call the always executed method // - device->always_executed_hook(); + device->always_executed_hook(); // // Check if command is allowed // - if ((*i_cmd)->is_allowed(device,in_any) == false) - { - TangoSys_OMemStream o; - o << "Command " << command << " not allowed when the device is in " << Tango::DevStateName[device->get_state()] << " state" << ends; - Except::throw_exception((const char *)API_CommandNotAllowed, - o.str(), - (const char *)"DeviceClass::command_handler"); - } + if ((*i_cmd)->is_allowed(device, in_any) == false) + { + TangoSys_OMemStream o; + o << "Command " << command << " not allowed when the device is in " + << Tango::DevStateName[device->get_state()] << " state" << ends; + Except::throw_exception((const char *) API_CommandNotAllowed, + o.str(), + (const char *) "DeviceClass::command_handler"); + } // // Execute command // - ret = (*i_cmd)->execute(device,in_any); - } + //TODO wrap in_any with DeviceData and pass to the client + //TODO preserve compatibility + ret = (*i_cmd)->execute(device, in_any); + } - if (found == false) - { + if (found == false) + { - cout3 << "DeviceClass::command_handler(): command " << command << " not found in class/device command" << endl; + cout3 << "DeviceClass::command_handler(): command " << command << " not found in class/device command" << endl; - Command *def_cmd = get_default_command(); - if (def_cmd != NULL) - { + Command *def_cmd = get_default_command(); + if (def_cmd != NULL) + { // // Set name in default command object // - def_cmd->set_name(command); + def_cmd->set_name(command); // // Call the always executed method // - device->always_executed_hook(); + device->always_executed_hook(); // // Check if command is allowed // - if (def_cmd->is_allowed(device,in_any) == false) - { - TangoSys_OMemStream o; - o << "Command " << command << " not allowed when the device is in " << Tango::DevStateName[device->get_state()] << " state" << ends; - Except::throw_exception((const char *)API_CommandNotAllowed, - o.str(), - (const char *)"DeviceClass::command_handler"); - } + if (def_cmd->is_allowed(device, in_any) == false) + { + TangoSys_OMemStream o; + o << "Command " << command << " not allowed when the device is in " + << Tango::DevStateName[device->get_state()] << " state" << ends; + Except::throw_exception((const char *) API_CommandNotAllowed, + o.str(), + (const char *) "DeviceClass::command_handler"); + } // // Execute command // - ret = def_cmd->execute(device,in_any); + ret = def_cmd->execute(device, in_any); - } - else - { + } + else + { // // Throw an exception to client // - TangoSys_OMemStream o; + TangoSys_OMemStream o; - o << "Command " << command << " not found" << ends; - Except::throw_exception((const char *)API_CommandNotFound, - o.str(), - (const char *)"DeviceClass::command_handler"); - } - } + o << "Command " << command << " not found" << ends; + Except::throw_exception((const char *) API_CommandNotFound, + o.str(), + (const char *) "DeviceClass::command_handler"); + } + } - cout4 << "Leaving DeviceClass::command_handler() method" << endl; - return ret; + cout4 << "Leaving DeviceClass::command_handler() method" << endl; + return ret; } @@ -1276,54 +1292,53 @@ CORBA::Any *DeviceClass::command_handler(DeviceImpl *device,string &command,cons // //------------------------------------------------------------------------------------------------------------------- -void DeviceClass::add_wiz_dev_prop(string &p_name,string &desc,string &def) +void DeviceClass::add_wiz_dev_prop(string &p_name, string &desc, string &def) { // // Name in lowercase letters // - string name_low = p_name; - transform(name_low.begin(),name_low.end(),name_low.begin(),::tolower); + string name_low = p_name; + transform(name_low.begin(), name_low.end(), name_low.begin(), ::tolower); // // Check that this property is not already in the vector // - vector::iterator ite; - for (ite = wiz_dev_prop.begin();ite < wiz_dev_prop.end();++ite) - { - string tmp_name(*ite); - transform(tmp_name.begin(),tmp_name.end(),tmp_name.begin(),::tolower); - if (tmp_name == name_low) - break; - } + vector::iterator ite; + for (ite = wiz_dev_prop.begin(); ite < wiz_dev_prop.end(); ++ite) + { + string tmp_name(*ite); + transform(tmp_name.begin(), tmp_name.end(), tmp_name.begin(), ::tolower); + if (tmp_name == name_low) + break; + } - if (ite != wiz_dev_prop.end()) - { - TangoSys_OMemStream o; - o << "Device property " << p_name; - o << " for class " << name << " is already defined in the wizard" << ends; - Except::throw_exception((const char *)API_WizardConfError, - o.str(), - (const char *)"DeviceClass::add_wiz_dev_prop"); - } + if (ite != wiz_dev_prop.end()) + { + TangoSys_OMemStream o; + o << "Device property " << p_name; + o << " for class " << name << " is already defined in the wizard" << ends; + Except::throw_exception((const char *) API_WizardConfError, + o.str(), + (const char *) "DeviceClass::add_wiz_dev_prop"); + } // // Insert data in vector // - wiz_dev_prop.push_back(p_name); - wiz_dev_prop.push_back(desc); - wiz_dev_prop.push_back(def); + wiz_dev_prop.push_back(p_name); + wiz_dev_prop.push_back(desc); + wiz_dev_prop.push_back(def); } - -void DeviceClass::add_wiz_dev_prop(string &p_name,string &desc) +void DeviceClass::add_wiz_dev_prop(string &p_name, string &desc) { - string def(AlrmValueNotSpec); - add_wiz_dev_prop(p_name,desc,def); + string def(AlrmValueNotSpec); + add_wiz_dev_prop(p_name, desc, def); } @@ -1343,52 +1358,51 @@ void DeviceClass::add_wiz_dev_prop(string &p_name,string &desc) // //-------------------------------------------------------------------------------------------------------------------- -void DeviceClass::add_wiz_class_prop(string &p_name,string &desc,string &def) +void DeviceClass::add_wiz_class_prop(string &p_name, string &desc, string &def) { // // Name in lowercase letters // - string name_low = p_name; - transform(name_low.begin(),name_low.end(),name_low.begin(),::tolower); + string name_low = p_name; + transform(name_low.begin(), name_low.end(), name_low.begin(), ::tolower); // // Check that this property is not already in the vector // - vector::iterator ite; - for (ite = wiz_class_prop.begin();ite < wiz_class_prop.end();++ite) - { - string tmp_name(*ite); - transform(tmp_name.begin(),tmp_name.end(),tmp_name.begin(),::tolower); - if (tmp_name == name_low) - break; - } + vector::iterator ite; + for (ite = wiz_class_prop.begin(); ite < wiz_class_prop.end(); ++ite) + { + string tmp_name(*ite); + transform(tmp_name.begin(), tmp_name.end(), tmp_name.begin(), ::tolower); + if (tmp_name == name_low) + break; + } - if (ite != wiz_class_prop.end()) - { - TangoSys_OMemStream o; - o << "Class property " << p_name; - o << " for class " << name << " is already defined in the wizard" << ends; - Except::throw_exception((const char *)API_WizardConfError, - o.str(), - (const char *)"DeviceClass::add_wiz_dev_prop"); - } + if (ite != wiz_class_prop.end()) + { + TangoSys_OMemStream o; + o << "Class property " << p_name; + o << " for class " << name << " is already defined in the wizard" << ends; + Except::throw_exception((const char *) API_WizardConfError, + o.str(), + (const char *) "DeviceClass::add_wiz_dev_prop"); + } // // Insert data in vector // - wiz_class_prop.push_back(p_name); - wiz_class_prop.push_back(desc); - wiz_class_prop.push_back(def); + wiz_class_prop.push_back(p_name); + wiz_class_prop.push_back(desc); + wiz_class_prop.push_back(def); } - -void DeviceClass::add_wiz_class_prop(string &p_name,string &desc) +void DeviceClass::add_wiz_class_prop(string &p_name, string &desc) { - string def(AlrmValueNotSpec); - add_wiz_class_prop(p_name,desc,def); + string def(AlrmValueNotSpec); + add_wiz_class_prop(p_name, desc, def); } //+------------------------------------------------------------------------------------------------------------------ @@ -1412,49 +1426,49 @@ void DeviceClass::device_destroyer(const string &dev_name) // Check that the class know this device // - unsigned long k; - for (k = 0;k < device_list.size();k++) - { - if (device_list[k]->get_name() == dev_name) - break; - } + unsigned long k; + for (k = 0; k < device_list.size(); k++) + { + if (device_list[k]->get_name() == dev_name) + break; + } - if (k == device_list.size()) - { - TangoSys_OMemStream o; - o << "Device " << dev_name << " not in Tango class device list!" << ends; + if (k == device_list.size()) + { + TangoSys_OMemStream o; + o << "Device " << dev_name << " not in Tango class device list!" << ends; - Tango::Except::throw_exception((const char *)API_CantDestroyDevice,o.str(), - (const char *)"DeviceClass::device_destroyer"); - } + Tango::Except::throw_exception((const char *) API_CantDestroyDevice, o.str(), + (const char *) "DeviceClass::device_destroyer"); + } // // Check if the device is polled. If yes, ask polling thread to stop polling it // - if (device_list[k]->is_polled() == true) - { - device_list[k]->stop_polling(); - } + if (device_list[k]->is_polled() == true) + { + device_list[k]->stop_polling(); + } // // Delete the device // - Tango::Util *tg = Tango::Util::instance(); + Tango::Util *tg = Tango::Util::instance(); - PortableServer::POA_ptr r_poa = tg->get_poa(); - delete_dev(k,tg,r_poa); - vector::iterator it = device_list.begin(); - it += k; - device_list.erase(it); - CORBA::release(r_poa); + PortableServer::POA_ptr r_poa = tg->get_poa(); + delete_dev(k, tg, r_poa); + vector::iterator it = device_list.begin(); + it += k; + device_list.erase(it); + CORBA::release(r_poa); } void DeviceClass::device_destroyer(const char *dev_name) { - string name_str(dev_name); - return device_destroyer(name_str); + string name_str(dev_name); + return device_destroyer(name_str); } //+------------------------------------------------------------------------------------------------------------------- @@ -1474,16 +1488,16 @@ void DeviceClass::device_destroyer(const char *dev_name) bool DeviceClass::is_command_allowed(const char *cmd) { - bool ret = true; + bool ret = true; - string tmp_cmd(cmd); - transform(tmp_cmd.begin(),tmp_cmd.end(),tmp_cmd.begin(),::tolower); + string tmp_cmd(cmd); + transform(tmp_cmd.begin(), tmp_cmd.end(), tmp_cmd.begin(), ::tolower); - vector::iterator pos = find(allowed_cmds.begin(),allowed_cmds.end(),tmp_cmd); - if (pos == allowed_cmds.end()) - ret = false; + vector::iterator pos = find(allowed_cmds.begin(), allowed_cmds.end(), tmp_cmd); + if (pos == allowed_cmds.end()) + ret = false; - return ret; + return ret; } @@ -1503,19 +1517,19 @@ bool DeviceClass::is_command_allowed(const char *cmd) void DeviceClass::get_mcast_event(DServer *dserv) { - cout4 << "Entering DeviceClass::get_mcast_event() method" << endl; - vector m_cast; - - for (unsigned int i = 0;i < device_list.size();++i) - { - vector &att_list = device_list[i]->get_device_attr()->get_attribute_list(); - for (unsigned int j = 0;j < att_list.size();++j) - { - dserv->mcast_event_for_att(device_list[i]->get_name_lower(),att_list[j]->get_name_lower(),m_cast); - if (m_cast.empty() == false) - att_list[j]->set_mcast_event(m_cast); - } - } + cout4 << "Entering DeviceClass::get_mcast_event() method" << endl; + vector m_cast; + + for (unsigned int i = 0; i < device_list.size(); ++i) + { + vector &att_list = device_list[i]->get_device_attr()->get_attribute_list(); + for (unsigned int j = 0; j < att_list.size(); ++j) + { + dserv->mcast_event_for_att(device_list[i]->get_name_lower(), att_list[j]->get_name_lower(), m_cast); + if (m_cast.empty() == false) + att_list[j]->set_mcast_event(m_cast); + } + } } //+------------------------------------------------------------------------------------------------------------------ @@ -1534,35 +1548,35 @@ void DeviceClass::get_mcast_event(DServer *dserv) Command &DeviceClass::get_cmd_by_name(const string &cmd_name) { - vector::iterator pos; + vector::iterator pos; #ifdef HAS_LAMBDA_FUNC - pos = find_if(command_list.begin(),command_list.end(), - [&] (Command *cmd) -> bool - { - if (cmd_name.size() != cmd->get_lower_name().size()) - return false; - string tmp_name(cmd_name); - transform(tmp_name.begin(),tmp_name.end(),tmp_name.begin(),::tolower); - return cmd->get_lower_name() == tmp_name; - }); + pos = find_if(command_list.begin(), command_list.end(), + [&](Command *cmd) -> bool + { + if (cmd_name.size() != cmd->get_lower_name().size()) + return false; + string tmp_name(cmd_name); + transform(tmp_name.begin(), tmp_name.end(), tmp_name.begin(), ::tolower); + return cmd->get_lower_name() == tmp_name; + }); #else - pos = find_if(command_list.begin(),command_list.end(), - bind2nd(WantedCmd(),cmd_name.c_str())); + pos = find_if(command_list.begin(),command_list.end(), + bind2nd(WantedCmd(),cmd_name.c_str())); #endif - if (pos == command_list.end()) - { - cout3 << "DeviceClass::get_cmd_by_name throwing exception" << endl; - TangoSys_OMemStream o; + if (pos == command_list.end()) + { + cout3 << "DeviceClass::get_cmd_by_name throwing exception" << endl; + TangoSys_OMemStream o; - o << cmd_name << " command not found" << ends; - Except::throw_exception((const char *)API_CommandNotFound, - o.str(), - (const char *)"DeviceClass::get_cmd_by_name"); - } + o << cmd_name << " command not found" << ends; + Except::throw_exception((const char *) API_CommandNotFound, + o.str(), + (const char *) "DeviceClass::get_cmd_by_name"); + } - return *(*pos); + return *(*pos); } //+------------------------------------------------------------------------------------------------------------------ @@ -1580,45 +1594,45 @@ Command &DeviceClass::get_cmd_by_name(const string &cmd_name) // //------------------------------------------------------------------------------------------------------------------ -Pipe &DeviceClass::get_pipe_by_name(const string &pipe_name,const string &dev_name) +Pipe &DeviceClass::get_pipe_by_name(const string &pipe_name, const string &dev_name) { - map >::iterator ite = ext->dev_pipe_list.find(dev_name); + map >::iterator ite = ext->dev_pipe_list.find(dev_name); if (ite == ext->dev_pipe_list.end()) { - cout3 << "DeviceClass::get_pipe_by_name throwing exception" << endl; - TangoSys_OMemStream o; + cout3 << "DeviceClass::get_pipe_by_name throwing exception" << endl; + TangoSys_OMemStream o; - o << dev_name << " device not found in pipe map" << ends; - Except::throw_exception(API_PipeNotFound,o.str(),"DeviceClass::get_pipe_by_name"); + o << dev_name << " device not found in pipe map" << ends; + Except::throw_exception(API_PipeNotFound, o.str(), "DeviceClass::get_pipe_by_name"); } - vector::iterator pos; + vector::iterator pos; #ifdef HAS_LAMBDA_FUNC - pos = find_if(ite->second.begin(),ite->second.end(), - [&] (Pipe *pi) -> bool - { - if (pipe_name.size() != pi->get_lower_name().size()) - return false; - string tmp_name(pipe_name); - transform(tmp_name.begin(),tmp_name.end(),tmp_name.begin(),::tolower); - return pi->get_lower_name() == tmp_name; - }); + pos = find_if(ite->second.begin(), ite->second.end(), + [&](Pipe *pi) -> bool + { + if (pipe_name.size() != pi->get_lower_name().size()) + return false; + string tmp_name(pipe_name); + transform(tmp_name.begin(), tmp_name.end(), tmp_name.begin(), ::tolower); + return pi->get_lower_name() == tmp_name; + }); #else - pos = find_if(ite->second.begin(),ite->second.end(), - bind2nd(WantedPipe(),pipe_name.c_str())); + pos = find_if(ite->second.begin(),ite->second.end(), + bind2nd(WantedPipe(),pipe_name.c_str())); #endif - if (pos == ite->second.end()) - { - cout3 << "DeviceClass::get_pipe_by_name throwing exception" << endl; - TangoSys_OMemStream o; + if (pos == ite->second.end()) + { + cout3 << "DeviceClass::get_pipe_by_name throwing exception" << endl; + TangoSys_OMemStream o; - o << pipe_name << " pipe not found" << ends; - Except::throw_exception(API_PipeNotFound,o.str(),"DeviceClass::get_pipe_by_name"); - } + o << pipe_name << " pipe not found" << ends; + Except::throw_exception(API_PipeNotFound, o.str(), "DeviceClass::get_pipe_by_name"); + } - return *(*pos); + return *(*pos); } //+------------------------------------------------------------------------------------------------------------------ @@ -1637,33 +1651,33 @@ Pipe &DeviceClass::get_pipe_by_name(const string &pipe_name,const string &dev_na void DeviceClass::remove_command(const string &cmd_name) { - vector::iterator pos; + vector::iterator pos; #ifdef HAS_LAMBDA_FUNC - pos = find_if(command_list.begin(),command_list.end(), - [&] (Command *cmd) -> bool - { - if (cmd_name.size() != cmd->get_lower_name().size()) - return false; - return cmd->get_lower_name() == cmd_name; - }); + pos = find_if(command_list.begin(), command_list.end(), + [&](Command *cmd) -> bool + { + if (cmd_name.size() != cmd->get_lower_name().size()) + return false; + return cmd->get_lower_name() == cmd_name; + }); #else - pos = find_if(command_list.begin(),command_list.end(), - bind2nd(WantedCmd(),cmd_name.c_str())); + pos = find_if(command_list.begin(),command_list.end(), + bind2nd(WantedCmd(),cmd_name.c_str())); #endif - if (pos == command_list.end()) - { - cout3 << "DeviceClass::get_cmd_by_name throwing exception" << endl; - TangoSys_OMemStream o; + if (pos == command_list.end()) + { + cout3 << "DeviceClass::get_cmd_by_name throwing exception" << endl; + TangoSys_OMemStream o; - o << cmd_name << " command not found" << ends; - Except::throw_exception((const char *)API_CommandNotFound, - o.str(), - (const char *)"DeviceClass::get_cmd_by_name"); - } + o << cmd_name << " command not found" << ends; + Except::throw_exception((const char *) API_CommandNotFound, + o.str(), + (const char *) "DeviceClass::get_cmd_by_name"); + } - command_list.erase(pos); + command_list.erase(pos); } //+------------------------------------------------------------------------------------------------------------------ @@ -1678,10 +1692,10 @@ void DeviceClass::remove_command(const string &cmd_name) void DeviceClass::check_att_conf() { - vector::iterator ite; + vector::iterator ite; - for (ite = device_list.begin();ite != device_list.end();++ite) - (*ite)->check_att_conf(); + for (ite = device_list.begin(); ite != device_list.end(); ++ite) + (*ite)->check_att_conf(); } //+------------------------------------------------------------------------------------------------------------------ @@ -1697,14 +1711,14 @@ void DeviceClass::check_att_conf() void DeviceClass::release_devices_mon() { - vector::iterator ite; + vector::iterator ite; // // Release monitor for all devices belonging to this class // - for (ite = device_list.begin();ite != device_list.end();++ite) - (*ite)->get_dev_monitor().rel_monitor(); + for (ite = device_list.begin(); ite != device_list.end(); ++ite) + (*ite)->get_dev_monitor().rel_monitor(); } //+------------------------------------------------------------------------------------------------------------------ @@ -1722,7 +1736,7 @@ void DeviceClass::release_devices_mon() // //------------------------------------------------------------------------------------------------------------------ -void DeviceClass::create_device_pipe(DeviceClass *cl,DeviceImpl *dev) +void DeviceClass::create_device_pipe(DeviceClass *cl, DeviceImpl *dev) { // @@ -1737,10 +1751,10 @@ void DeviceClass::create_device_pipe(DeviceClass *cl,DeviceImpl *dev) c_pipe->init_class_pipe(this); } - sort(pipe_list.begin(),pipe_list.end(),less_than_pipe); + sort(pipe_list.begin(), pipe_list.end(), less_than_pipe); string dev_name = dev->get_name_lower(); - ext->dev_pipe_list.insert(make_pair(dev_name,pipe_list)); + ext->dev_pipe_list.insert(make_pair(dev_name, pipe_list)); pipe_list.clear(); } @@ -1762,16 +1776,16 @@ void DeviceClass::create_device_pipe(DeviceClass *cl,DeviceImpl *dev) vector &DeviceClass::get_pipe_list(const string &dev_name) { string local_dev_name(dev_name); - transform(local_dev_name.begin(),local_dev_name.end(),local_dev_name.begin(),::tolower); + transform(local_dev_name.begin(), local_dev_name.end(), local_dev_name.begin(), ::tolower); - map >::iterator ite = ext->dev_pipe_list.find(local_dev_name); + map >::iterator ite = ext->dev_pipe_list.find(local_dev_name); if (ite == ext->dev_pipe_list.end()) { - cout3 << "DeviceClass::get_pipe_by_name throwing exception" << endl; - TangoSys_OMemStream o; + cout3 << "DeviceClass::get_pipe_by_name throwing exception" << endl; + TangoSys_OMemStream o; - o << dev_name << " device not found in pipe map" << ends; - Except::throw_exception(API_PipeNotFound,o.str(),"DeviceClass::get_pipe_list"); + o << dev_name << " device not found in pipe map" << ends; + Except::throw_exception(API_PipeNotFound, o.str(), "DeviceClass::get_pipe_list"); } return ite->second; diff --git a/test/cpp_test_suite/cxxtest/CMakeLists.txt b/test/cpp_test_suite/cxxtest/CMakeLists.txt index 4f7277170..27d1ffa5a 100644 --- a/test/cpp_test_suite/cxxtest/CMakeLists.txt +++ b/test/cpp_test_suite/cxxtest/CMakeLists.txt @@ -61,6 +61,7 @@ CXX_GENERATE_TEST(cxx_templ_cmd) CXX_GENERATE_TEST(cxx_exception) CXX_GENERATE_TEST(cxx_cmd_query) CXX_GENERATE_TEST(cxx_cmd_inout_enum) +CXX_GENERATE_TEST(cxx_cmd_types) CXX_GENERATE_TEST(cxx_seq_vec) CXX_GENERATE_TEST(cxx_signal)#TODO Windows CXX_GENERATE_TEST(cxx_test_state_on) diff --git a/test/cpp_test_suite/new_tests/cxx_cmd_types.cpp b/test/cpp_test_suite/new_tests/cxx_cmd_types.cpp new file mode 100644 index 000000000..08ec6ffdf --- /dev/null +++ b/test/cpp_test_suite/new_tests/cxx_cmd_types.cpp @@ -0,0 +1,902 @@ +//=================================================================================================================== +// +// file : cxx_cmd_types.cpp +// +// project : tango +// +// author(s) : ingvord +// +// Copyright (C) : 2004-2017 +// European Synchrotron Radiation Facility +// BP 220, Grenoble 38043 +// FRANCE +// +// This file is part of Tango. +// +// Tango is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// Tango is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty +// of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public License along with Tango. +// If not, see . +//=================================================================================================================== +// +// Created by ingvord on 3/13/17. +// +#ifndef CmdTypesTestSuite_h +#define CmdTypesTestSuite_h + +#include +#include +#include +#include +#include + +using namespace Tango; +using namespace std; + +#define cout cout << "\t" + +#undef SUITE_NAME +#define SUITE_NAME CmdTypesTestSuite + +class CmdTypesTestSuite: public CxxTest::TestSuite +{ +protected: + DeviceProxy *device; + size_t loop = 10; + +public: + SUITE_NAME() + { + +// +// Arguments check ------------------------------------------------- +// + + string device_name; + + device_name = CxxTest::TangoPrinter::get_param("device1"); + + CxxTest::TangoPrinter::validate_args(); + + +// +// Initialization -------------------------------------------------- +// + + try + { + device = new DeviceProxy(device_name); + device->ping(); + } + catch (CORBA::Exception &e) + { + Except::print_exception(e); + exit(-1); + } + + } + + virtual ~SUITE_NAME() + { + delete device; + } + + static SUITE_NAME *createSuite() + { + return new SUITE_NAME(); + } + + static void destroySuite(SUITE_NAME *suite) + { + delete suite; + } + +// +// Tests ------------------------------------------------------- +// + + void test_void(void) + { + for (size_t i = 0; i < loop; i++) + { + TS_ASSERT_THROWS_NOTHING(device->command_inout("IOVoid")); + } + } + + void test_boolean(void) + { + + for (size_t i = 0; i < loop; i++) + { + DeviceData din, dout; + bool in = true; + din << in; + TS_ASSERT_THROWS_NOTHING(dout = device->command_inout("IOBool", din)); + bool received; + int data_type = dout.get_type(); + dout >> received; + TS_ASSERT_DIFFERS(in, received); + TS_ASSERT_EQUALS(data_type, Tango::DEV_BOOLEAN); + } + } + + void test_short(void) + { + + for (size_t i = 0; i < loop; i++) + { + DeviceData din, dout; + short in = 2; + din << in; + TS_ASSERT_THROWS_NOTHING(dout = device->command_inout("IOShort", din)); + short received; + dout >> received; + int data_type = dout.get_type(); + TS_ASSERT_EQUALS(received, (in * 2)); + TS_ASSERT_EQUALS(data_type, Tango::DEV_SHORT); + } + } + + void test_long(void) + { + for (size_t i = 0; i < loop; i++) + { + DeviceData din, dout; + DevLong in = 3; + din << in; + TS_ASSERT_THROWS_NOTHING(dout = device->command_inout("IOLong", din)); + DevLong received; + dout >> received; + TS_ASSERT_EQUALS(received, (in * 2)); + } + } + + void test_float() + { + + for (size_t i = 0; i < loop; i++) + { + DeviceData din, dout; + float in = (float) 3.1; + din << in; + TS_ASSERT_THROWS_NOTHING(dout = device->command_inout("IOFloat", din)); + float received; + dout >> received; + TS_ASSERT_EQUALS(received, (in * 2)); + } + } + + void test_double(void) + { + + for (size_t i = 0; i < loop; i++) + { + DeviceData din, dout; + double in = 3.1; + din << in; + TS_ASSERT_THROWS_NOTHING(dout = device->command_inout("IODouble", din)); + double received; + dout >> received; + TS_ASSERT_EQUALS(received, (in * 2)); + } + } + + void test_unsigned_short(void) + { + + for (size_t i = 0; i < loop; i++) + { + DeviceData din, dout; + unsigned short in = 100; + din << in; + TS_ASSERT_THROWS_NOTHING(dout = device->command_inout("IOUShort", din)); + unsigned short received; + dout >> received; + TS_ASSERT_EQUALS(received, (in * 2)); + } + } + + void test_unsigned_long(void) + { + + for (size_t i = 0; i < loop; i++) + { + DeviceData din, dout; + DevULong in = 1000; + din << in; + TS_ASSERT_THROWS_NOTHING(dout = device->command_inout("IOULong", din)); + DevULong received; + dout >> received; + TS_ASSERT_EQUALS(received, (in * 2)); + } + } + + void test_CPP_string(void) + { + + for (size_t i = 0; i < loop; i++) + { + DeviceData din, dout; + string str("abc"); + din << str; + TS_ASSERT_THROWS_NOTHING(dout = device->command_inout("IOString", din)); + string received; + dout >> received; + TS_ASSERT_EQUALS(received, "cba"); + } + } + + void test_classical_C_string(void) + { + for (size_t i = 0; i < loop; i++) + { + DeviceData din, dout; + const char *str = "abcd"; + din << str; + TS_ASSERT_THROWS_NOTHING(dout = device->command_inout("IOString", din)); + const char *received; + dout >> received; + TS_ASSERT(strcmp(str, "dcba")); + } + } + + void test_char_array(void) + { + for (size_t i = 0; i < loop; i++) + { + DeviceData din, dout; + vector in; + in.push_back(1); + in.push_back(2); + din << in; + TS_ASSERT_THROWS_NOTHING(dout = device->command_inout("IOCharArray", din)); + vector received; + dout >> received; + int data_type = dout.get_type(); + TS_ASSERT_EQUALS(in[0], received[1]); + TS_ASSERT_EQUALS(in[1], received[0]); + TS_ASSERT_EQUALS(data_type, Tango::DEVVAR_CHARARRAY); + } + } + + void test_DevVarCharArray(void) + { + for (size_t i = 0; i < loop; i++) + { + const DevVarCharArray *received; + DeviceData din, dout; + + DevVarCharArray *in = new DevVarCharArray(2); + in->length(2); + (*in)[0] = 10; + (*in)[1] = 20; + din << in; + + TS_ASSERT_THROWS_NOTHING(dout = device->command_inout("IOCharArray", din)); + dout >> received; + + TS_ASSERT_EQUALS(10, (*received)[1]); + TS_ASSERT_EQUALS(20, (*received)[0]); + } + + for (size_t i = 0; i < loop; i++) + { + const DevVarCharArray *received; + DeviceData din, dout; + + DevVarCharArray in(2); + in.length(2); + in[0] = 10; + in[1] = 20; + din << in; + + TS_ASSERT_THROWS_NOTHING(dout = device->command_inout("IOCharArray", din)); + dout >> received; + + TS_ASSERT_EQUALS(in[0], (*received)[1]); + TS_ASSERT_EQUALS(in[1], (*received)[0]); + } + } + + void test_short_array(void) + { + for (size_t i = 0; i < loop; i++) + { + DeviceData din, dout; + vector in; + in.push_back(10); + in.push_back(20); + din << in; + TS_ASSERT_THROWS_NOTHING(dout = device->command_inout("IOShortArray", din)); + vector received; + dout >> received; + TS_ASSERT_EQUALS(received[0], (in[0] * 2)); + TS_ASSERT_EQUALS(received[1], (in[1] * 2)); + } + } + + void test_DevVarShortArray(void) + { + for (size_t i = 0; i < loop; i++) + { + DeviceData din, dout; + DevVarShortArray *in = new DevVarShortArray(2); + in->length(2); + (*in)[0] = 1; + (*in)[1] = 2; + + din << in; + TS_ASSERT_THROWS_NOTHING(dout = device->command_inout("IOShortArray", din)); + const DevVarShortArray *received; + dout >> received; + TS_ASSERT_EQUALS((*received)[0], (1 * 2)); + TS_ASSERT_EQUALS((*received)[1], (2 * 2)); + } + + for (size_t i = 0; i < loop; i++) + { + DeviceData din, dout; + DevVarShortArray in(2); + in.length(2); + in[0] = 1; + in[1] = 2; + + din << in; + TS_ASSERT_THROWS_NOTHING(dout = device->command_inout("IOShortArray", din)); + const DevVarShortArray *received; + dout >> received; + TS_ASSERT_EQUALS((*received)[0], (in[0] * 2)); + TS_ASSERT_EQUALS((*received)[1], (in[1] * 2)); + } + } + + void test_long_array(void) + { + for (size_t i = 0; i < loop; i++) + { + DeviceData din, dout; + vector in; + in.push_back(100); + in.push_back(200); + din << in; + TS_ASSERT_THROWS_NOTHING(dout = device->command_inout("IOLongArray", din)); + vector received; + dout >> received; + TS_ASSERT_EQUALS(received[0], (in[0] * 2)); + TS_ASSERT_EQUALS(received[1], (in[1] * 2)); + } + } + + void test_DevVarLongArray(void) + { + for (size_t i = 0; i < loop; i++) + { + DeviceData din, dout; + DevVarLongArray *in = new DevVarLongArray(2); + in->length(2); + (*in)[0] = 11; + (*in)[1] = 22; + din << in; + TS_ASSERT_THROWS_NOTHING(dout = device->command_inout("IOLongArray", din)); + const DevVarLongArray *received; + dout >> received; + TS_ASSERT_EQUALS((*received)[0], (11 * 2)); + TS_ASSERT_EQUALS((*received)[1], (22 * 2)); + } + + for (size_t i = 0; i < loop; i++) + { + DeviceData din, dout; + DevVarLongArray in(2); + in.length(2); + in[0] = 11; + in[1] = 22; + din << in; + TS_ASSERT_THROWS_NOTHING(dout = device->command_inout("IOLongArray", din)); + const DevVarLongArray *received; + dout >> received; + TS_ASSERT_EQUALS((*received)[0], (in[0] * 2)); + TS_ASSERT_EQUALS((*received)[1], (in[1] * 2)); + } + } + + void test_float_array(void) + { + for (size_t i = 0; i < loop; i++) + { + DeviceData din, dout; + vector in; + in.push_back((float) 100.1); + in.push_back((float) 200.2); + din << in; + TS_ASSERT_THROWS_NOTHING(dout = device->command_inout("IOFloatArray", din)); + vector received; + dout >> received; + TS_ASSERT_EQUALS(received[0], (in[0] * 2)); + TS_ASSERT_EQUALS(received[1], (in[1] * 2)); + } + } + + void test_DevVarFloatArray(void) + { + for (size_t i = 0; i < loop; i++) + { + DeviceData din, dout; + DevVarFloatArray *in = new DevVarFloatArray(2); + in->length(2); + (*in)[0] = (float) 1.11; + (*in)[1] = (float) 2.22; + din << in; + TS_ASSERT_THROWS_NOTHING(dout = device->command_inout("IOFloatArray", din)); + const DevVarFloatArray *received; + dout >> received; + TS_ASSERT_EQUALS((*received)[0], ((float) 1.11 * 2)); + TS_ASSERT_EQUALS((*received)[1], ((float) 2.22 * 2)); + } + + for (size_t i = 0; i < loop; i++) + { + DeviceData din, dout; + DevVarFloatArray in(2); + in.length(2); + in[0] = (float) 1.11; + in[1] = (float) 2.22; + din << in; + TS_ASSERT_THROWS_NOTHING(dout = device->command_inout("IOFloatArray", din)); + const DevVarFloatArray *received; + dout >> received; + TS_ASSERT_EQUALS((*received)[0], (in[0] * 2)); + TS_ASSERT_EQUALS((*received)[1], (in[1] * 2)); + } + } + + void test_double_array(void) + { + + for (size_t i = 0; i < loop; i++) + { + DeviceData din, dout; + vector in; + in.push_back(1.234); + in.push_back(2.111); + din << in; + TS_ASSERT_THROWS_NOTHING(dout = device->command_inout("IODoubleArray", din)); + vector received; + dout >> received; + TS_ASSERT_EQUALS(received[0], (in[0] * 2)); + TS_ASSERT_EQUALS(received[1], (in[1] * 2)); + } + } + + void test_DevVarDoubleArray(void) + { + + for (size_t i = 0; i < loop; i++) + { + DeviceData din, dout; + DevVarDoubleArray *in = new DevVarDoubleArray(2); + in->length(2); + (*in)[0] = 1.12; + (*in)[1] = 3.45; + din << in; + TS_ASSERT_THROWS_NOTHING(dout = device->command_inout("IODoubleArray", din)); + const DevVarDoubleArray *received; + dout >> received; + TS_ASSERT_EQUALS((*received)[0], (1.12 * 2)); + TS_ASSERT_EQUALS((*received)[1], (3.45 * 2)); + } + + for (size_t i = 0; i < loop; i++) + { + DeviceData din, dout; + DevVarDoubleArray in(2); + in.length(2); + in[0] = 1.12; + in[1] = 3.45; + din << in; + TS_ASSERT_THROWS_NOTHING(dout = device->command_inout("IODoubleArray", din)); + const DevVarDoubleArray *received; + dout >> received; + TS_ASSERT_EQUALS((*received)[0], (in[0] * 2)); + TS_ASSERT_EQUALS((*received)[1], (in[1] * 2)); + } + } + + void test_unsigned_short_array(void) + { + for (size_t i = 0; i < loop; i++) + { + DeviceData din, dout; + vector in; + in.push_back(100); + in.push_back(200); + din << in; + TS_ASSERT_THROWS_NOTHING(dout = device->command_inout("IOUShortArray", din)); + vector received; + dout >> received; + TS_ASSERT_EQUALS(received[0], (in[0] * 2)); + TS_ASSERT_EQUALS(received[1], (in[1] * 2)); + } + } + + void test_DevVarUShortArray(void) + { + + for (size_t i = 0; i < loop; i++) + { + DeviceData din, dout; + DevVarUShortArray *in = new DevVarUShortArray(2); + in->length(2); + (*in)[0] = 11; + (*in)[1] = 22; + din << in; + TS_ASSERT_THROWS_NOTHING(dout = device->command_inout("IOUShortArray", din)); + const DevVarUShortArray *received; + dout >> received; + TS_ASSERT_EQUALS((*received)[0], (11 * 2)); + TS_ASSERT_EQUALS((*received)[1], (22 * 2)); + } + + for (size_t i = 0; i < loop; i++) + { + DeviceData din, dout; + DevVarUShortArray in(2); + in.length(2); + in[0] = 11; + in[1] = 22; + din << in; + TS_ASSERT_THROWS_NOTHING(dout = device->command_inout("IOUShortArray", din)); + const DevVarUShortArray *received; + dout >> received; + TS_ASSERT_EQUALS((*received)[0], (in[0] * 2)); + TS_ASSERT_EQUALS((*received)[1], (in[1] * 2)); + } + } + + void test_unsigned_long_array(void) + { + for (size_t i = 0; i < loop; i++) + { + DeviceData din, dout; + vector in; + in.push_back(1000); + in.push_back(2001); + din << in; + TS_ASSERT_THROWS_NOTHING(dout = device->command_inout("IOULongArray", din)); + vector received; + dout >> received; + TS_ASSERT_EQUALS(received[0], (in[0] * 2)); + TS_ASSERT_EQUALS(received[1], (in[1] * 2)); + } + } + + void test_DevVarULongArray(void) + { + for (size_t i = 0; i < loop; i++) + { + DeviceData din, dout; + DevVarULongArray *in = new DevVarULongArray(2); + in->length(2); + (*in)[0] = 111; + (*in)[1] = 222; + din << in; + TS_ASSERT_THROWS_NOTHING(dout = device->command_inout("IOULongArray", din)); + const DevVarULongArray *received; + dout >> received; + TS_ASSERT_EQUALS((*received)[0], (111 * 2)); + TS_ASSERT_EQUALS((*received)[1], (222 * 2)); + } + + for (size_t i = 0; i < loop; i++) + { + DeviceData din, dout; + DevVarULongArray in(2); + in.length(2); + in[0] = 111; + in[1] = 222; + din << in; + TS_ASSERT_THROWS_NOTHING(dout = device->command_inout("IOULongArray", din)); + const DevVarULongArray *received; + dout >> received; + TS_ASSERT_EQUALS((*received)[0], (in[0] * 2)); + TS_ASSERT_EQUALS((*received)[1], (in[1] * 2)); + } + } + + void test_string_array(void) + { + for (size_t i = 0; i < loop; i++) + { + DeviceData din, dout; + vector in; + in.push_back("abc"); + in.push_back("wxyz"); + din << in; + TS_ASSERT_THROWS_NOTHING(dout = device->command_inout("IOStringArray", din)); + vector received; + int data_type = dout.get_type(); + dout >> received; + + TS_ASSERT_EQUALS(received[0], in[1]); + TS_ASSERT_EQUALS(received[1], in[0]); + TS_ASSERT_EQUALS(data_type, Tango::DEVVAR_STRINGARRAY); + } + } + + void test_DevVarStringArray(void) + { + for (size_t i = 0; i < loop; i++) + { + DeviceData din, dout; + DevVarStringArray *in = new DevVarStringArray(2); + in->length(2); + (*in)[0] = Tango::string_dup("abc"); + (*in)[1] = Tango::string_dup("def"); + din << in; + TS_ASSERT_THROWS_NOTHING(dout = device->command_inout("IOStringArray", din)); + const DevVarStringArray *received; + dout >> received; + TS_ASSERT(!strcmp((*received)[0], "def")); + TS_ASSERT(!strcmp((*received)[1], "abc")); + } + } + + void test_vector_of_long_and_vector_of_string(void) + { + + for (size_t i = 0; i < loop; i++) + { + DeviceData din, dout; + vector in1; + in1.push_back(1000); + in1.push_back(2001); + in1.push_back(2002); + vector in2; + in2.push_back("abc"); + in2.push_back("def"); + din.insert(in1, in2); + TS_ASSERT_THROWS_NOTHING(dout = device->command_inout("IOLongString", din)); + vector received1; + vector received2; + dout.extract(received1, received2); + + TS_ASSERT_EQUALS(received2[0], in2[0]); + TS_ASSERT_EQUALS(received2[1], in2[1]); + TS_ASSERT_EQUALS(received1[0], (in1[0] * 2)); + TS_ASSERT_EQUALS(received1[1], (in1[1] * 2)); + TS_ASSERT_EQUALS(received1[2], (in1[2] * 2)); + } + } + + void test_DevVarLongStringArray(void) + { + + for (size_t i = 0; i < loop; i++) + { + DeviceData din, dout; + DevVarLongStringArray *in = new DevVarLongStringArray(); + in->lvalue.length(2); + in->lvalue[0] = 111; + in->lvalue[1] = 222; + in->svalue.length(2); + in->svalue[0] = Tango::string_dup("zxc"); + in->svalue[1] = Tango::string_dup("qwe"); + din << in; + TS_ASSERT_THROWS_NOTHING(dout = device->command_inout("IOLongString", din)); + const DevVarLongStringArray *received; + dout >> received; + + TS_ASSERT_EQUALS(received->lvalue[0], (111 * 2)); + TS_ASSERT_EQUALS(received->lvalue[1], (222 * 2)); + TS_ASSERT(!strcmp(received->svalue[0], "zxc")); + TS_ASSERT(!strcmp(received->svalue[1], "qwe")); + } + + for (size_t i = 0; i < loop; i++) + { + DeviceData din, dout; + DevVarLongStringArray in; + in.lvalue.length(2); + in.lvalue[0] = 111; + in.lvalue[1] = 222; + in.svalue.length(2); + in.svalue[0] = Tango::string_dup("zxc"); + in.svalue[1] = Tango::string_dup("qwe"); + din << in; + TS_ASSERT_THROWS_NOTHING(dout = device->command_inout("IOLongString", din)); + const DevVarLongStringArray *received; + dout >> received; + int data_type = dout.get_type(); + + TS_ASSERT_EQUALS(received->lvalue[0], (in.lvalue[0] * 2)); + TS_ASSERT_EQUALS(received->lvalue[1], (in.lvalue[1] * 2)); + TS_ASSERT(!strcmp(received->svalue[0], in.svalue[0])); + TS_ASSERT(!strcmp(received->svalue[1], in.svalue[1])); + TS_ASSERT_EQUALS(data_type, Tango::DEVVAR_LONGSTRINGARRAY); + } + } + + void test_vector_of_double_and_vector_of_string(void) + { + + for (size_t i = 0; i < loop; i++) + { + DeviceData din, dout; + vector in1; + in1.push_back(10.0); + in1.push_back(20.1); + in1.push_back(20.2); + vector in2; + in2.push_back("abc"); + in2.push_back("def"); + din.insert(in1, in2); + TS_ASSERT_THROWS_NOTHING(dout = device->command_inout("IODoubleString", din)); + vector received1; + vector received2; + dout.extract(received1, received2); + int data_type = dout.get_type(); + + TS_ASSERT_EQUALS(received2[0], in2[0]); + TS_ASSERT_EQUALS(received2[1], in2[1]); + TS_ASSERT_EQUALS(received1[0], (in1[0] * 2)); + TS_ASSERT_EQUALS(received1[1], (in1[1] * 2)); + TS_ASSERT_EQUALS(received1[2], (in1[2] * 2)); + TS_ASSERT_EQUALS(data_type, Tango::DEVVAR_DOUBLESTRINGARRAY); + } + } + + void test_DevVarDoubleStringArray(void) + { + + for (size_t i = 0; i < loop; i++) + { + DeviceData din, dout; + DevVarDoubleStringArray *in = new DevVarDoubleStringArray(); + in->dvalue.length(2); + in->dvalue[0] = 1.11; + in->dvalue[1] = 22.2; + in->svalue.length(3); + in->svalue[0] = Tango::string_dup("iop"); + in->svalue[1] = Tango::string_dup("jkl"); + in->svalue[2] = Tango::string_dup("bnm"); + din << in; + TS_ASSERT_THROWS_NOTHING(dout = device->command_inout("IODoubleString", din)); + const DevVarDoubleStringArray *received; + dout >> received; + + TS_ASSERT_EQUALS(received->dvalue[0], (1.11 * 2)); + TS_ASSERT_EQUALS(received->dvalue[1], (22.2 * 2)); + TS_ASSERT(!strcmp(received->svalue[0], "iop")); + TS_ASSERT(!strcmp(received->svalue[1], "jkl")); + TS_ASSERT(!strcmp(received->svalue[2], "bnm")); + } + + + for (size_t i = 0; i < loop; i++) + { + DeviceData din, dout; + DevVarDoubleStringArray in; + in.dvalue.length(2); + in.dvalue[0] = 1.11; + in.dvalue[1] = 22.2; + in.svalue.length(3); + in.svalue[0] = Tango::string_dup("iop"); + in.svalue[1] = Tango::string_dup("jkl"); + in.svalue[2] = Tango::string_dup("bnm"); + din << in; + TS_ASSERT_THROWS_NOTHING(dout = device->command_inout("IODoubleString", din)); + const DevVarDoubleStringArray *received; + dout >> received; + + TS_ASSERT_EQUALS(received->dvalue[0], (in.dvalue[0] * 2)); + TS_ASSERT_EQUALS(received->dvalue[1], (in.dvalue[1] * 2)); + TS_ASSERT(!strcmp(received->svalue[0], in.svalue[0])); + TS_ASSERT(!strcmp(received->svalue[1], in.svalue[1])); + TS_ASSERT(!strcmp(received->svalue[2], in.svalue[2])); + } + } + + void test_DevEncoded(void) + { + + for (size_t i = 0; i < loop; i++) + { + DeviceData din, dout; + DevEncoded in; + in.encoded_data.length(2); + in.encoded_data[0] = 11; + in.encoded_data[1] = 22; + in.encoded_format = Tango::string_dup("Sent"); + din << in; + TS_ASSERT_THROWS_NOTHING(dout = device->command_inout("IOEncoded", din)); + const DevEncoded *received; + dout >> received; + int data_type = dout.get_type(); + + TS_ASSERT_EQUALS(received->encoded_data.length(), 2); + TS_ASSERT_EQUALS(received->encoded_data[0], (11 * 2)); + TS_ASSERT_EQUALS(received->encoded_data[1], (22 * 2)); + TS_ASSERT(!strcmp(received->encoded_format, "Returned string")); + TS_ASSERT_EQUALS(data_type, Tango::DEV_ENCODED); + } + + for (size_t i = 0; i < loop; i++) + { + DeviceData din, dout; + string in_str("Sent"); + vector in_data; + + in_data.push_back((unsigned char) 15); + in_data.push_back((unsigned char) 25); + + din.insert(in_str, in_data); + TS_ASSERT_THROWS_NOTHING(dout = device->command_inout("IOEncoded", din)); + DevEncoded received; + dout >> received; + int data_type = dout.get_type(); + + TS_ASSERT_EQUALS(received.encoded_data.length(), 2); + TS_ASSERT_EQUALS(received.encoded_data[0], (15 * 2)); + TS_ASSERT_EQUALS(received.encoded_data[1], (25 * 2)); + TS_ASSERT(!strcmp(received.encoded_format, "Returned string")); + TS_ASSERT_EQUALS(data_type, Tango::DEV_ENCODED); + } + + for (size_t i = 0; i < loop; i++) + { + DeviceData din, dout; + string in_str("Sent"); + DevVarCharArray in_data; + + in_data.length(4); + in_data[0] = ((unsigned char) 15); + in_data[1] = ((unsigned char) 25); + in_data[2] = ((unsigned char) 35); + in_data[3] = ((unsigned char) 45); + + din.insert("Sent", &in_data); + TS_ASSERT_THROWS_NOTHING(dout = device->command_inout("IOEncoded", din)); + DevEncoded received; + dout >> received; + int data_type = dout.get_type(); + + TS_ASSERT_EQUALS(received.encoded_data.length(), 4); + TS_ASSERT_EQUALS(received.encoded_data[0], (15 * 2)); + TS_ASSERT_EQUALS(received.encoded_data[1], (25 * 2)); + TS_ASSERT_EQUALS(received.encoded_data[2], (35 * 2)); + TS_ASSERT_EQUALS(received.encoded_data[3], (45 * 2)); + TS_ASSERT(!strcmp(received.encoded_format, "Returned string")); + TS_ASSERT_EQUALS(data_type, Tango::DEV_ENCODED); + } + } + + void test_DevicePipeBlob(void) + { + for (size_t i = 0; i < loop; i++) + { + DeviceData din, dout; + DevicePipeBlob in{"TestPipeCmd"}; + in.set_current_delt_name("level 0"); + DevLong data = 123; + in << data; + din.insert(in); + TS_ASSERT_THROWS_NOTHING(dout = device->command_inout("IOPipeBlob", din)); + DevicePipeBlob *received; + dout.extract(received); + int data_type = dout.get_type(); + + //TODO + TS_ASSERT_EQUALS(data_type, Tango::DEV_PIPE_BLOB); + } + } +}; +#undef cout +#endif // CmdTypesTestSuite_h + + diff --git a/test/cpp_test_suite/old_tests/CMakeLists.txt b/test/cpp_test_suite/old_tests/CMakeLists.txt index a1d0f0f8a..3ba31f7c5 100644 --- a/test/cpp_test_suite/old_tests/CMakeLists.txt +++ b/test/cpp_test_suite/old_tests/CMakeLists.txt @@ -9,7 +9,6 @@ set(TESTS acc_right attr_proxy attr_types cmd_inout - cmd_types ConfEventBugClient copy_devproxy ds_cache @@ -50,8 +49,6 @@ endforeach(TEST) configure_file(locked_device_cmd.h.cmake locked_device_cmd.h @ONLY) target_include_directories(lock PRIVATE ${CMAKE_CURRENT_BINARY_DIR}) -add_test(NAME "old_tests::cmd_types" COMMAND $ ${DEV1} 10) - add_test(NAME "old_tests::attr_types" COMMAND $ ${DEV1} 10) add_test(NAME "old_tests::att_conf" COMMAND $ ${DEV1}) add_test(NAME "old_tests::misc_devdata" COMMAND $) diff --git a/test/cpp_test_suite/old_tests/cmd_types.cpp b/test/cpp_test_suite/old_tests/cmd_types.cpp deleted file mode 100644 index 1ee6b9819..000000000 --- a/test/cpp_test_suite/old_tests/cmd_types.cpp +++ /dev/null @@ -1,1139 +0,0 @@ -/* - * example of a client using the TANGO device api. - */ - -#include -#include - - -using namespace Tango; -using namespace std; - -int main(int argc, char **argv) -{ - DeviceProxy *device; - - if (argc != 3) - { - cout << "usage: %s device loop" << endl; - exit(-1); - } - - string device_name = argv[1]; - int loop = atoi(argv[2]); - - try - { - device = new DeviceProxy(device_name); - } - catch (CORBA::Exception &e) - { - Except::print_exception(e); - exit(1); - } - - cout << endl << "new DeviceProxy(" << device->name() << ") returned" << endl << endl; - - int i; - -// Test void - - for (i = 0;i < loop;i++) - { - try - { - device->command_inout("IOVoid"); - } - catch (CORBA::Exception &e) - { - Except::print_exception(e); - exit(-1); - } - } - cout << " Void --> OK" << endl; - -// Test boolean - - for (i = 0;i < loop;i++) - { - DeviceData din,dout; - bool in = true; - din << in; - try - { - dout = device->command_inout("IOBool",din); - } - catch (CORBA::Exception &e) - { - Except::print_exception(e); - exit(-1); - } - bool received; - int data_type = dout.get_type(); - dout >> received; - assert( in != received ); - assert( data_type == Tango::DEV_BOOLEAN); - } - cout << " Boolean --> OK" << endl; - -// test short - - for (i = 0;i < loop;i++) - { - DeviceData din,dout; - short in = 2; - din << in; - try - { - dout = device->command_inout("IOShort",din); - } - catch (CORBA::Exception &e) - { - Except::print_exception(e); - exit(-1); - } - short received; - dout >> received; - int data_type = dout.get_type(); - assert( received == (in * 2) ); - assert(data_type == Tango::DEV_SHORT ); - } - cout << " Short --> OK" << endl; - -// test long - - for (i = 0;i < loop;i++) - { - DeviceData din,dout; - DevLong in = 3; - din << in; - try - { - dout = device->command_inout("IOLong",din); - } - catch (CORBA::Exception &e) - { - Except::print_exception(e); - exit(-1); - } - DevLong received; - dout >> received; - assert( received == (in * 2) ); - } - cout << " Long --> OK" << endl; - -// test float - - for (i = 0;i < loop;i++) - { - DeviceData din,dout; - float in = (float)3.1; - din << in; - try - { - dout = device->command_inout("IOFloat",din); - } - catch (CORBA::Exception &e) - { - Except::print_exception(e); - exit(-1); - } - float received; - dout >> received; - assert( received == (in * 2) ); - } - cout << " Float --> OK" << endl; - -// test double - - for (i = 0;i < loop;i++) - { - DeviceData din,dout; - double in = 3.1; - din << in; - try - { - dout = device->command_inout("IODouble",din); - } - catch (CORBA::Exception &e) - { - Except::print_exception(e); - exit(-1); - } - double received; - dout >> received; - assert( received == (in * 2) ); - } - cout << " Double --> OK" << endl; - -// test unsigned short - - for (i = 0;i < loop;i++) - { - DeviceData din,dout; - unsigned short in = 100; - din << in; - try - { - dout = device->command_inout("IOUShort",din); - } - catch (CORBA::Exception &e) - { - Except::print_exception(e); - exit(-1); - } - unsigned short received; - dout >> received; - assert( received == (in * 2) ); - } - cout << " Unsigned Short --> OK" << endl; - -// test unsigned long - - for (i = 0;i < loop;i++) - { - DeviceData din,dout; - DevULong in = 1000; - din << in; - try - { - dout = device->command_inout("IOULong",din); - } - catch (CORBA::Exception &e) - { - Except::print_exception(e); - exit(-1); - } - DevULong received; - dout >> received; - assert( received == (in * 2) ); - } - cout << " Unsigned Long --> OK" << endl; - -// test C++ string - - for (i = 0;i < loop;i++) - { - DeviceData din,dout; - string str("abc"); - din << str; - try - { - dout = device->command_inout("IOString",din); - } - catch (CORBA::Exception &e) - { - Except::print_exception(e); - exit(-1); - } - string received; - dout >> received; - assert( received == "cba" ); - } - cout << " C++ string --> OK" << endl; - -// test classical C string - - for (i = 0;i < loop;i++) - { - DeviceData din,dout; - const char *str = "abcd"; - din << str; - try - { - dout = device->command_inout("IOString",din); - } - catch (CORBA::Exception &e) - { - Except::print_exception(e); - exit(-1); - } - const char *received; - dout >> received; - assert( strcmp(str,"dcba") ); - } - cout << " C string --> OK" << endl; - -// test char array - - for (i = 0;i < loop;i++) - { - DeviceData din,dout; - vector in; - in.push_back(1); - in.push_back(2); - din << in; - try - { - dout = device->command_inout("IOCharArray",din); - } - catch (CORBA::Exception &e) - { - Except::print_exception(e); - exit(-1); - } - vector received; - dout >> received; - int data_type = dout.get_type(); - assert( in[0] == received[1] ); - assert( in[1] == received[0] ); - assert( data_type == Tango::DEVVAR_CHARARRAY ); - } - cout << " vector of unsigned char --> OK" << endl; - -// test DevVarCharArray - - - for (i = 0;i < loop;i++) - { - const DevVarCharArray *received; - DeviceData din,dout; - - DevVarCharArray *in = new DevVarCharArray(2); - in->length(2); - (*in)[0] = 10; - (*in)[1] = 20; - din << in; - - try - { - dout = device->command_inout("IOCharArray",din); - } - catch (CORBA::Exception &e) - { - Except::print_exception(e); - exit(-1); - } - dout >> received; - - assert( 10 == (*received)[1] ); - assert( 20 == (*received)[0] ); - } - - for (i = 0;i < loop;i++) - { - const DevVarCharArray *received; - DeviceData din,dout; - - DevVarCharArray in(2); - in.length(2); - in[0] = 10; - in[1] = 20; - din << in; - - try - { - dout = device->command_inout("IOCharArray",din); - } - catch (CORBA::Exception &e) - { - Except::print_exception(e); - exit(-1); - } - dout >> received; - - assert( in[0] == (*received)[1] ); - assert( in[1] == (*received)[0] ); - } - cout << " DevVarCharArray (by pointer and reference) --> OK" << endl; - -// test short array - - for (i = 0;i < loop;i++) - { - DeviceData din,dout; - vector in; - in.push_back(10); - in.push_back(20); - din << in; - try - { - dout = device->command_inout("IOShortArray",din); - } - catch (CORBA::Exception &e) - { - Except::print_exception(e); - exit(-1); - } - vector received; - dout >> received; - assert( received[0] == (in[0] * 2) ); - assert( received[1] == (in[1] * 2) ); - } - cout << " vector of short --> OK" << endl; - -// test DevVarShortArray - - for (i = 0;i < loop;i++) - { - DeviceData din,dout; - DevVarShortArray *in = new DevVarShortArray(2); - in->length(2); - (*in)[0] = 1; - (*in)[1] = 2; - - din << in; - try - { - dout = device->command_inout("IOShortArray",din); - } - catch (CORBA::Exception &e) - { - Except::print_exception(e); - exit(-1); - } - const DevVarShortArray *received; - dout >> received; - assert( (*received)[0] == (1 * 2) ); - assert( (*received)[1] == (2 * 2) ); - } - - for (i = 0;i < loop;i++) - { - DeviceData din,dout; - DevVarShortArray in(2); - in.length(2); - in[0] = 1; - in[1] = 2; - - din << in; - try - { - dout = device->command_inout("IOShortArray",din); - } - catch (CORBA::Exception &e) - { - Except::print_exception(e); - exit(-1); - } - const DevVarShortArray *received; - dout >> received; - assert( (*received)[0] == (in[0] * 2) ); - assert( (*received)[1] == (in[1] * 2) ); - } - cout << " DevVarShortArray (by pointer and reference) --> OK" << endl; - -// test long array - - for (i = 0;i < loop;i++) - { - DeviceData din,dout; - vector in; - in.push_back(100); - in.push_back(200); - din << in; - try - { - dout = device->command_inout("IOLongArray",din); - } - catch (CORBA::Exception &e) - { - Except::print_exception(e); - exit(-1); - } - vector received; - dout >> received; - assert( received[0] == (in[0] * 2) ); - assert( received[1] == (in[1] * 2) ); - } - cout << " vector of long --> OK" << endl; - -// test DevVarLongArray - - for (i = 0;i < loop;i++) - { - DeviceData din,dout; - DevVarLongArray *in = new DevVarLongArray(2); - in->length(2); - (*in)[0] = 11; - (*in)[1] = 22; - din << in; - try - { - dout = device->command_inout("IOLongArray",din); - } - catch (CORBA::Exception &e) - { - Except::print_exception(e); - exit(-1); - } - const DevVarLongArray *received; - dout >> received; - assert( (*received)[0] == (11 * 2) ); - assert( (*received)[1] == (22 * 2) ); - } - - for (i = 0;i < loop;i++) - { - DeviceData din,dout; - DevVarLongArray in(2); - in.length(2); - in[0] = 11; - in[1] = 22; - din << in; - try - { - dout = device->command_inout("IOLongArray",din); - } - catch (CORBA::Exception &e) - { - Except::print_exception(e); - exit(-1); - } - const DevVarLongArray *received; - dout >> received; - assert( (*received)[0] == (in[0] * 2) ); - assert( (*received)[1] == (in[1] * 2) ); - } - cout << " DevVarLongArray (by pointer and reference) --> OK" << endl; - -// test float array - - for (i = 0;i < loop;i++) - { - DeviceData din,dout; - vector in; - in.push_back((float)100.1); - in.push_back((float)200.2); - din << in; - try - { - dout = device->command_inout("IOFloatArray",din); - } - catch (CORBA::Exception &e) - { - Except::print_exception(e); - exit(-1); - } - vector received; - dout >> received; - assert( received[0] == (in[0] * 2) ); - assert( received[1] == (in[1] * 2) ); - } - cout << " vector of float --> OK" << endl; - -// test DevVarFloatArray - - for (i = 0;i < loop;i++) - { - DeviceData din,dout; - DevVarFloatArray *in = new DevVarFloatArray(2); - in->length(2); - (*in)[0] = (float)1.11; - (*in)[1] = (float)2.22; - din << in; - try - { - dout = device->command_inout("IOFloatArray",din); - } - catch (CORBA::Exception &e) - { - Except::print_exception(e); - exit(-1); - } - const DevVarFloatArray *received; - dout >> received; - assert( (*received)[0] == ((float)1.11 * 2) ); - assert( (*received)[1] == ((float)2.22 * 2) ); - } - - for (i = 0;i < loop;i++) - { - DeviceData din,dout; - DevVarFloatArray in(2); - in.length(2); - in[0] = (float)1.11; - in[1] = (float)2.22; - din << in; - try - { - dout = device->command_inout("IOFloatArray",din); - } - catch (CORBA::Exception &e) - { - Except::print_exception(e); - exit(-1); - } - const DevVarFloatArray *received; - dout >> received; - assert( (*received)[0] == (in[0] * 2) ); - assert( (*received)[1] == (in[1] * 2) ); - } - cout << " DevVarFloatArray (by pointer and reference) --> OK" << endl; - -// test double array - - for (i = 0;i < loop;i++) - { - DeviceData din,dout; - vector in; - in.push_back(1.234); - in.push_back(2.111); - din << in; - try - { - dout = device->command_inout("IODoubleArray",din); - } - catch (CORBA::Exception &e) - { - Except::print_exception(e); - exit(-1); - } - vector received; - dout >> received; - assert( received[0] == (in[0] * 2) ); - assert( received[1] == (in[1] * 2) ); - } - cout << " vector of double --> OK" << endl; - -// test DevVarDoubleArray - - for (i = 0;i < loop;i++) - { - DeviceData din,dout; - DevVarDoubleArray *in = new DevVarDoubleArray(2); - in->length(2); - (*in)[0] = 1.12; - (*in)[1] = 3.45; - din << in; - try - { - dout = device->command_inout("IODoubleArray",din); - } - catch (CORBA::Exception &e) - { - Except::print_exception(e); - exit(-1); - } - const DevVarDoubleArray *received; - dout >> received; - assert( (*received)[0] == ( 1.12 * 2) ); - assert( (*received)[1] == ( 3.45 * 2) ); - } - - for (i = 0;i < loop;i++) - { - DeviceData din,dout; - DevVarDoubleArray in(2); - in.length(2); - in[0] = 1.12; - in[1] = 3.45; - din << in; - try - { - dout = device->command_inout("IODoubleArray",din); - } - catch (CORBA::Exception &e) - { - Except::print_exception(e); - exit(-1); - } - const DevVarDoubleArray *received; - dout >> received; - assert( (*received)[0] == (in[0] * 2) ); - assert( (*received)[1] == (in[1] * 2) ); - } - cout << " DevVarDoubleArray (by pointer and reference) --> OK" << endl; - -// test unsigned short array - - for (i = 0;i < loop;i++) - { - DeviceData din,dout; - vector in; - in.push_back(100); - in.push_back(200); - din << in; - try - { - dout = device->command_inout("IOUShortArray",din); - } - catch (CORBA::Exception &e) - { - Except::print_exception(e); - exit(-1); - } - vector received; - dout >> received; - assert( received[0] == (in[0] * 2) ); - assert( received[1] == (in[1] * 2) ); - } - cout << " vector of unsigned short --> OK" << endl; - -// test DevVarUShortArray - - for (i = 0;i < loop;i++) - { - DeviceData din,dout; - DevVarUShortArray *in = new DevVarUShortArray(2); - in->length(2); - (*in)[0] = 11; - (*in)[1] = 22; - din << in; - try - { - dout = device->command_inout("IOUShortArray",din); - } - catch (CORBA::Exception &e) - { - Except::print_exception(e); - exit(-1); - } - const DevVarUShortArray *received; - dout >> received; - assert( (*received)[0] == (11 * 2) ); - assert( (*received)[1] == (22 * 2) ); - } - - for (i = 0;i < loop;i++) - { - DeviceData din,dout; - DevVarUShortArray in(2); - in.length(2); - in[0] = 11; - in[1] = 22; - din << in; - try - { - dout = device->command_inout("IOUShortArray",din); - } - catch (CORBA::Exception &e) - { - Except::print_exception(e); - exit(-1); - } - const DevVarUShortArray *received; - dout >> received; - assert( (*received)[0] == (in[0] * 2) ); - assert( (*received)[1] == (in[1] * 2) ); - } - cout << " DevVarUShortArray (by pointer and reference) --> OK" << endl; - -// test unsigned long array - - for (i = 0;i < loop;i++) - { - DeviceData din,dout; - vector in; - in.push_back(1000); - in.push_back(2001); - din << in; - try - { - dout = device->command_inout("IOULongArray",din); - } - catch (CORBA::Exception &e) - { - Except::print_exception(e); - exit(-1); - } - vector received; - dout >> received; - assert( received[0] == (in[0] * 2) ); - assert( received[1] == (in[1] * 2) ); - } - cout << " vector of unsigned long --> OK" << endl; - -// test DevVarULongArray - - for (i = 0;i < loop;i++) - { - DeviceData din,dout; - DevVarULongArray *in = new DevVarULongArray(2); - in->length(2); - (*in)[0] = 111; - (*in)[1] = 222; - din << in; - try - { - dout = device->command_inout("IOULongArray",din); - } - catch (CORBA::Exception &e) - { - Except::print_exception(e); - exit(-1); - } - const DevVarULongArray *received; - dout >> received; - assert( (*received)[0] == (111 * 2) ); - assert( (*received)[1] == (222 * 2) ); - } - - for (i = 0;i < loop;i++) - { - DeviceData din,dout; - DevVarULongArray in(2); - in.length(2); - in[0] = 111; - in[1] = 222; - din << in; - try - { - dout = device->command_inout("IOULongArray",din); - } - catch (CORBA::Exception &e) - { - Except::print_exception(e); - exit(-1); - } - const DevVarULongArray *received; - dout >> received; - assert( (*received)[0] == (in[0] * 2) ); - assert( (*received)[1] == (in[1] * 2) ); - } - cout << " DevVarULongArray (by pointer and reference) --> OK" << endl; - -// test string array - - for (i = 0;i < loop;i++) - { - DeviceData din,dout; - vector in; - in.push_back("abc"); - in.push_back("wxyz"); - din << in; - try - { - dout = device->command_inout("IOStringArray",din); - } - catch (CORBA::Exception &e) - { - Except::print_exception(e); - exit(-1); - } - vector received; - int data_type = dout.get_type(); - dout >> received; - - assert( received[0] == in[1] ); - assert( received[1] == in[0] ); - assert( data_type == Tango::DEVVAR_STRINGARRAY ); - } - cout << " vector of string --> OK" << endl; - -// test DevVarStringArray - - for (i = 0;i < loop;i++) - { - DeviceData din,dout; - DevVarStringArray *in = new DevVarStringArray(2); - in->length(2); - (*in)[0] = Tango::string_dup("abc"); - (*in)[1] = Tango::string_dup("def"); - din << in; - try - { - dout = device->command_inout("IOStringArray",din); - } - catch (CORBA::Exception &e) - { - Except::print_exception(e); - exit(-1); - } - const DevVarStringArray *received; - dout >> received; - assert( !strcmp((*received)[0],"def") ); - assert( !strcmp((*received)[1],"abc") ); - } - cout << " DevVarStringArray --> OK" << endl; - -// test vector of long and vector of string - - for (i = 0;i < loop;i++) - { - DeviceData din,dout; - vector in1; - in1.push_back(1000); - in1.push_back(2001); - in1.push_back(2002); - vector in2; - in2.push_back("abc"); - in2.push_back("def"); - din.insert(in1,in2); - try - { - dout = device->command_inout("IOLongString",din); - } - catch (CORBA::Exception &e) - { - Except::print_exception(e); - exit(-1); - } - vector received1; - vector received2; - dout.extract(received1,received2); - - assert( received2[0] == in2[0] ); - assert( received2[1] == in2[1] ); - assert( received1[0] == (in1[0] * 2) ); - assert( received1[1] == (in1[1] * 2) ); - assert( received1[2] == (in1[2] * 2) ); - } - cout << " vector of long, string --> OK" << endl; - -// test DevVarLongStringArray - - for (i = 0;i < loop;i++) - { - DeviceData din,dout; - DevVarLongStringArray *in = new DevVarLongStringArray(); - in->lvalue.length(2); - in->lvalue[0] = 111; - in->lvalue[1] = 222; - in->svalue.length(2); - in->svalue[0] = Tango::string_dup("zxc"); - in->svalue[1] = Tango::string_dup("qwe"); - din << in; - try - { - dout = device->command_inout("IOLongString",din); - } - catch (CORBA::Exception &e) - { - Except::print_exception(e); - exit(-1); - } - const DevVarLongStringArray *received; - dout >> received; - - assert( received->lvalue[0] == (111 * 2) ); - assert( received->lvalue[1] == (222 * 2) ); - assert( !strcmp(received->svalue[0],"zxc") ); - assert( !strcmp(received->svalue[1],"qwe") ); - } - - for (i = 0;i < loop;i++) - { - DeviceData din,dout; - DevVarLongStringArray in; - in.lvalue.length(2); - in.lvalue[0] = 111; - in.lvalue[1] = 222; - in.svalue.length(2); - in.svalue[0] = Tango::string_dup("zxc"); - in.svalue[1] = Tango::string_dup("qwe"); - din << in; - try - { - dout = device->command_inout("IOLongString",din); - } - catch (CORBA::Exception &e) - { - Except::print_exception(e); - exit(-1); - } - const DevVarLongStringArray *received; - dout >> received; - int data_type = dout.get_type(); - - assert( received->lvalue[0] == (in.lvalue[0] * 2) ); - assert( received->lvalue[1] == (in.lvalue[1] * 2) ); - assert( !strcmp(received->svalue[0],in.svalue[0]) ); - assert( !strcmp(received->svalue[1],in.svalue[1]) ); - assert( data_type == Tango::DEVVAR_LONGSTRINGARRAY ); - } - cout << " DevVarLongStringArray (by pointer and reference) --> OK" << endl; - -// test vector of double and vector of string - - for (i = 0;i < loop;i++) - { - DeviceData din,dout; - vector in1; - in1.push_back(10.0); - in1.push_back(20.1); - in1.push_back(20.2); - vector in2; - in2.push_back("abc"); - in2.push_back("def"); - din.insert(in1,in2); - try - { - dout = device->command_inout("IODoubleString",din); - } - catch (CORBA::Exception &e) - { - Except::print_exception(e); - exit(-1); - } - vector received1; - vector received2; - dout.extract(received1,received2); - int data_type = dout.get_type(); - - assert( received2[0] == in2[0] ); - assert( received2[1] == in2[1] ); - assert( received1[0] == (in1[0] * 2) ); - assert( received1[1] == (in1[1] * 2) ); - assert( received1[2] == (in1[2] * 2) ); - assert( data_type == Tango::DEVVAR_DOUBLESTRINGARRAY ); - } - cout << " vector of double, string --> OK" << endl; - -// test DevVarDoubleStringArray - - for (i = 0;i < loop;i++) - { - DeviceData din,dout; - DevVarDoubleStringArray *in = new DevVarDoubleStringArray(); - in->dvalue.length(2); - in->dvalue[0] = 1.11; - in->dvalue[1] = 22.2; - in->svalue.length(3); - in->svalue[0] = Tango::string_dup("iop"); - in->svalue[1] = Tango::string_dup("jkl"); - in->svalue[2] = Tango::string_dup("bnm"); - din << in; - try - { - dout = device->command_inout("IODoubleString",din); - } - catch (CORBA::Exception &e) - { - Except::print_exception(e); - exit(-1); - } - const DevVarDoubleStringArray *received; - dout >> received; - - assert( received->dvalue[0] == (1.11 * 2) ); - assert( received->dvalue[1] == (22.2 * 2) ); - assert( !strcmp(received->svalue[0],"iop") ); - assert( !strcmp(received->svalue[1],"jkl") ); - assert( !strcmp(received->svalue[2],"bnm") ); - } - - - for (i = 0;i < loop;i++) - { - DeviceData din,dout; - DevVarDoubleStringArray in; - in.dvalue.length(2); - in.dvalue[0] = 1.11; - in.dvalue[1] = 22.2; - in.svalue.length(3); - in.svalue[0] = Tango::string_dup("iop"); - in.svalue[1] = Tango::string_dup("jkl"); - in.svalue[2] = Tango::string_dup("bnm"); - din << in; - try - { - dout = device->command_inout("IODoubleString",din); - } - catch (CORBA::Exception &e) - { - Except::print_exception(e); - exit(-1); - } - const DevVarDoubleStringArray *received; - dout >> received; - - assert( received->dvalue[0] == (in.dvalue[0] * 2) ); - assert( received->dvalue[1] == (in.dvalue[1] * 2) ); - assert( !strcmp(received->svalue[0],in.svalue[0]) ); - assert( !strcmp(received->svalue[1],in.svalue[1]) ); - assert( !strcmp(received->svalue[2],in.svalue[2]) ); - } - cout << " DevVarDoubleStringArray (by pointer and reference) --> OK" << endl; - -// test DevEncoded - - for (i = 0;i < loop;i++) - { - DeviceData din,dout; - DevEncoded in; - in.encoded_data.length(2); - in.encoded_data[0] = 11; - in.encoded_data[1] = 22; - in.encoded_format = Tango::string_dup("Sent"); - din << in; - try - { - dout = device->command_inout("IOEncoded",din); - } - catch (CORBA::Exception &e) - { - Except::print_exception(e); - exit(-1); - } - const DevEncoded *received; - dout >> received; - int data_type = dout.get_type(); - - assert( received->encoded_data.length() == 2 ); - assert( received->encoded_data[0] == (11 * 2) ); - assert( received->encoded_data[1] == (22 * 2) ); - assert( !strcmp(received->encoded_format,"Returned string") ); - assert( data_type == Tango::DEV_ENCODED ); - } - - for (i = 0;i < loop;i++) - { - DeviceData din,dout; - string in_str("Sent"); - vector in_data; - - in_data.push_back((unsigned char)15); - in_data.push_back((unsigned char)25); - - din.insert(in_str,in_data); - try - { - dout = device->command_inout("IOEncoded",din); - } - catch (CORBA::Exception &e) - { - Except::print_exception(e); - exit(-1); - } - DevEncoded received; - dout >> received; - int data_type = dout.get_type(); - - assert( received.encoded_data.length() == 2 ); - assert( received.encoded_data[0] == (15 * 2) ); - assert( received.encoded_data[1] == (25 * 2) ); - assert( !strcmp(received.encoded_format,"Returned string") ); - assert( data_type == Tango::DEV_ENCODED ); - } - - for (i = 0;i < loop;i++) - { - DeviceData din,dout; - string in_str("Sent"); - DevVarCharArray in_data; - - in_data.length(4); - in_data[0] = ((unsigned char)15); - in_data[1] = ((unsigned char)25); - in_data[2] = ((unsigned char)35); - in_data[3] = ((unsigned char)45); - - din.insert("Sent",&in_data); - try - { - dout = device->command_inout("IOEncoded",din); - } - catch (CORBA::Exception &e) - { - Except::print_exception(e); - exit(-1); - } - DevEncoded received; - dout >> received; - int data_type = dout.get_type(); - - assert( received.encoded_data.length() == 4 ); - assert( received.encoded_data[0] == (15 * 2) ); - assert( received.encoded_data[1] == (25 * 2) ); - assert( received.encoded_data[2] == (35 * 2) ); - assert( received.encoded_data[3] == (45 * 2) ); - assert( !strcmp(received.encoded_format,"Returned string") ); - assert( data_type == Tango::DEV_ENCODED ); - } - cout << " DevEncoded (by pointer and reference) --> OK" << endl; - - delete device; - - return 0; -} From d579b00d28e01d74042adef5242cf433e0348dbe Mon Sep 17 00:00:00 2001 From: ingvord Date: Wed, 19 Jul 2017 19:35:45 +0300 Subject: [PATCH 05/21] progress #378: progress --- src/client/devapi_data.cpp | 9 +- .../cpp_test_ds/DevTestClass.cpp | 1 + test/cpp_test_suite/cpp_test_ds/TypeCmds.cpp | 1327 +++++++++-------- test/cpp_test_suite/cpp_test_ds/TypeCmds.h | 356 ++--- .../new_tests/cxx_cmd_types.cpp | 15 +- 5 files changed, 904 insertions(+), 804 deletions(-) diff --git a/src/client/devapi_data.cpp b/src/client/devapi_data.cpp index 677e0fb13..6d61ef21b 100644 --- a/src/client/devapi_data.cpp +++ b/src/client/devapi_data.cpp @@ -232,7 +232,7 @@ bool DeviceData::any_is_null() // DeviceData::get_type() - return DeviceData data type // //----------------------------------------------------------------------------- - +//TODO replace with class hierarchy int DeviceData::get_type() { int data_type = 0; @@ -2085,12 +2085,7 @@ bool DeviceData::extract(DevicePipeBlob *blob) bool result = any.inout() >>= tmp_blob; checkResult(result, tmp_blob); blob->set_name(string(tmp_blob->name)); - blob->set_data_elt_nb(tmp_blob->blob_data.length()); - for (size_t i = 0; i < tmp_blob->blob_data.length(); ++i) - { - blob->set_current_delt_name(string(tmp_blob->blob_data[i].name)); - //TODO - } + blob->set_extract_data(&tmp_blob->blob_data); return result; } diff --git a/test/cpp_test_suite/cpp_test_ds/DevTestClass.cpp b/test/cpp_test_suite/cpp_test_ds/DevTestClass.cpp index c2d608ae4..95a3a32df 100644 --- a/test/cpp_test_suite/cpp_test_ds/DevTestClass.cpp +++ b/test/cpp_test_suite/cpp_test_ds/DevTestClass.cpp @@ -525,6 +525,7 @@ void DevTestClass::command_factory() { "void", "DevEncoded structure to test polling/history")); command_list.push_back(new IODevEnum()); + command_list.push_back(new IOPipeBlob()); command_list.push_back(new PollingPoolTst("PollingPoolTst", Tango::DEV_VOID, Tango::DEVVAR_STRINGARRAY, diff --git a/test/cpp_test_suite/cpp_test_ds/TypeCmds.cpp b/test/cpp_test_suite/cpp_test_ds/TypeCmds.cpp index 7f7cb763c..23a3b128e 100644 --- a/test/cpp_test_suite/cpp_test_ds/TypeCmds.cpp +++ b/test/cpp_test_suite/cpp_test_ds/TypeCmds.cpp @@ -19,10 +19,10 @@ // //----------------------------------------------------------------------------- -IOVoid::IOVoid(const char *name,Tango::CmdArgType in, - Tango::CmdArgType out,const char *in_desc, - const char *out_desc) -:Tango::Command(name,in,out,in_desc,out_desc) +IOVoid::IOVoid(const char *name, Tango::CmdArgType in, + Tango::CmdArgType out, const char *in_desc, + const char *out_desc) + : Tango::Command(name, in, out, in_desc, out_desc) { } @@ -33,22 +33,24 @@ bool IOVoid::is_allowed(Tango::DeviceImpl *device, TANGO_UNUSED(const CORBA::Any // command allowed only if the device is on // - if (device->get_state() == Tango::ON) - return(true); - else - return(false); + if (device->get_state() == Tango::ON) + return (true); + else + return (false); } -CORBA::Any *IOVoid::execute(TANGO_UNUSED(Tango::DeviceImpl *device), TANGO_UNUSED(const CORBA::Any &in_any)) + +CORBA::Any *IOVoid::execute(TANGO_UNUSED(Tango::DeviceImpl *device),TANGO_UNUSED(const CORBA::Any &in_any)) { - try { - cout << "[IOVoid::execute] " << endl; - return insert(); - } - catch (CORBA::Exception &e) + try + { + cout << "[IOVoid::execute] " << endl; + return insert(); + } + catch (CORBA::Exception &e) { - Tango::Except::print_exception(e); - throw ; + Tango::Except::print_exception(e); + throw; } } @@ -68,10 +70,10 @@ CORBA::Any *IOVoid::execute(TANGO_UNUSED(Tango::DeviceImpl *device), TANGO_UNUSE // //----------------------------------------------------------------------------- -IOBool::IOBool(const char *name,Tango::CmdArgType in, - Tango::CmdArgType out,const char *in_desc, - const char *out_desc) -:Tango::Command(name,in,out,in_desc,out_desc) +IOBool::IOBool(const char *name, Tango::CmdArgType in, + Tango::CmdArgType out, const char *in_desc, + const char *out_desc) + : Tango::Command(name, in, out, in_desc, out_desc) { } @@ -82,26 +84,27 @@ bool IOBool::is_allowed(Tango::DeviceImpl *device, TANGO_UNUSED(const CORBA::Any // command allowed only if the device is on // - if (device->get_state() == Tango::ON) - return(true); - else - return(false); + if (device->get_state() == Tango::ON) + return (true); + else + return (false); } CORBA::Any *IOBool::execute(TANGO_UNUSED(Tango::DeviceImpl *device), const CORBA::Any &in_any) { - try { - Tango::DevBoolean theNumber; - extract(in_any,theNumber); - cout << "[IOBool::execute] received number " << theNumber << endl; - theNumber = !theNumber; - cout << "[IOBool::execute] return number " << theNumber << endl; - return insert(theNumber); - } - catch (CORBA::Exception &e) + try + { + Tango::DevBoolean theNumber; + extract(in_any, theNumber); + cout << "[IOBool::execute] received number " << theNumber << endl; + theNumber = !theNumber; + cout << "[IOBool::execute] return number " << theNumber << endl; + return insert(theNumber); + } + catch (CORBA::Exception &e) { - Tango::Except::print_exception(e); - throw ; + Tango::Except::print_exception(e); + throw; } } @@ -121,10 +124,10 @@ CORBA::Any *IOBool::execute(TANGO_UNUSED(Tango::DeviceImpl *device), const CORBA // //----------------------------------------------------------------------------- -IOShort::IOShort(const char *name,Tango::CmdArgType in, - Tango::CmdArgType out,const char *in_desc, - const char *out_desc) -:Tango::Command(name,in,out,in_desc,out_desc) +IOShort::IOShort(const char *name, Tango::CmdArgType in, + Tango::CmdArgType out, const char *in_desc, + const char *out_desc) + : Tango::Command(name, in, out, in_desc, out_desc) { } @@ -135,26 +138,27 @@ bool IOShort::is_allowed(Tango::DeviceImpl *device, TANGO_UNUSED(const CORBA::An // command allowed only if the device is on // - if (device->get_state() == Tango::ON) - return(true); - else - return(false); + if (device->get_state() == Tango::ON) + return (true); + else + return (false); } CORBA::Any *IOShort::execute(TANGO_UNUSED(Tango::DeviceImpl *device), const CORBA::Any &in_any) { - try { - Tango::DevShort theNumber; - extract(in_any,theNumber); - cout << "[IOShort::execute] received number " << theNumber << endl; - theNumber = theNumber * 2; - cout << "[IOShort::execute] return number " << theNumber << endl; - return insert(theNumber); - } - catch (CORBA::Exception &e) + try + { + Tango::DevShort theNumber; + extract(in_any, theNumber); + cout << "[IOShort::execute] received number " << theNumber << endl; + theNumber = theNumber * 2; + cout << "[IOShort::execute] return number " << theNumber << endl; + return insert(theNumber); + } + catch (CORBA::Exception &e) { - Tango::Except::print_exception(e); - throw ; + Tango::Except::print_exception(e); + throw; } } @@ -173,10 +177,10 @@ CORBA::Any *IOShort::execute(TANGO_UNUSED(Tango::DeviceImpl *device), const CORB // //----------------------------------------------------------------------------- -IOLong::IOLong(const char *name,Tango::CmdArgType in, - Tango::CmdArgType out,const char *in_desc, - const char *out_desc) -:Tango::Command(name,in,out,in_desc,out_desc) +IOLong::IOLong(const char *name, Tango::CmdArgType in, + Tango::CmdArgType out, const char *in_desc, + const char *out_desc) + : Tango::Command(name, in, out, in_desc, out_desc) { } @@ -187,29 +191,29 @@ bool IOLong::is_allowed(Tango::DeviceImpl *device, TANGO_UNUSED(const CORBA::Any // command allowed only if the device is on // - if (device->get_state() == Tango::ON) - return(true); - else - return(false); + if (device->get_state() == Tango::ON) + return (true); + else + return (false); } - -CORBA::Any *IOLong::execute(Tango::DeviceImpl *device,const CORBA::Any &in_any) +CORBA::Any *IOLong::execute(Tango::DeviceImpl *device, const CORBA::Any &in_any) { - try { - Tango::DevLong theNumber; - extract(in_any,theNumber); - cout << "[IOLong::execute] received number " << theNumber << endl; - DEV_DEBUG_STREAM(device) << "[IOLong::execute] received number " << theNumber; - theNumber = theNumber * 2; - cout << "[IOLong::execute] return number " << theNumber << endl; - DEV_DEBUG_STREAM(device) << "[IOLong::execute] return number " << theNumber << endl; - return insert(theNumber); - } - catch (CORBA::Exception &e) + try { - Tango::Except::print_exception(e); - throw ; + Tango::DevLong theNumber; + extract(in_any, theNumber); + cout << "[IOLong::execute] received number " << theNumber << endl; + DEV_DEBUG_STREAM(device) << "[IOLong::execute] received number " << theNumber; + theNumber = theNumber * 2; + cout << "[IOLong::execute] return number " << theNumber << endl; + DEV_DEBUG_STREAM(device) << "[IOLong::execute] return number " << theNumber << endl; + return insert(theNumber); + } + catch (CORBA::Exception &e) + { + Tango::Except::print_exception(e); + throw; } } @@ -229,10 +233,10 @@ CORBA::Any *IOLong::execute(Tango::DeviceImpl *device,const CORBA::Any &in_any) // //----------------------------------------------------------------------------- -IOLong64::IOLong64(const char *name,Tango::CmdArgType in, - Tango::CmdArgType out,const char *in_desc, - const char *out_desc) -:Tango::Command(name,in,out,in_desc,out_desc) +IOLong64::IOLong64(const char *name, Tango::CmdArgType in, + Tango::CmdArgType out, const char *in_desc, + const char *out_desc) + : Tango::Command(name, in, out, in_desc, out_desc) { } @@ -243,29 +247,29 @@ bool IOLong64::is_allowed(Tango::DeviceImpl *device, TANGO_UNUSED(const CORBA::A // command allowed only if the device is on // - if (device->get_state() == Tango::ON) - return(true); - else - return(false); + if (device->get_state() == Tango::ON) + return (true); + else + return (false); } - -CORBA::Any *IOLong64::execute(Tango::DeviceImpl *device,const CORBA::Any &in_any) +CORBA::Any *IOLong64::execute(Tango::DeviceImpl *device, const CORBA::Any &in_any) { - try { - Tango::DevLong theNumber; - extract(in_any,theNumber); - cout << "[IOLong64::execute] received number " << theNumber << endl; - DEV_DEBUG_STREAM(device) << "[IOLong64::execute] received number " << theNumber; - theNumber = theNumber * 2; - cout << "[IOLong64::execute] return number " << theNumber << endl; - DEV_DEBUG_STREAM(device) << "[IOLong64::execute] return number " << theNumber << endl; - return insert(theNumber); - } - catch (CORBA::Exception &e) + try { - Tango::Except::print_exception(e); - throw ; + Tango::DevLong theNumber; + extract(in_any, theNumber); + cout << "[IOLong64::execute] received number " << theNumber << endl; + DEV_DEBUG_STREAM(device) << "[IOLong64::execute] received number " << theNumber; + theNumber = theNumber * 2; + cout << "[IOLong64::execute] return number " << theNumber << endl; + DEV_DEBUG_STREAM(device) << "[IOLong64::execute] return number " << theNumber << endl; + return insert(theNumber); + } + catch (CORBA::Exception &e) + { + Tango::Except::print_exception(e); + throw; } } @@ -284,10 +288,10 @@ CORBA::Any *IOLong64::execute(Tango::DeviceImpl *device,const CORBA::Any &in_any // //----------------------------------------------------------------------------- -IOFloat::IOFloat(const char *name,Tango::CmdArgType in, - Tango::CmdArgType out,const char *in_desc, - const char *out_desc) -:Tango::Command(name,in,out,in_desc,out_desc) +IOFloat::IOFloat(const char *name, Tango::CmdArgType in, + Tango::CmdArgType out, const char *in_desc, + const char *out_desc) + : Tango::Command(name, in, out, in_desc, out_desc) { } @@ -298,26 +302,27 @@ bool IOFloat::is_allowed(Tango::DeviceImpl *device, TANGO_UNUSED(const CORBA::An // command allowed only if the device is on // - if (device->get_state() == Tango::ON) - return(true); - else - return(false); + if (device->get_state() == Tango::ON) + return (true); + else + return (false); } CORBA::Any *IOFloat::execute(TANGO_UNUSED(Tango::DeviceImpl *device), const CORBA::Any &in_any) { - try { - Tango::DevFloat theNumber; - extract(in_any,theNumber); - cout << "[IOFloat::execute] received number " << theNumber << endl; - theNumber = theNumber * 2; - cout << "[IOFloat::execute] return number " << theNumber << endl; - return insert(theNumber); - } - catch (CORBA::Exception &e) + try { - Tango::Except::print_exception(e); - throw ; + Tango::DevFloat theNumber; + extract(in_any, theNumber); + cout << "[IOFloat::execute] received number " << theNumber << endl; + theNumber = theNumber * 2; + cout << "[IOFloat::execute] return number " << theNumber << endl; + return insert(theNumber); + } + catch (CORBA::Exception &e) + { + Tango::Except::print_exception(e); + throw; } } @@ -337,10 +342,10 @@ CORBA::Any *IOFloat::execute(TANGO_UNUSED(Tango::DeviceImpl *device), const CORB // //----------------------------------------------------------------------------- -IODouble::IODouble(const char *name,Tango::CmdArgType in, - Tango::CmdArgType out,const char *in_desc, - const char *out_desc) -:Tango::Command(name,in,out,in_desc,out_desc) +IODouble::IODouble(const char *name, Tango::CmdArgType in, + Tango::CmdArgType out, const char *in_desc, + const char *out_desc) + : Tango::Command(name, in, out, in_desc, out_desc) { } @@ -351,26 +356,27 @@ bool IODouble::is_allowed(Tango::DeviceImpl *device, TANGO_UNUSED(const CORBA::A // command allowed only if the device is on // - if (device->get_state() == Tango::ON) - return(true); - else - return(false); + if (device->get_state() == Tango::ON) + return (true); + else + return (false); } CORBA::Any *IODouble::execute(TANGO_UNUSED(Tango::DeviceImpl *device), const CORBA::Any &in_any) { - try { - Tango::DevDouble theNumber; - extract(in_any,theNumber); - cout << "[IODouble::execute] received number " << theNumber << endl; - theNumber = theNumber * 2; - cout << "[IODouble::execute] return number " << theNumber << endl; - return insert(theNumber); - } - catch (CORBA::Exception &e) + try { - Tango::Except::print_exception(e); - throw ; + Tango::DevDouble theNumber; + extract(in_any, theNumber); + cout << "[IODouble::execute] received number " << theNumber << endl; + theNumber = theNumber * 2; + cout << "[IODouble::execute] return number " << theNumber << endl; + return insert(theNumber); + } + catch (CORBA::Exception &e) + { + Tango::Except::print_exception(e); + throw; } } @@ -390,10 +396,10 @@ CORBA::Any *IODouble::execute(TANGO_UNUSED(Tango::DeviceImpl *device), const COR // //----------------------------------------------------------------------------- -IOUShort::IOUShort(const char *name,Tango::CmdArgType in, - Tango::CmdArgType out,const char *in_desc, - const char *out_desc) -:Tango::Command(name,in,out,in_desc,out_desc) +IOUShort::IOUShort(const char *name, Tango::CmdArgType in, + Tango::CmdArgType out, const char *in_desc, + const char *out_desc) + : Tango::Command(name, in, out, in_desc, out_desc) { } @@ -404,26 +410,27 @@ bool IOUShort::is_allowed(Tango::DeviceImpl *device, TANGO_UNUSED(const CORBA::A // command allowed only if the device is on // - if (device->get_state() == Tango::ON) - return(true); - else - return(false); + if (device->get_state() == Tango::ON) + return (true); + else + return (false); } CORBA::Any *IOUShort::execute(TANGO_UNUSED(Tango::DeviceImpl *device), const CORBA::Any &in_any) { - try { - Tango::DevUShort theNumber; - extract(in_any,theNumber); - cout << "[IOUShort::execute] received number " << theNumber << endl; - theNumber = theNumber * 2; - cout << "[IOUShort::execute] return number " << theNumber << endl; - return insert(theNumber); - } - catch (CORBA::Exception &e) + try { - Tango::Except::print_exception(e); - throw ; + Tango::DevUShort theNumber; + extract(in_any, theNumber); + cout << "[IOUShort::execute] received number " << theNumber << endl; + theNumber = theNumber * 2; + cout << "[IOUShort::execute] return number " << theNumber << endl; + return insert(theNumber); + } + catch (CORBA::Exception &e) + { + Tango::Except::print_exception(e); + throw; } } @@ -442,10 +449,10 @@ CORBA::Any *IOUShort::execute(TANGO_UNUSED(Tango::DeviceImpl *device), const COR // //----------------------------------------------------------------------------- -IOULong::IOULong(const char *name,Tango::CmdArgType in, - Tango::CmdArgType out,const char *in_desc, - const char *out_desc) -:Tango::Command(name,in,out,in_desc,out_desc) +IOULong::IOULong(const char *name, Tango::CmdArgType in, + Tango::CmdArgType out, const char *in_desc, + const char *out_desc) + : Tango::Command(name, in, out, in_desc, out_desc) { } @@ -456,26 +463,27 @@ bool IOULong::is_allowed(Tango::DeviceImpl *device, TANGO_UNUSED(const CORBA::An // command allowed only if the device is on // - if (device->get_state() == Tango::ON) - return(true); - else - return(false); + if (device->get_state() == Tango::ON) + return (true); + else + return (false); } CORBA::Any *IOULong::execute(TANGO_UNUSED(Tango::DeviceImpl *device), const CORBA::Any &in_any) { - try { - Tango::DevULong theNumber; - extract(in_any,theNumber); - cout << "[IOULong::execute] received number " << theNumber << endl; - theNumber = theNumber * 2; - cout << "[IOULong::execute] return number " << theNumber << endl; - return insert(theNumber); - } - catch (CORBA::Exception &e) + try { - Tango::Except::print_exception(e); - throw ; + Tango::DevULong theNumber; + extract(in_any, theNumber); + cout << "[IOULong::execute] received number " << theNumber << endl; + theNumber = theNumber * 2; + cout << "[IOULong::execute] return number " << theNumber << endl; + return insert(theNumber); + } + catch (CORBA::Exception &e) + { + Tango::Except::print_exception(e); + throw; } } @@ -496,10 +504,10 @@ CORBA::Any *IOULong::execute(TANGO_UNUSED(Tango::DeviceImpl *device), const CORB // //----------------------------------------------------------------------------- -IOULong64::IOULong64(const char *name,Tango::CmdArgType in, - Tango::CmdArgType out,const char *in_desc, - const char *out_desc) -:Tango::Command(name,in,out,in_desc,out_desc) +IOULong64::IOULong64(const char *name, Tango::CmdArgType in, + Tango::CmdArgType out, const char *in_desc, + const char *out_desc) + : Tango::Command(name, in, out, in_desc, out_desc) { } @@ -510,26 +518,27 @@ bool IOULong64::is_allowed(Tango::DeviceImpl *device, TANGO_UNUSED(const CORBA:: // command allowed only if the device is on // - if (device->get_state() == Tango::ON) - return(true); - else - return(false); + if (device->get_state() == Tango::ON) + return (true); + else + return (false); } CORBA::Any *IOULong64::execute(TANGO_UNUSED(Tango::DeviceImpl *device), const CORBA::Any &in_any) { - try { - Tango::DevULong64 theNumber; - extract(in_any,theNumber); - cout << "[IOULong64::execute] received number " << theNumber << endl; - theNumber = theNumber * 2; - cout << "[IOULong64::execute] return number " << theNumber << endl; - return insert(theNumber); - } - catch (CORBA::Exception &e) + try { - Tango::Except::print_exception(e); - throw ; + Tango::DevULong64 theNumber; + extract(in_any, theNumber); + cout << "[IOULong64::execute] received number " << theNumber << endl; + theNumber = theNumber * 2; + cout << "[IOULong64::execute] return number " << theNumber << endl; + return insert(theNumber); + } + catch (CORBA::Exception &e) + { + Tango::Except::print_exception(e); + throw; } } @@ -549,10 +558,10 @@ CORBA::Any *IOULong64::execute(TANGO_UNUSED(Tango::DeviceImpl *device), const CO // //----------------------------------------------------------------------------- -IOString::IOString(const char *name,Tango::CmdArgType in, - Tango::CmdArgType out,const char *in_desc, - const char *out_desc) -:Tango::Command(name,in,out,in_desc,out_desc) +IOString::IOString(const char *name, Tango::CmdArgType in, + Tango::CmdArgType out, const char *in_desc, + const char *out_desc) + : Tango::Command(name, in, out, in_desc, out_desc) { } @@ -563,38 +572,40 @@ bool IOString::is_allowed(Tango::DeviceImpl *device, TANGO_UNUSED(const CORBA::A // command allowed only if the device is on // - if (device->get_state() == Tango::ON) - return(true); - else - return(false); + if (device->get_state() == Tango::ON) + return (true); + else + return (false); } CORBA::Any *IOString::execute(TANGO_UNUSED(Tango::DeviceImpl *device), const CORBA::Any &in_any) { - cout2 << "[IOString::execute] arrived" << endl; - try { - - Tango::DevString theWord; - extract(in_any,theWord); - string palindrome; - string firstWord = theWord; - string::reverse_iterator currentChar(firstWord.rbegin()); - string::reverse_iterator endChar(firstWord.rend()); - - cout << "[IOString::execute] firstWord = " << firstWord << endl; + cout2 << "[IOString::execute] arrived" << endl; + try + { - for ( ; currentChar != endChar; currentChar++) { - cout << "[IOString::execute] currentChar = " << *currentChar <length(theCharArray->length()); - for (unsigned int i=0; ilength(); i++) { - cout << "[IOCharArray::execute] received char " << (*theCharArray)[i] << endl; - (*theReturnedArray)[theCharArray->length()-i-1] = (*theCharArray)[i] ; + try + { + cout << "[IOCharArray::execute] entering " << endl; + const Tango::DevVarCharArray *theCharArray; + extract(in_any, theCharArray); + Tango::DevVarCharArray *theReturnedArray = new Tango::DevVarCharArray(); + theReturnedArray->length(theCharArray->length()); + for (unsigned int i = 0; i < theCharArray->length(); i++) + { + cout << "[IOCharArray::execute] received char " << (*theCharArray)[i] << endl; + (*theReturnedArray)[theCharArray->length() - i - 1] = (*theCharArray)[i]; + } + return insert(theReturnedArray); } - return insert(theReturnedArray); - } - catch (CORBA::Exception &e) + catch (CORBA::Exception &e) { - Tango::Except::print_exception(e); - throw ; + Tango::Except::print_exception(e); + throw; } } @@ -670,10 +683,10 @@ CORBA::Any *IOCharArray::execute(TANGO_UNUSED(Tango::DeviceImpl *device), const // //----------------------------------------------------------------------------- -IOShortArray::IOShortArray(const char *name,Tango::CmdArgType in, - Tango::CmdArgType out,const char *in_desc, - const char *out_desc) -:Tango::Command(name,in,out,in_desc,out_desc) +IOShortArray::IOShortArray(const char *name, Tango::CmdArgType in, + Tango::CmdArgType out, const char *in_desc, + const char *out_desc) + : Tango::Command(name, in, out, in_desc, out_desc) { } @@ -684,30 +697,32 @@ bool IOShortArray::is_allowed(Tango::DeviceImpl *device, TANGO_UNUSED(const CORB // command allowed only if the device is on // - if (device->get_state() == Tango::ON) - return(true); - else - return(false); + if (device->get_state() == Tango::ON) + return (true); + else + return (false); } CORBA::Any *IOShortArray::execute(TANGO_UNUSED(Tango::DeviceImpl *device), const CORBA::Any &in_any) { - try { - const Tango::DevVarShortArray *theNumberArray; - extract(in_any,theNumberArray); - Tango::DevVarShortArray *theReturnedArray = new Tango::DevVarShortArray(); - theReturnedArray->length(theNumberArray->length()); - for (unsigned int i=0; ilength(); i++) { - cout << "[IOShortArray::execute] received number " << (*theNumberArray)[i] << endl; - (*theReturnedArray)[i] = (*theNumberArray)[i] * 2; - cout << "[IOShortArray::execute] return number " << (*theReturnedArray)[i] << endl; + try + { + const Tango::DevVarShortArray *theNumberArray; + extract(in_any, theNumberArray); + Tango::DevVarShortArray *theReturnedArray = new Tango::DevVarShortArray(); + theReturnedArray->length(theNumberArray->length()); + for (unsigned int i = 0; i < theNumberArray->length(); i++) + { + cout << "[IOShortArray::execute] received number " << (*theNumberArray)[i] << endl; + (*theReturnedArray)[i] = (*theNumberArray)[i] * 2; + cout << "[IOShortArray::execute] return number " << (*theReturnedArray)[i] << endl; + } + return insert(theReturnedArray); } - return insert(theReturnedArray); - } - catch (CORBA::Exception &e) + catch (CORBA::Exception &e) { - Tango::Except::print_exception(e); - throw ; + Tango::Except::print_exception(e); + throw; } } @@ -727,10 +742,10 @@ CORBA::Any *IOShortArray::execute(TANGO_UNUSED(Tango::DeviceImpl *device), const // //----------------------------------------------------------------------------- -IOLongArray::IOLongArray(const char *name,Tango::CmdArgType in, - Tango::CmdArgType out,const char *in_desc, - const char *out_desc) -:Tango::Command(name,in,out,in_desc,out_desc) +IOLongArray::IOLongArray(const char *name, Tango::CmdArgType in, + Tango::CmdArgType out, const char *in_desc, + const char *out_desc) + : Tango::Command(name, in, out, in_desc, out_desc) { } @@ -741,30 +756,32 @@ bool IOLongArray::is_allowed(Tango::DeviceImpl *device, TANGO_UNUSED(const CORBA // command allowed only if the device is on // - if (device->get_state() == Tango::ON) - return(true); - else - return(false); + if (device->get_state() == Tango::ON) + return (true); + else + return (false); } CORBA::Any *IOLongArray::execute(TANGO_UNUSED(Tango::DeviceImpl *device), const CORBA::Any &in_any) { - try { - const Tango::DevVarLongArray *theNumberArray; - extract(in_any,theNumberArray); - Tango::DevVarLongArray *theReturnedArray = new Tango::DevVarLongArray(); - theReturnedArray->length(theNumberArray->length()); - for (unsigned int i=0; ilength(); i++) { - cout << "[IOLongArray::execute] received number " << (*theNumberArray)[i] << endl; - (*theReturnedArray)[i] = (*theNumberArray)[i] * 2; - cout << "[IOLongArray::execute] return number " << (*theReturnedArray)[i] << endl; + try + { + const Tango::DevVarLongArray *theNumberArray; + extract(in_any, theNumberArray); + Tango::DevVarLongArray *theReturnedArray = new Tango::DevVarLongArray(); + theReturnedArray->length(theNumberArray->length()); + for (unsigned int i = 0; i < theNumberArray->length(); i++) + { + cout << "[IOLongArray::execute] received number " << (*theNumberArray)[i] << endl; + (*theReturnedArray)[i] = (*theNumberArray)[i] * 2; + cout << "[IOLongArray::execute] return number " << (*theReturnedArray)[i] << endl; + } + return insert(theReturnedArray); } - return insert(theReturnedArray); - } - catch (CORBA::Exception &e) + catch (CORBA::Exception &e) { - Tango::Except::print_exception(e); - throw ; + Tango::Except::print_exception(e); + throw; } } @@ -784,10 +801,10 @@ CORBA::Any *IOLongArray::execute(TANGO_UNUSED(Tango::DeviceImpl *device), const // //----------------------------------------------------------------------------- -IOFloatArray::IOFloatArray(const char *name,Tango::CmdArgType in, - Tango::CmdArgType out,const char *in_desc, - const char *out_desc) -:Tango::Command(name,in,out,in_desc,out_desc) +IOFloatArray::IOFloatArray(const char *name, Tango::CmdArgType in, + Tango::CmdArgType out, const char *in_desc, + const char *out_desc) + : Tango::Command(name, in, out, in_desc, out_desc) { } @@ -798,30 +815,32 @@ bool IOFloatArray::is_allowed(Tango::DeviceImpl *device, TANGO_UNUSED(const CORB // command allowed only if the device is on // - if (device->get_state() == Tango::ON) - return(true); - else - return(false); + if (device->get_state() == Tango::ON) + return (true); + else + return (false); } CORBA::Any *IOFloatArray::execute(TANGO_UNUSED(Tango::DeviceImpl *device), const CORBA::Any &in_any) { - try { - const Tango::DevVarFloatArray *theNumberArray; - extract(in_any,theNumberArray); - Tango::DevVarFloatArray *theReturnedArray = new Tango::DevVarFloatArray(); - theReturnedArray->length(theNumberArray->length()); - for (unsigned int i=0; ilength(); i++) { - cout << "[IOFloatArray::execute] received number " << (*theNumberArray)[i] << endl; - (*theReturnedArray)[i] = (*theNumberArray)[i] * 2; - cout << "[IOFloatArray::execute] return number " << (*theReturnedArray)[i] << endl; + try + { + const Tango::DevVarFloatArray *theNumberArray; + extract(in_any, theNumberArray); + Tango::DevVarFloatArray *theReturnedArray = new Tango::DevVarFloatArray(); + theReturnedArray->length(theNumberArray->length()); + for (unsigned int i = 0; i < theNumberArray->length(); i++) + { + cout << "[IOFloatArray::execute] received number " << (*theNumberArray)[i] << endl; + (*theReturnedArray)[i] = (*theNumberArray)[i] * 2; + cout << "[IOFloatArray::execute] return number " << (*theReturnedArray)[i] << endl; + } + return insert(theReturnedArray); } - return insert(theReturnedArray); - } - catch (CORBA::Exception &e) + catch (CORBA::Exception &e) { - Tango::Except::print_exception(e); - throw ; + Tango::Except::print_exception(e); + throw; } } @@ -840,10 +859,10 @@ CORBA::Any *IOFloatArray::execute(TANGO_UNUSED(Tango::DeviceImpl *device), const // //----------------------------------------------------------------------------- -IODoubleArray::IODoubleArray(const char *name,Tango::CmdArgType in, - Tango::CmdArgType out,const char *in_desc, - const char *out_desc) -:Command(name,in,out,in_desc,out_desc) +IODoubleArray::IODoubleArray(const char *name, Tango::CmdArgType in, + Tango::CmdArgType out, const char *in_desc, + const char *out_desc) + : Command(name, in, out, in_desc, out_desc) { } @@ -854,30 +873,32 @@ bool IODoubleArray::is_allowed(Tango::DeviceImpl *device, TANGO_UNUSED(const COR // command allowed only if the device is on // - if (device->get_state() == Tango::ON) - return(true); - else - return(false); + if (device->get_state() == Tango::ON) + return (true); + else + return (false); } CORBA::Any *IODoubleArray::execute(TANGO_UNUSED(Tango::DeviceImpl *device), const CORBA::Any &in_any) { - try { - const Tango::DevVarDoubleArray *theNumberArray; - extract(in_any,theNumberArray); - Tango::DevVarDoubleArray *theReturnedArray = new Tango::DevVarDoubleArray(); - theReturnedArray->length(theNumberArray->length()); - for (unsigned int i=0; ilength(); i++) { - cout << "[IODoubleArray::execute] received number " << (*theNumberArray)[i] << endl; - (*theReturnedArray)[i] = (*theNumberArray)[i] * 2; - cout << "[IODoubleArray::execute] return number " << (*theReturnedArray)[i] << endl; + try + { + const Tango::DevVarDoubleArray *theNumberArray; + extract(in_any, theNumberArray); + Tango::DevVarDoubleArray *theReturnedArray = new Tango::DevVarDoubleArray(); + theReturnedArray->length(theNumberArray->length()); + for (unsigned int i = 0; i < theNumberArray->length(); i++) + { + cout << "[IODoubleArray::execute] received number " << (*theNumberArray)[i] << endl; + (*theReturnedArray)[i] = (*theNumberArray)[i] * 2; + cout << "[IODoubleArray::execute] return number " << (*theReturnedArray)[i] << endl; + } + return insert(theReturnedArray); } - return insert(theReturnedArray); - } - catch (CORBA::Exception &e) + catch (CORBA::Exception &e) { - Tango::Except::print_exception(e); - throw ; + Tango::Except::print_exception(e); + throw; } } @@ -897,10 +918,10 @@ CORBA::Any *IODoubleArray::execute(TANGO_UNUSED(Tango::DeviceImpl *device), cons // //----------------------------------------------------------------------------- -IOUShortArray::IOUShortArray(const char *name,Tango::CmdArgType in, - Tango::CmdArgType out,const char *in_desc, - const char *out_desc) -:Tango::Command(name,in,out,in_desc,out_desc) +IOUShortArray::IOUShortArray(const char *name, Tango::CmdArgType in, + Tango::CmdArgType out, const char *in_desc, + const char *out_desc) + : Tango::Command(name, in, out, in_desc, out_desc) { } @@ -911,30 +932,32 @@ bool IOUShortArray::is_allowed(Tango::DeviceImpl *device, TANGO_UNUSED(const COR // command allowed only if the device is on // - if (device->get_state() == Tango::ON) - return(true); - else - return(false); + if (device->get_state() == Tango::ON) + return (true); + else + return (false); } CORBA::Any *IOUShortArray::execute(TANGO_UNUSED(Tango::DeviceImpl *device), const CORBA::Any &in_any) { - try { - const Tango::DevVarUShortArray *theNumberArray; - extract(in_any,theNumberArray); - Tango::DevVarUShortArray *theReturnedArray = new Tango::DevVarUShortArray(); - theReturnedArray->length(theNumberArray->length()); - for (unsigned int i=0; ilength(); i++) { - cout << "[IOUShortArray::execute] received number " << (*theNumberArray)[i] << endl; - (*theReturnedArray)[i] = (*theNumberArray)[i] * 2; - cout << "[IOUShortArray::execute] return number " << (*theReturnedArray)[i] << endl; + try + { + const Tango::DevVarUShortArray *theNumberArray; + extract(in_any, theNumberArray); + Tango::DevVarUShortArray *theReturnedArray = new Tango::DevVarUShortArray(); + theReturnedArray->length(theNumberArray->length()); + for (unsigned int i = 0; i < theNumberArray->length(); i++) + { + cout << "[IOUShortArray::execute] received number " << (*theNumberArray)[i] << endl; + (*theReturnedArray)[i] = (*theNumberArray)[i] * 2; + cout << "[IOUShortArray::execute] return number " << (*theReturnedArray)[i] << endl; + } + return insert(theReturnedArray); } - return insert(theReturnedArray); - } - catch (CORBA::Exception &e) + catch (CORBA::Exception &e) { - Tango::Except::print_exception(e); - throw ; + Tango::Except::print_exception(e); + throw; } } @@ -954,10 +977,10 @@ CORBA::Any *IOUShortArray::execute(TANGO_UNUSED(Tango::DeviceImpl *device), cons // //----------------------------------------------------------------------------- -IOULongArray::IOULongArray(const char *name,Tango::CmdArgType in, - Tango::CmdArgType out,const char *in_desc, - const char *out_desc) -:Tango::Command(name,in,out,in_desc,out_desc) +IOULongArray::IOULongArray(const char *name, Tango::CmdArgType in, + Tango::CmdArgType out, const char *in_desc, + const char *out_desc) + : Tango::Command(name, in, out, in_desc, out_desc) { } @@ -968,30 +991,32 @@ bool IOULongArray::is_allowed(Tango::DeviceImpl *device, TANGO_UNUSED(const CORB // command allowed only if the device is on // - if (device->get_state() == Tango::ON) - return(true); - else - return(false); + if (device->get_state() == Tango::ON) + return (true); + else + return (false); } CORBA::Any *IOULongArray::execute(TANGO_UNUSED(Tango::DeviceImpl *device), const CORBA::Any &in_any) { - try { - const Tango::DevVarULongArray *theNumberArray; - extract(in_any,theNumberArray); - Tango::DevVarULongArray *theReturnedArray = new Tango::DevVarULongArray(); - theReturnedArray->length(theNumberArray->length()); - for (unsigned int i=0; ilength(); i++) { - cout << "[IOULongArray::execute] received number " << (*theNumberArray)[i] << endl; - (*theReturnedArray)[i] = (*theNumberArray)[i] * 2; - cout << "[IOULongArray::execute] return number " << (*theReturnedArray)[i] << endl; + try + { + const Tango::DevVarULongArray *theNumberArray; + extract(in_any, theNumberArray); + Tango::DevVarULongArray *theReturnedArray = new Tango::DevVarULongArray(); + theReturnedArray->length(theNumberArray->length()); + for (unsigned int i = 0; i < theNumberArray->length(); i++) + { + cout << "[IOULongArray::execute] received number " << (*theNumberArray)[i] << endl; + (*theReturnedArray)[i] = (*theNumberArray)[i] * 2; + cout << "[IOULongArray::execute] return number " << (*theReturnedArray)[i] << endl; + } + return insert(theReturnedArray); } - return insert(theReturnedArray); - } - catch (CORBA::Exception &e) + catch (CORBA::Exception &e) { - Tango::Except::print_exception(e); - throw ; + Tango::Except::print_exception(e); + throw; } } @@ -1011,10 +1036,10 @@ CORBA::Any *IOULongArray::execute(TANGO_UNUSED(Tango::DeviceImpl *device), const // //----------------------------------------------------------------------------- -IOStringArray::IOStringArray(const char *name,Tango::CmdArgType in, - Tango::CmdArgType out,const char *in_desc, - const char *out_desc) -:Command(name,in,out,in_desc,out_desc) +IOStringArray::IOStringArray(const char *name, Tango::CmdArgType in, + Tango::CmdArgType out, const char *in_desc, + const char *out_desc) + : Command(name, in, out, in_desc, out_desc) { } @@ -1025,30 +1050,32 @@ bool IOStringArray::is_allowed(Tango::DeviceImpl *device, TANGO_UNUSED(const COR // command allowed only if the device is on // - if (device->get_state() == Tango::ON) - return(true); - else - return(false); + if (device->get_state() == Tango::ON) + return (true); + else + return (false); } CORBA::Any *IOStringArray::execute(TANGO_UNUSED(Tango::DeviceImpl *device), const CORBA::Any &in_any) { - try { - const Tango::DevVarStringArray *theStringArray; - extract(in_any,theStringArray); - Tango::DevVarStringArray *theReturnedArray = new Tango::DevVarStringArray(); - theReturnedArray->length(theStringArray->length()); - for (unsigned int i=0; ilength(); i++) { - cout << "[IOStringArray::execute] received String " << (*theStringArray)[i].in() << endl; - (*theReturnedArray)[theStringArray->length()-i-1] = (*theStringArray)[i] ; - cout << "[IOStringArray::execute] return String " << (*theReturnedArray)[i].in() << endl; + try + { + const Tango::DevVarStringArray *theStringArray; + extract(in_any, theStringArray); + Tango::DevVarStringArray *theReturnedArray = new Tango::DevVarStringArray(); + theReturnedArray->length(theStringArray->length()); + for (unsigned int i = 0; i < theStringArray->length(); i++) + { + cout << "[IOStringArray::execute] received String " << (*theStringArray)[i].in() << endl; + (*theReturnedArray)[theStringArray->length() - i - 1] = (*theStringArray)[i]; + cout << "[IOStringArray::execute] return String " << (*theReturnedArray)[i].in() << endl; + } + return insert(theReturnedArray); } - return insert(theReturnedArray); - } - catch (CORBA::Exception &e) + catch (CORBA::Exception &e) { - Tango::Except::print_exception(e); - throw ; + Tango::Except::print_exception(e); + throw; } } @@ -1068,10 +1095,10 @@ CORBA::Any *IOStringArray::execute(TANGO_UNUSED(Tango::DeviceImpl *device), cons // //----------------------------------------------------------------------------- -IOLongString::IOLongString(const char *name,Tango::CmdArgType in, - Tango::CmdArgType out,const char *in_desc, - const char *out_desc) -:Tango::Command(name,in,out,in_desc,out_desc) +IOLongString::IOLongString(const char *name, Tango::CmdArgType in, + Tango::CmdArgType out, const char *in_desc, + const char *out_desc) + : Tango::Command(name, in, out, in_desc, out_desc) { } @@ -1082,38 +1109,41 @@ bool IOLongString::is_allowed(Tango::DeviceImpl *device, TANGO_UNUSED(const CORB // command allowed only if the device is on // - if (device->get_state() == Tango::ON) - return(true); - else - return(false); + if (device->get_state() == Tango::ON) + return (true); + else + return (false); } CORBA::Any *IOLongString::execute(TANGO_UNUSED(Tango::DeviceImpl *device), const CORBA::Any &in_any) { - try { - const Tango::DevVarLongStringArray *theReceived; - extract(in_any,theReceived); - Tango::DevVarLongStringArray *theReturned = new Tango::DevVarLongStringArray; - unsigned int i; - - ((*theReturned).lvalue).length(((*theReceived).lvalue).length()); - for (i=0; i<((*theReceived).lvalue).length(); i++) { - cout << "[IOLongString::execute] received number " << (*theReceived).lvalue[i] << endl; - (*theReturned).lvalue[i] = (*theReceived).lvalue[i] * 2; - cout << "[IOLongString::execute] return number " << (*theReturned).lvalue[i] << endl; - } - ((*theReturned).svalue).length(((*theReceived).svalue).length()); - for (i=0; i<((*theReceived).svalue).length(); i++) { - cout << "[IOLongString::execute] received string " << (*theReceived).svalue[i].in() << endl; - (*theReturned).svalue[i] = Tango::string_dup((*theReceived).svalue[i]); - cout << "[IOLongString::execute] return string " << (*theReturned).svalue[i].in() << endl; + try + { + const Tango::DevVarLongStringArray *theReceived; + extract(in_any, theReceived); + Tango::DevVarLongStringArray *theReturned = new Tango::DevVarLongStringArray; + unsigned int i; + + ((*theReturned).lvalue).length(((*theReceived).lvalue).length()); + for (i = 0; i < ((*theReceived).lvalue).length(); i++) + { + cout << "[IOLongString::execute] received number " << (*theReceived).lvalue[i] << endl; + (*theReturned).lvalue[i] = (*theReceived).lvalue[i] * 2; + cout << "[IOLongString::execute] return number " << (*theReturned).lvalue[i] << endl; + } + ((*theReturned).svalue).length(((*theReceived).svalue).length()); + for (i = 0; i < ((*theReceived).svalue).length(); i++) + { + cout << "[IOLongString::execute] received string " << (*theReceived).svalue[i].in() << endl; + (*theReturned).svalue[i] = Tango::string_dup((*theReceived).svalue[i]); + cout << "[IOLongString::execute] return string " << (*theReturned).svalue[i].in() << endl; + } + return insert(theReturned); } - return insert(theReturned); - } - catch (CORBA::Exception &e) + catch (CORBA::Exception &e) { - Tango::Except::print_exception(e); - throw ; + Tango::Except::print_exception(e); + throw; } } @@ -1133,10 +1163,10 @@ CORBA::Any *IOLongString::execute(TANGO_UNUSED(Tango::DeviceImpl *device), const // //----------------------------------------------------------------------------- -IODoubleString::IODoubleString(const char *name,Tango::CmdArgType in, - Tango::CmdArgType out,const char *in_desc, - const char *out_desc) -:Tango::Command(name,in,out,in_desc,out_desc) +IODoubleString::IODoubleString(const char *name, Tango::CmdArgType in, + Tango::CmdArgType out, const char *in_desc, + const char *out_desc) + : Tango::Command(name, in, out, in_desc, out_desc) { } @@ -1147,38 +1177,41 @@ bool IODoubleString::is_allowed(Tango::DeviceImpl *device, TANGO_UNUSED(const CO // command allowed only if the device is on // - if (device->get_state() == Tango::ON) - return(true); - else - return(false); + if (device->get_state() == Tango::ON) + return (true); + else + return (false); } CORBA::Any *IODoubleString::execute(TANGO_UNUSED(Tango::DeviceImpl *device), const CORBA::Any &in_any) { - try { - const Tango::DevVarDoubleStringArray *theReceived; - Tango::DevVarDoubleStringArray *theReturned = new Tango::DevVarDoubleStringArray(); - unsigned int i; - - extract(in_any,theReceived); - ((*theReturned).dvalue).length(((*theReceived).dvalue).length()); - for (i=0; i<((*theReceived).dvalue).length(); i++) { - cout << "[IODoubleString::execute] received number " << (*theReceived).dvalue[i] << endl; - (*theReturned).dvalue[i] = (*theReceived).dvalue[i] * 2; - cout << "[IODoubleString::execute] return number " << (*theReturned).dvalue[i] << endl; - } - ((*theReturned).svalue).length(((*theReceived).svalue).length()); - for (i=0; i<((*theReceived).svalue).length(); i++) { - cout << "[IODoubleString::execute] received string " << (*theReceived).svalue[i].in() << endl; - (*theReturned).svalue[i] = (*theReceived).svalue[i]; - cout << "[IODoubleString::execute] return string " << (*theReturned).svalue[i].in() << endl; + try + { + const Tango::DevVarDoubleStringArray *theReceived; + Tango::DevVarDoubleStringArray *theReturned = new Tango::DevVarDoubleStringArray(); + unsigned int i; + + extract(in_any, theReceived); + ((*theReturned).dvalue).length(((*theReceived).dvalue).length()); + for (i = 0; i < ((*theReceived).dvalue).length(); i++) + { + cout << "[IODoubleString::execute] received number " << (*theReceived).dvalue[i] << endl; + (*theReturned).dvalue[i] = (*theReceived).dvalue[i] * 2; + cout << "[IODoubleString::execute] return number " << (*theReturned).dvalue[i] << endl; + } + ((*theReturned).svalue).length(((*theReceived).svalue).length()); + for (i = 0; i < ((*theReceived).svalue).length(); i++) + { + cout << "[IODoubleString::execute] received string " << (*theReceived).svalue[i].in() << endl; + (*theReturned).svalue[i] = (*theReceived).svalue[i]; + cout << "[IODoubleString::execute] return string " << (*theReturned).svalue[i].in() << endl; + } + return insert(theReturned); } - return insert(theReturned); - } - catch (CORBA::Exception &e) + catch (CORBA::Exception &e) { - Tango::Except::print_exception(e); - throw ; + Tango::Except::print_exception(e); + throw; } } @@ -1198,10 +1231,10 @@ CORBA::Any *IODoubleString::execute(TANGO_UNUSED(Tango::DeviceImpl *device), con // //----------------------------------------------------------------------------- -OLong::OLong(const char *name,Tango::CmdArgType in, - Tango::CmdArgType out,const char *in_desc, - const char *out_desc) -:Tango::Command(name,in,out,in_desc,out_desc) +OLong::OLong(const char *name, Tango::CmdArgType in, + Tango::CmdArgType out, const char *in_desc, + const char *out_desc) + : Tango::Command(name, in, out, in_desc, out_desc) { } @@ -1212,24 +1245,26 @@ bool OLong::is_allowed(Tango::DeviceImpl *device, TANGO_UNUSED(const CORBA::Any // command allowed only if the device is on // - if (device->get_state() == Tango::ON) - return(true); - else - return(false); + if (device->get_state() == Tango::ON) + return (true); + else + return (false); } -CORBA::Any *OLong::execute(Tango::DeviceImpl *device, TANGO_UNUSED(const CORBA::Any &in_any)) + +CORBA::Any *OLong::execute(Tango::DeviceImpl *device,TANGO_UNUSED(const CORBA::Any &in_any)) { - try { - long theNumber = 22; - cout << "[OLong::execute] return number " << theNumber << endl; - DEV_DEBUG_STREAM(device) << "[OLong::execute] return number " << theNumber << endl; - return insert(theNumber); - } - catch (CORBA::Exception &e) + try + { + long theNumber = 22; + cout << "[OLong::execute] return number " << theNumber << endl; + DEV_DEBUG_STREAM(device) << "[OLong::execute] return number " << theNumber << endl; + return insert(theNumber); + } + catch (CORBA::Exception &e) { - Tango::Except::print_exception(e); - throw ; + Tango::Except::print_exception(e); + throw; } } @@ -1249,10 +1284,10 @@ CORBA::Any *OLong::execute(Tango::DeviceImpl *device, TANGO_UNUSED(const CORBA:: // //----------------------------------------------------------------------------- -OULong::OULong(const char *name,Tango::CmdArgType in, - Tango::CmdArgType out,const char *in_desc, - const char *out_desc) -:Tango::Command(name,in,out,in_desc,out_desc) +OULong::OULong(const char *name, Tango::CmdArgType in, + Tango::CmdArgType out, const char *in_desc, + const char *out_desc) + : Tango::Command(name, in, out, in_desc, out_desc) { } @@ -1263,23 +1298,25 @@ bool OULong::is_allowed(Tango::DeviceImpl *device, TANGO_UNUSED(const CORBA::Any // command allowed only if the device is on // - if (device->get_state() == Tango::ON) - return(true); - else - return(false); + if (device->get_state() == Tango::ON) + return (true); + else + return (false); } -CORBA::Any *OULong::execute(TANGO_UNUSED(Tango::DeviceImpl *device), TANGO_UNUSED(const CORBA::Any &in_any)) + +CORBA::Any *OULong::execute(TANGO_UNUSED(Tango::DeviceImpl *device),TANGO_UNUSED(const CORBA::Any &in_any)) { - try { - unsigned long theNumber = 333; - cout << "[OULong::execute] return number " << theNumber << endl; - return insert(theNumber); - } - catch (CORBA::Exception &e) + try + { + unsigned long theNumber = 333; + cout << "[OULong::execute] return number " << theNumber << endl; + return insert(theNumber); + } + catch (CORBA::Exception &e) { - Tango::Except::print_exception(e); - throw ; + Tango::Except::print_exception(e); + throw; } } @@ -1299,10 +1336,10 @@ CORBA::Any *OULong::execute(TANGO_UNUSED(Tango::DeviceImpl *device), TANGO_UNUSE // //----------------------------------------------------------------------------- -OLongArray::OLongArray(const char *name,Tango::CmdArgType in, - Tango::CmdArgType out,const char *in_desc, - const char *out_desc) -:Tango::Command(name,in,out,in_desc,out_desc) +OLongArray::OLongArray(const char *name, Tango::CmdArgType in, + Tango::CmdArgType out, const char *in_desc, + const char *out_desc) + : Tango::Command(name, in, out, in_desc, out_desc) { } @@ -1313,27 +1350,30 @@ bool OLongArray::is_allowed(Tango::DeviceImpl *device, TANGO_UNUSED(const CORBA: // command allowed only if the device is on // - if (device->get_state() == Tango::ON) - return(true); - else - return(false); + if (device->get_state() == Tango::ON) + return (true); + else + return (false); } -CORBA::Any *OLongArray::execute(TANGO_UNUSED(Tango::DeviceImpl *device), TANGO_UNUSED(const CORBA::Any &in_any)) + +CORBA::Any *OLongArray::execute(TANGO_UNUSED(Tango::DeviceImpl *device),TANGO_UNUSED(const CORBA::Any &in_any)) { - try { - Tango::DevVarLongArray *theReturnedArray = new Tango::DevVarLongArray(); - theReturnedArray->length(4); - for (int i=0; i<4; i++) { - (*theReturnedArray)[i] = 555 + i; - cout << "[OLongArray::execute] return number " << (*theReturnedArray)[i] << endl; + try + { + Tango::DevVarLongArray *theReturnedArray = new Tango::DevVarLongArray(); + theReturnedArray->length(4); + for (int i = 0; i < 4; i++) + { + (*theReturnedArray)[i] = 555 + i; + cout << "[OLongArray::execute] return number " << (*theReturnedArray)[i] << endl; + } + return insert(theReturnedArray); } - return insert(theReturnedArray); - } - catch (CORBA::Exception &e) + catch (CORBA::Exception &e) { - Tango::Except::print_exception(e); - throw ; + Tango::Except::print_exception(e); + throw; } } @@ -1353,10 +1393,10 @@ CORBA::Any *OLongArray::execute(TANGO_UNUSED(Tango::DeviceImpl *device), TANGO_U // //----------------------------------------------------------------------------- -OULongArray::OULongArray(const char *name,Tango::CmdArgType in, - Tango::CmdArgType out,const char *in_desc, - const char *out_desc) -:Tango::Command(name,in,out,in_desc,out_desc) +OULongArray::OULongArray(const char *name, Tango::CmdArgType in, + Tango::CmdArgType out, const char *in_desc, + const char *out_desc) + : Tango::Command(name, in, out, in_desc, out_desc) { } @@ -1367,27 +1407,30 @@ bool OULongArray::is_allowed(Tango::DeviceImpl *device, TANGO_UNUSED(const CORBA // command allowed only if the device is on // - if (device->get_state() == Tango::ON) - return(true); - else - return(false); + if (device->get_state() == Tango::ON) + return (true); + else + return (false); } -CORBA::Any *OULongArray::execute(TANGO_UNUSED(Tango::DeviceImpl *device), TANGO_UNUSED(const CORBA::Any &in_any)) + +CORBA::Any *OULongArray::execute(TANGO_UNUSED(Tango::DeviceImpl *device),TANGO_UNUSED(const CORBA::Any &in_any)) { - try { - Tango::DevVarULongArray *theReturnedArray = new Tango::DevVarULongArray(); - theReturnedArray->length(3); - for (int i=0; i<3; i++) { - (*theReturnedArray)[i] = 777 + i; - cout << "[OULongArray::execute] return number " << (*theReturnedArray)[i] << endl; + try + { + Tango::DevVarULongArray *theReturnedArray = new Tango::DevVarULongArray(); + theReturnedArray->length(3); + for (int i = 0; i < 3; i++) + { + (*theReturnedArray)[i] = 777 + i; + cout << "[OULongArray::execute] return number " << (*theReturnedArray)[i] << endl; + } + return insert(theReturnedArray); } - return insert(theReturnedArray); - } - catch (CORBA::Exception &e) + catch (CORBA::Exception &e) { - Tango::Except::print_exception(e); - throw ; + Tango::Except::print_exception(e); + throw; } } @@ -1407,10 +1450,10 @@ CORBA::Any *OULongArray::execute(TANGO_UNUSED(Tango::DeviceImpl *device), TANGO_ // //----------------------------------------------------------------------------- -OLongString::OLongString(const char *name,Tango::CmdArgType in, - Tango::CmdArgType out,const char *in_desc, - const char *out_desc) -:Tango::Command(name,in,out,in_desc,out_desc) +OLongString::OLongString(const char *name, Tango::CmdArgType in, + Tango::CmdArgType out, const char *in_desc, + const char *out_desc) + : Tango::Command(name, in, out, in_desc, out_desc) { } @@ -1421,34 +1464,38 @@ bool OLongString::is_allowed(Tango::DeviceImpl *device, TANGO_UNUSED(const CORBA // command allowed only if the device is on // - if (device->get_state() == Tango::ON) - return(true); - else - return(false); + if (device->get_state() == Tango::ON) + return (true); + else + return (false); } -CORBA::Any *OLongString::execute(TANGO_UNUSED(Tango::DeviceImpl *device), TANGO_UNUSED(const CORBA::Any &in_any)) -{ - try { - Tango::DevVarLongStringArray *theReturned = new Tango::DevVarLongStringArray(); - int i; - ((*theReturned).lvalue).length(6); - for (i=0; i<6; i++) { - (*theReturned).lvalue[i] = 999 + i; - cout << "[OLongString::execute] return number " << (*theReturned).lvalue[i] << endl; - } - ((*theReturned).svalue).length(1); - for (i=0; i<1; i++) { - (*theReturned).svalue[i] = Tango::string_dup("Hola todos"); - cout << "[OLongString::execute] return string " << (*theReturned).svalue[i].in() << endl; +CORBA::Any *OLongString::execute(TANGO_UNUSED(Tango::DeviceImpl *device),TANGO_UNUSED(const CORBA::Any &in_any)) +{ + try + { + Tango::DevVarLongStringArray *theReturned = new Tango::DevVarLongStringArray(); + int i; + + ((*theReturned).lvalue).length(6); + for (i = 0; i < 6; i++) + { + (*theReturned).lvalue[i] = 999 + i; + cout << "[OLongString::execute] return number " << (*theReturned).lvalue[i] << endl; + } + ((*theReturned).svalue).length(1); + for (i = 0; i < 1; i++) + { + (*theReturned).svalue[i] = Tango::string_dup("Hola todos"); + cout << "[OLongString::execute] return string " << (*theReturned).svalue[i].in() << endl; + } + return insert(theReturned); } - return insert(theReturned); - } - catch (CORBA::Exception &e) + catch (CORBA::Exception &e) { - Tango::Except::print_exception(e); - throw ; + Tango::Except::print_exception(e); + throw; } } @@ -1468,10 +1515,10 @@ CORBA::Any *OLongString::execute(TANGO_UNUSED(Tango::DeviceImpl *device), TANGO_ //----------------------------------------------------------------------------- #ifndef COMPAT -IOEncoded::IOEncoded(const char *name,Tango::CmdArgType in, - Tango::CmdArgType out,const char *in_desc, - const char *out_desc) -:Tango::Command(name,in,out,in_desc,out_desc) +IOEncoded::IOEncoded(const char *name, Tango::CmdArgType in, + Tango::CmdArgType out, const char *in_desc, + const char *out_desc) + : Tango::Command(name, in, out, in_desc, out_desc) { } @@ -1482,32 +1529,34 @@ bool IOEncoded::is_allowed(Tango::DeviceImpl *device, TANGO_UNUSED(const CORBA:: // command allowed only if the device is on // - if (device->get_state() == Tango::ON) - return(true); - else - return(false); + if (device->get_state() == Tango::ON) + return (true); + else + return (false); } CORBA::Any *IOEncoded::execute(TANGO_UNUSED(Tango::DeviceImpl *device), const CORBA::Any &in_any) { - try { - const Tango::DevEncoded *the_enc; - extract(in_any,the_enc); - Tango::DevEncoded *theReturned_enc = new Tango::DevEncoded(); - theReturned_enc->encoded_data.length(the_enc->encoded_data.length()); - cout << "[IOEncoded::execute] received string " << the_enc->encoded_format << endl; - for (unsigned int i=0; iencoded_data.length(); i++) { - cout << "[IOEncoded::execute] received number " << (int)the_enc->encoded_data[i] << endl; - theReturned_enc->encoded_data[i] = the_enc->encoded_data[i] * 2; - cout << "[IOEncoded::execute] returned number " << (int)theReturned_enc->encoded_data[i] << endl; + try + { + const Tango::DevEncoded *the_enc; + extract(in_any, the_enc); + Tango::DevEncoded *theReturned_enc = new Tango::DevEncoded(); + theReturned_enc->encoded_data.length(the_enc->encoded_data.length()); + cout << "[IOEncoded::execute] received string " << the_enc->encoded_format << endl; + for (unsigned int i = 0; i < the_enc->encoded_data.length(); i++) + { + cout << "[IOEncoded::execute] received number " << (int) the_enc->encoded_data[i] << endl; + theReturned_enc->encoded_data[i] = the_enc->encoded_data[i] * 2; + cout << "[IOEncoded::execute] returned number " << (int) theReturned_enc->encoded_data[i] << endl; + } + theReturned_enc->encoded_format = Tango::string_dup("Returned string"); + return insert(theReturned_enc); } - theReturned_enc->encoded_format = Tango::string_dup("Returned string"); - return insert(theReturned_enc); - } - catch (CORBA::Exception &e) + catch (CORBA::Exception &e) { - Tango::Except::print_exception(e); - throw ; + Tango::Except::print_exception(e); + throw; } } @@ -1526,10 +1575,10 @@ CORBA::Any *IOEncoded::execute(TANGO_UNUSED(Tango::DeviceImpl *device), const CO // //----------------------------------------------------------------------------- -OEncoded::OEncoded(const char *name,Tango::CmdArgType in, - Tango::CmdArgType out,const char *in_desc, - const char *out_desc) -:Tango::Command(name,in,out,in_desc,out_desc) +OEncoded::OEncoded(const char *name, Tango::CmdArgType in, + Tango::CmdArgType out, const char *in_desc, + const char *out_desc) + : Tango::Command(name, in, out, in_desc, out_desc) { encoded_cmd_ctr = 0; } @@ -1541,56 +1590,88 @@ bool OEncoded::is_allowed(Tango::DeviceImpl *device, TANGO_UNUSED(const CORBA::A // command allowed only if the device is on // - if (device->get_state() == Tango::ON) - return(true); - else - return(false); + if (device->get_state() == Tango::ON) + return (true); + else + return (false); } -CORBA::Any *OEncoded::execute(TANGO_UNUSED(Tango::DeviceImpl *device), TANGO_UNUSED(const CORBA::Any &in_any)) -{ - try { - Tango::DevEncoded *theReturned = new Tango::DevEncoded(); - encoded_cmd_ctr++; - if ((encoded_cmd_ctr % 2) == 0) - { - theReturned->encoded_format = Tango::string_dup("Odd - OEncoded format"); - theReturned->encoded_data.length(2); - theReturned->encoded_data[0] = 11; - theReturned->encoded_data[1] = 21; - } - else +CORBA::Any *OEncoded::execute(TANGO_UNUSED(Tango::DeviceImpl *device),TANGO_UNUSED(const CORBA::Any &in_any)) +{ + try { - theReturned->encoded_format = Tango::string_dup("Even - OEncoded format"); - theReturned->encoded_data.length(4); - theReturned->encoded_data[0] = 10; - theReturned->encoded_data[1] = 20; - theReturned->encoded_data[2] = 30; - theReturned->encoded_data[3] = 40; + Tango::DevEncoded *theReturned = new Tango::DevEncoded(); + + encoded_cmd_ctr++; + if ((encoded_cmd_ctr % 2) == 0) + { + theReturned->encoded_format = Tango::string_dup("Odd - OEncoded format"); + theReturned->encoded_data.length(2); + theReturned->encoded_data[0] = 11; + theReturned->encoded_data[1] = 21; + } + else + { + theReturned->encoded_format = Tango::string_dup("Even - OEncoded format"); + theReturned->encoded_data.length(4); + theReturned->encoded_data[0] = 10; + theReturned->encoded_data[1] = 20; + theReturned->encoded_data[2] = 30; + theReturned->encoded_data[3] = 40; + } + return insert(theReturned); } - return insert(theReturned); - } - catch (CORBA::Exception &e) + catch (CORBA::Exception &e) { - Tango::Except::print_exception(e); - throw ; + Tango::Except::print_exception(e); + throw; } } #endif -IODevEnum::IODevEnum() : - Command("IODevEnum", Tango::CmdArgType::DEV_ENUM, Tango::CmdArgType::DEV_ENUM, "DevEnum", "DevEnum"){ +IODevEnum::IODevEnum() + : + Command("IODevEnum", Tango::CmdArgType::DEV_ENUM, Tango::CmdArgType::DEV_ENUM, "DevEnum", "DevEnum") +{ set_in_enum_labels({"IN Label 1", "IN Label 2", "IN Label 3"}); set_out_enum_labels({"OUT Label 1", "OUT Label 2", "OUT Label 3"}); } -bool IODevEnum::is_allowed(Tango::DeviceImpl *, const CORBA::Any &) { +bool IODevEnum::is_allowed(Tango::DeviceImpl *, const CORBA::Any &) +{ return true; } -CORBA::Any *IODevEnum::execute(Tango::DeviceImpl *, const CORBA::Any &any) { +CORBA::Any *IODevEnum::execute(Tango::DeviceImpl *, const CORBA::Any &any) +{ Tango::DevShort in; extract(any, in); return insert(in); } +IOPipeBlob::IOPipeBlob() + : + Command("IOPipeBlob", + Tango::CmdArgType::DEV_PIPE_BLOB, + Tango::CmdArgType::DEV_PIPE_BLOB, + "DevPipeBlob", + "DevPipeBlob") +{} +bool IOPipeBlob::is_allowed(Tango::DeviceImpl *dev, const CORBA::Any &in_any) +{ + return true; +} +CORBA::Any *IOPipeBlob::execute(Tango::DeviceImpl *dev, const CORBA::Any &in_any) +{ + Tango::DevPipeBlob *blob = nullptr; + //TODO extract + bool extracted = in_any >>= blob; + if (not(extracted)) throw logic_error{"DevPipeBlob has not been extracted!"}; + + //TODO insert + CORBA::Any *out_any = new CORBA::Any(); + + (*out_any) <<= blob; + return out_any; +} + diff --git a/test/cpp_test_suite/cpp_test_ds/TypeCmds.h b/test/cpp_test_suite/cpp_test_ds/TypeCmds.h index e0500e874..82a556f03 100644 --- a/test/cpp_test_suite/cpp_test_ds/TypeCmds.h +++ b/test/cpp_test_suite/cpp_test_ds/TypeCmds.h @@ -1,313 +1,331 @@ #include -class IOVoid : public Tango::Command { +class IOVoid: public Tango::Command +{ public: - IOVoid(const char *,Tango::CmdArgType, Tango::CmdArgType,const char *,const char *); - ~IOVoid() {}; + IOVoid(const char *, Tango::CmdArgType, Tango::CmdArgType, const char *, const char *); + ~IOVoid() + {}; - virtual bool is_allowed (Tango::DeviceImpl *, const CORBA::Any &); - virtual CORBA::Any *execute (Tango::DeviceImpl *, const CORBA::Any &); + virtual bool is_allowed(Tango::DeviceImpl *, const CORBA::Any &); + virtual CORBA::Any *execute(Tango::DeviceImpl *, const CORBA::Any &); }; - -class IOBool : public Tango::Command { +class IOBool: public Tango::Command +{ public: - IOBool(const char *,Tango::CmdArgType, Tango::CmdArgType,const char *,const char *); - ~IOBool() {}; + IOBool(const char *, Tango::CmdArgType, Tango::CmdArgType, const char *, const char *); + ~IOBool() + {}; - virtual bool is_allowed (Tango::DeviceImpl *, const CORBA::Any &); - virtual CORBA::Any *execute (Tango::DeviceImpl *, const CORBA::Any &); + virtual bool is_allowed(Tango::DeviceImpl *, const CORBA::Any &); + virtual CORBA::Any *execute(Tango::DeviceImpl *, const CORBA::Any &); }; - -class IOShort : public Tango::Command +class IOShort: public Tango::Command { public: - IOShort(const char *,Tango::CmdArgType, Tango::CmdArgType,const char *,const char *); - ~IOShort() {}; + IOShort(const char *, Tango::CmdArgType, Tango::CmdArgType, const char *, const char *); + ~IOShort() + {}; - virtual bool is_allowed (Tango::DeviceImpl *, const CORBA::Any &); - virtual CORBA::Any *execute (Tango::DeviceImpl *, const CORBA::Any &); + virtual bool is_allowed(Tango::DeviceImpl *, const CORBA::Any &); + virtual CORBA::Any *execute(Tango::DeviceImpl *, const CORBA::Any &); }; - -class IOLong : public Tango::Command +class IOLong: public Tango::Command { public: - IOLong(const char *,Tango::CmdArgType, Tango::CmdArgType,const char *,const char *); - ~IOLong() {}; + IOLong(const char *, Tango::CmdArgType, Tango::CmdArgType, const char *, const char *); + ~IOLong() + {}; - virtual bool is_allowed (Tango::DeviceImpl *, const CORBA::Any &); - virtual CORBA::Any *execute (Tango::DeviceImpl *, const CORBA::Any &); + virtual bool is_allowed(Tango::DeviceImpl *, const CORBA::Any &); + virtual CORBA::Any *execute(Tango::DeviceImpl *, const CORBA::Any &); }; - -class IOLong64 : public Tango::Command +class IOLong64: public Tango::Command { public: - IOLong64(const char *,Tango::CmdArgType, Tango::CmdArgType,const char *,const char *); - ~IOLong64() {}; + IOLong64(const char *, Tango::CmdArgType, Tango::CmdArgType, const char *, const char *); + ~IOLong64() + {}; - virtual bool is_allowed (Tango::DeviceImpl *, const CORBA::Any &); - virtual CORBA::Any *execute (Tango::DeviceImpl *, const CORBA::Any &); + virtual bool is_allowed(Tango::DeviceImpl *, const CORBA::Any &); + virtual CORBA::Any *execute(Tango::DeviceImpl *, const CORBA::Any &); }; - -class IOFloat : public Tango::Command +class IOFloat: public Tango::Command { public: - IOFloat(const char *,Tango::CmdArgType, Tango::CmdArgType,const char *,const char *); - ~IOFloat() {}; + IOFloat(const char *, Tango::CmdArgType, Tango::CmdArgType, const char *, const char *); + ~IOFloat() + {}; - virtual bool is_allowed (Tango::DeviceImpl *, const CORBA::Any &); - virtual CORBA::Any *execute (Tango::DeviceImpl *, const CORBA::Any &); + virtual bool is_allowed(Tango::DeviceImpl *, const CORBA::Any &); + virtual CORBA::Any *execute(Tango::DeviceImpl *, const CORBA::Any &); }; - -class IODouble : public Tango::Command +class IODouble: public Tango::Command { public: - IODouble(const char *,Tango::CmdArgType, Tango::CmdArgType,const char *,const char *); - ~IODouble() {}; + IODouble(const char *, Tango::CmdArgType, Tango::CmdArgType, const char *, const char *); + ~IODouble() + {}; - virtual bool is_allowed (Tango::DeviceImpl *, const CORBA::Any &); - virtual CORBA::Any *execute (Tango::DeviceImpl *, const CORBA::Any &); + virtual bool is_allowed(Tango::DeviceImpl *, const CORBA::Any &); + virtual CORBA::Any *execute(Tango::DeviceImpl *, const CORBA::Any &); }; - -class IOUShort : public Tango::Command +class IOUShort: public Tango::Command { public: - IOUShort(const char *,Tango::CmdArgType, Tango::CmdArgType,const char *,const char *); - ~IOUShort() {}; + IOUShort(const char *, Tango::CmdArgType, Tango::CmdArgType, const char *, const char *); + ~IOUShort() + {}; - virtual bool is_allowed (Tango::DeviceImpl *, const CORBA::Any &); - virtual CORBA::Any *execute (Tango::DeviceImpl *, const CORBA::Any &); + virtual bool is_allowed(Tango::DeviceImpl *, const CORBA::Any &); + virtual CORBA::Any *execute(Tango::DeviceImpl *, const CORBA::Any &); }; - -class IOULong : public Tango::Command +class IOULong: public Tango::Command { public: - IOULong(const char *,Tango::CmdArgType, Tango::CmdArgType,const char *,const char *); - ~IOULong() {}; + IOULong(const char *, Tango::CmdArgType, Tango::CmdArgType, const char *, const char *); + ~IOULong() + {}; - virtual bool is_allowed (Tango::DeviceImpl *, const CORBA::Any &); - virtual CORBA::Any *execute (Tango::DeviceImpl *, const CORBA::Any &); + virtual bool is_allowed(Tango::DeviceImpl *, const CORBA::Any &); + virtual CORBA::Any *execute(Tango::DeviceImpl *, const CORBA::Any &); }; -class IOULong64 : public Tango::Command +class IOULong64: public Tango::Command { public: - IOULong64(const char *,Tango::CmdArgType, Tango::CmdArgType,const char *,const char *); - ~IOULong64() {}; + IOULong64(const char *, Tango::CmdArgType, Tango::CmdArgType, const char *, const char *); + ~IOULong64() + {}; - virtual bool is_allowed (Tango::DeviceImpl *, const CORBA::Any &); - virtual CORBA::Any *execute (Tango::DeviceImpl *, const CORBA::Any &); + virtual bool is_allowed(Tango::DeviceImpl *, const CORBA::Any &); + virtual CORBA::Any *execute(Tango::DeviceImpl *, const CORBA::Any &); }; - -class IOString : public Tango::Command +class IOString: public Tango::Command { public: - IOString(const char *,Tango::CmdArgType, Tango::CmdArgType,const char *,const char *); - ~IOString() {}; + IOString(const char *, Tango::CmdArgType, Tango::CmdArgType, const char *, const char *); + ~IOString() + {}; - virtual bool is_allowed (Tango::DeviceImpl *, const CORBA::Any &); - virtual CORBA::Any *execute (Tango::DeviceImpl *, const CORBA::Any &); + virtual bool is_allowed(Tango::DeviceImpl *, const CORBA::Any &); + virtual CORBA::Any *execute(Tango::DeviceImpl *, const CORBA::Any &); }; - -class IOCharArray : public Tango::Command +class IOCharArray: public Tango::Command { public: - IOCharArray(const char *,Tango::CmdArgType, Tango::CmdArgType,const char *,const char *); - ~IOCharArray() {}; + IOCharArray(const char *, Tango::CmdArgType, Tango::CmdArgType, const char *, const char *); + ~IOCharArray() + {}; - virtual bool is_allowed (Tango::DeviceImpl *, const CORBA::Any &); - virtual CORBA::Any *execute (Tango::DeviceImpl *, const CORBA::Any &); + virtual bool is_allowed(Tango::DeviceImpl *, const CORBA::Any &); + virtual CORBA::Any *execute(Tango::DeviceImpl *, const CORBA::Any &); }; - -class IOShortArray : public Tango::Command +class IOShortArray: public Tango::Command { public: - IOShortArray(const char *,Tango::CmdArgType, Tango::CmdArgType,const char *,const char *); - ~IOShortArray() {}; + IOShortArray(const char *, Tango::CmdArgType, Tango::CmdArgType, const char *, const char *); + ~IOShortArray() + {}; - virtual bool is_allowed (Tango::DeviceImpl *, const CORBA::Any &); - virtual CORBA::Any *execute (Tango::DeviceImpl *, const CORBA::Any &); + virtual bool is_allowed(Tango::DeviceImpl *, const CORBA::Any &); + virtual CORBA::Any *execute(Tango::DeviceImpl *, const CORBA::Any &); }; - -class IOLongArray : public Tango::Command +class IOLongArray: public Tango::Command { public: - IOLongArray(const char *,Tango::CmdArgType, Tango::CmdArgType,const char *,const char *); - ~IOLongArray() {}; + IOLongArray(const char *, Tango::CmdArgType, Tango::CmdArgType, const char *, const char *); + ~IOLongArray() + {}; - virtual bool is_allowed (Tango::DeviceImpl *, const CORBA::Any &); - virtual CORBA::Any *execute (Tango::DeviceImpl *, const CORBA::Any &); + virtual bool is_allowed(Tango::DeviceImpl *, const CORBA::Any &); + virtual CORBA::Any *execute(Tango::DeviceImpl *, const CORBA::Any &); }; - -class IOFloatArray : public Tango::Command +class IOFloatArray: public Tango::Command { public: - IOFloatArray(const char *,Tango::CmdArgType, Tango::CmdArgType,const char *,const char *); - ~IOFloatArray() {}; + IOFloatArray(const char *, Tango::CmdArgType, Tango::CmdArgType, const char *, const char *); + ~IOFloatArray() + {}; - virtual bool is_allowed (Tango::DeviceImpl *, const CORBA::Any &); - virtual CORBA::Any *execute (Tango::DeviceImpl *, const CORBA::Any &); + virtual bool is_allowed(Tango::DeviceImpl *, const CORBA::Any &); + virtual CORBA::Any *execute(Tango::DeviceImpl *, const CORBA::Any &); }; - -class IODoubleArray : public Tango::Command +class IODoubleArray: public Tango::Command { public: - IODoubleArray(const char *,Tango::CmdArgType, Tango::CmdArgType,const char *,const char *); - ~IODoubleArray() {}; + IODoubleArray(const char *, Tango::CmdArgType, Tango::CmdArgType, const char *, const char *); + ~IODoubleArray() + {}; - virtual bool is_allowed (Tango::DeviceImpl *, const CORBA::Any &); - virtual CORBA::Any *execute (Tango::DeviceImpl *, const CORBA::Any &); + virtual bool is_allowed(Tango::DeviceImpl *, const CORBA::Any &); + virtual CORBA::Any *execute(Tango::DeviceImpl *, const CORBA::Any &); }; - -class IOUShortArray : public Tango::Command +class IOUShortArray: public Tango::Command { public: - IOUShortArray(const char *,Tango::CmdArgType, Tango::CmdArgType,const char *,const char *); - ~IOUShortArray() {}; + IOUShortArray(const char *, Tango::CmdArgType, Tango::CmdArgType, const char *, const char *); + ~IOUShortArray() + {}; - virtual bool is_allowed (Tango::DeviceImpl *, const CORBA::Any &); - virtual CORBA::Any *execute (Tango::DeviceImpl *, const CORBA::Any &); + virtual bool is_allowed(Tango::DeviceImpl *, const CORBA::Any &); + virtual CORBA::Any *execute(Tango::DeviceImpl *, const CORBA::Any &); }; - -class IOULongArray : public Tango::Command +class IOULongArray: public Tango::Command { public: - IOULongArray(const char *,Tango::CmdArgType, Tango::CmdArgType,const char *,const char *); - ~IOULongArray() {}; + IOULongArray(const char *, Tango::CmdArgType, Tango::CmdArgType, const char *, const char *); + ~IOULongArray() + {}; - virtual bool is_allowed (Tango::DeviceImpl *, const CORBA::Any &); - virtual CORBA::Any *execute (Tango::DeviceImpl *, const CORBA::Any &); + virtual bool is_allowed(Tango::DeviceImpl *, const CORBA::Any &); + virtual CORBA::Any *execute(Tango::DeviceImpl *, const CORBA::Any &); }; - -class IOStringArray : public Tango::Command +class IOStringArray: public Tango::Command { public: - IOStringArray(const char *,Tango::CmdArgType, Tango::CmdArgType,const char *,const char *); - ~IOStringArray() {}; + IOStringArray(const char *, Tango::CmdArgType, Tango::CmdArgType, const char *, const char *); + ~IOStringArray() + {}; - virtual bool is_allowed (Tango::DeviceImpl *, const CORBA::Any &); - virtual CORBA::Any *execute (Tango::DeviceImpl *, const CORBA::Any &); + virtual bool is_allowed(Tango::DeviceImpl *, const CORBA::Any &); + virtual CORBA::Any *execute(Tango::DeviceImpl *, const CORBA::Any &); }; - -class IOLongString : public Tango::Command +class IOLongString: public Tango::Command { public: - IOLongString(const char *,Tango::CmdArgType, Tango::CmdArgType,const char *,const char *); - ~IOLongString() {}; + IOLongString(const char *, Tango::CmdArgType, Tango::CmdArgType, const char *, const char *); + ~IOLongString() + {}; - virtual bool is_allowed (Tango::DeviceImpl *, const CORBA::Any &); - virtual CORBA::Any *execute (Tango::DeviceImpl *, const CORBA::Any &); + virtual bool is_allowed(Tango::DeviceImpl *, const CORBA::Any &); + virtual CORBA::Any *execute(Tango::DeviceImpl *, const CORBA::Any &); }; - -class IODoubleString : public Tango::Command +class IODoubleString: public Tango::Command { public: - IODoubleString(const char *,Tango::CmdArgType, Tango::CmdArgType,const char *,const char *); - ~IODoubleString() {}; + IODoubleString(const char *, Tango::CmdArgType, Tango::CmdArgType, const char *, const char *); + ~IODoubleString() + {}; - virtual bool is_allowed (Tango::DeviceImpl *, const CORBA::Any &); - virtual CORBA::Any *execute (Tango::DeviceImpl *, const CORBA::Any &); + virtual bool is_allowed(Tango::DeviceImpl *, const CORBA::Any &); + virtual CORBA::Any *execute(Tango::DeviceImpl *, const CORBA::Any &); }; - -class OLong : public Tango::Command +class OLong: public Tango::Command { public: - OLong(const char *,Tango::CmdArgType, Tango::CmdArgType,const char *,const char *); - ~OLong() {}; + OLong(const char *, Tango::CmdArgType, Tango::CmdArgType, const char *, const char *); + ~OLong() + {}; - virtual bool is_allowed (Tango::DeviceImpl *, const CORBA::Any &); - virtual CORBA::Any *execute (Tango::DeviceImpl *, const CORBA::Any &); + virtual bool is_allowed(Tango::DeviceImpl *, const CORBA::Any &); + virtual CORBA::Any *execute(Tango::DeviceImpl *, const CORBA::Any &); }; - -class OULong : public Tango::Command +class OULong: public Tango::Command { public: - OULong(const char *,Tango::CmdArgType, Tango::CmdArgType,const char *,const char *); - ~OULong() {}; + OULong(const char *, Tango::CmdArgType, Tango::CmdArgType, const char *, const char *); + ~OULong() + {}; - virtual bool is_allowed (Tango::DeviceImpl *, const CORBA::Any &); - virtual CORBA::Any *execute (Tango::DeviceImpl *, const CORBA::Any &); + virtual bool is_allowed(Tango::DeviceImpl *, const CORBA::Any &); + virtual CORBA::Any *execute(Tango::DeviceImpl *, const CORBA::Any &); }; - -class OLongArray : public Tango::Command +class OLongArray: public Tango::Command { public: - OLongArray(const char *,Tango::CmdArgType, Tango::CmdArgType,const char *,const char *); - ~OLongArray() {}; + OLongArray(const char *, Tango::CmdArgType, Tango::CmdArgType, const char *, const char *); + ~OLongArray() + {}; - virtual bool is_allowed (Tango::DeviceImpl *, const CORBA::Any &); - virtual CORBA::Any *execute (Tango::DeviceImpl *, const CORBA::Any &); + virtual bool is_allowed(Tango::DeviceImpl *, const CORBA::Any &); + virtual CORBA::Any *execute(Tango::DeviceImpl *, const CORBA::Any &); }; - -class OULongArray : public Tango::Command +class OULongArray: public Tango::Command { public: - OULongArray(const char *,Tango::CmdArgType, Tango::CmdArgType,const char *,const char *); - ~OULongArray() {}; + OULongArray(const char *, Tango::CmdArgType, Tango::CmdArgType, const char *, const char *); + ~OULongArray() + {}; - virtual bool is_allowed (Tango::DeviceImpl *, const CORBA::Any &); - virtual CORBA::Any *execute (Tango::DeviceImpl *, const CORBA::Any &); + virtual bool is_allowed(Tango::DeviceImpl *, const CORBA::Any &); + virtual CORBA::Any *execute(Tango::DeviceImpl *, const CORBA::Any &); }; -class OLongString : public Tango::Command +class OLongString: public Tango::Command { public: - OLongString(const char *,Tango::CmdArgType, Tango::CmdArgType,const char *,const char *); - ~OLongString() {}; + OLongString(const char *, Tango::CmdArgType, Tango::CmdArgType, const char *, const char *); + ~OLongString() + {}; - virtual bool is_allowed (Tango::DeviceImpl *, const CORBA::Any &); - virtual CORBA::Any *execute (Tango::DeviceImpl *, const CORBA::Any &); + virtual bool is_allowed(Tango::DeviceImpl *, const CORBA::Any &); + virtual CORBA::Any *execute(Tango::DeviceImpl *, const CORBA::Any &); }; -class IOEncoded : public Tango::Command +class IOEncoded: public Tango::Command { public: - IOEncoded(const char *,Tango::CmdArgType, Tango::CmdArgType,const char *,const char *); - ~IOEncoded() {}; + IOEncoded(const char *, Tango::CmdArgType, Tango::CmdArgType, const char *, const char *); + ~IOEncoded() + {}; - virtual bool is_allowed (Tango::DeviceImpl *, const CORBA::Any &); - virtual CORBA::Any *execute (Tango::DeviceImpl *, const CORBA::Any &); + virtual bool is_allowed(Tango::DeviceImpl *, const CORBA::Any &); + virtual CORBA::Any *execute(Tango::DeviceImpl *, const CORBA::Any &); }; -class OEncoded : public Tango::Command +class OEncoded: public Tango::Command { public: - OEncoded(const char *,Tango::CmdArgType, Tango::CmdArgType,const char *,const char *); - ~OEncoded() {}; + OEncoded(const char *, Tango::CmdArgType, Tango::CmdArgType, const char *, const char *); + ~OEncoded() + {}; - virtual bool is_allowed (Tango::DeviceImpl *, const CORBA::Any &); - virtual CORBA::Any *execute (Tango::DeviceImpl *, const CORBA::Any &); + virtual bool is_allowed(Tango::DeviceImpl *, const CORBA::Any &); + virtual CORBA::Any *execute(Tango::DeviceImpl *, const CORBA::Any &); - Tango::DevLong encoded_cmd_ctr; + Tango::DevLong encoded_cmd_ctr; }; -struct IODevEnum : public Tango::Command { - IODevEnum(); - ~IODevEnum() {}; +struct IODevEnum: public Tango::Command +{ + IODevEnum(); + ~IODevEnum() + {}; - virtual bool is_allowed (Tango::DeviceImpl *, const CORBA::Any &); - virtual CORBA::Any *execute (Tango::DeviceImpl *, const CORBA::Any &); + virtual bool is_allowed(Tango::DeviceImpl *, const CORBA::Any &); + virtual CORBA::Any *execute(Tango::DeviceImpl *, const CORBA::Any &); +}; + +struct IOPipeBlob: public Tango::Command +{ + IOPipeBlob(); + virtual ~IOPipeBlob() + {} + bool is_allowed(Tango::DeviceImpl *dev, const CORBA::Any &in_any) override; + CORBA::Any *execute(Tango::DeviceImpl *dev, const CORBA::Any &in_any) override; }; diff --git a/test/cpp_test_suite/new_tests/cxx_cmd_types.cpp b/test/cpp_test_suite/new_tests/cxx_cmd_types.cpp index 08ec6ffdf..ed9500410 100644 --- a/test/cpp_test_suite/new_tests/cxx_cmd_types.cpp +++ b/test/cpp_test_suite/new_tests/cxx_cmd_types.cpp @@ -882,16 +882,21 @@ class CmdTypesTestSuite: public CxxTest::TestSuite { DeviceData din, dout; DevicePipeBlob in{"TestPipeCmd"}; - in.set_current_delt_name("level 0"); + vector names{"level0"}; + in.set_data_elt_names(names); DevLong data = 123; in << data; din.insert(in); TS_ASSERT_THROWS_NOTHING(dout = device->command_inout("IOPipeBlob", din)); - DevicePipeBlob *received; - dout.extract(received); + DevicePipeBlob received{}; + dout.extract(&received); + + TS_ASSERT_EQUALS(received.get_data_elt_nb(), 1); + TS_ASSERT_EQUALS(received.get_data_elt_name(0), "level0"); + int received_data; + received >> received_data; + TS_ASSERT_EQUALS(received_data, 123); int data_type = dout.get_type(); - - //TODO TS_ASSERT_EQUALS(data_type, Tango::DEV_PIPE_BLOB); } } From 0f63344ca66e8010424cf9ff5a31358d24332508 Mon Sep 17 00:00:00 2001 From: ingvord Date: Thu, 20 Jul 2017 16:54:07 +0300 Subject: [PATCH 06/21] progress #378: fix segmentation fault --- test/cpp_test_suite/cpp_test_ds/TypeCmds.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/test/cpp_test_suite/cpp_test_ds/TypeCmds.cpp b/test/cpp_test_suite/cpp_test_ds/TypeCmds.cpp index 23a3b128e..8dd7bfde6 100644 --- a/test/cpp_test_suite/cpp_test_ds/TypeCmds.cpp +++ b/test/cpp_test_suite/cpp_test_ds/TypeCmds.cpp @@ -1663,7 +1663,7 @@ bool IOPipeBlob::is_allowed(Tango::DeviceImpl *dev, const CORBA::Any &in_any) } CORBA::Any *IOPipeBlob::execute(Tango::DeviceImpl *dev, const CORBA::Any &in_any) { - Tango::DevPipeBlob *blob = nullptr; + Tango::DevPipeBlob *blob; //TODO extract bool extracted = in_any >>= blob; if (not(extracted)) throw logic_error{"DevPipeBlob has not been extracted!"}; @@ -1671,7 +1671,8 @@ CORBA::Any *IOPipeBlob::execute(Tango::DeviceImpl *dev, const CORBA::Any &in_any //TODO insert CORBA::Any *out_any = new CORBA::Any(); - (*out_any) <<= blob; + + (*out_any) <<= *blob; return out_any; } From 885c8de22c769cae640c7c0fff043cddeb33f8df Mon Sep 17 00:00:00 2001 From: ingvord Date: Thu, 20 Jul 2017 17:50:05 +0300 Subject: [PATCH 07/21] progress #378: fix misc_devproxy --- test/cpp_test_suite/new_tests/cxx_misc_devproxy.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/cpp_test_suite/new_tests/cxx_misc_devproxy.cpp b/test/cpp_test_suite/new_tests/cxx_misc_devproxy.cpp index 57aa99c5c..d90212c8a 100644 --- a/test/cpp_test_suite/new_tests/cxx_misc_devproxy.cpp +++ b/test/cpp_test_suite/new_tests/cxx_misc_devproxy.cpp @@ -250,7 +250,7 @@ class MiscDevProxyTestSuite : public CxxTest::TestSuite { TS_ASSERT_THROWS_NOTHING(cmd_name_list = device->get_command_list()); cout << "cmd_name_list size = " << cmd_name_list->size() << endl; - TS_ASSERT_EQUALS (118, cmd_name_list->size()); + TS_ASSERT_EQUALS (119, cmd_name_list->size()); // TS_ASSERT_EQUALS ("FileDb" , (*cmd_list)[0].cmd_name); // TS_ASSERT_EQUALS ("Status", (*cmd_list)[87].cmd_name); From 2248f725b46f60c3fff2fd334a18b44166730429 Mon Sep 17 00:00:00 2001 From: Reynald Bourtembourg Date: Thu, 20 Jul 2017 17:19:33 +0200 Subject: [PATCH 08/21] Added DevPipeBlob support in DeviceData::get_type() --- src/client/devapi_data.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/client/devapi_data.cpp b/src/client/devapi_data.cpp index 6d61ef21b..b748af152 100644 --- a/src/client/devapi_data.cpp +++ b/src/client/devapi_data.cpp @@ -341,6 +341,12 @@ int DeviceData::get_type() case CORBA::tk_struct: tc_field = tc->member_type(0); + if(tc_field->kind() == tk_string) + { + // The first field in a DevPipeBlob structure is a string (name field) + data_type = Tango::DEV_PIPE_BLOB; + break; + } tc_al = tc_field->content_type(); switch (tc_al->kind()) { From 5c55b0fc6d62e69b44a25b9e69212f5799587b2a Mon Sep 17 00:00:00 2001 From: ingvord Date: Tue, 18 Jul 2017 16:59:49 +0300 Subject: [PATCH 09/21] progress #378: rename falsely named test --- .../new_tests/cxx_cmd_types.cpp | 907 ------------------ 1 file changed, 907 deletions(-) delete mode 100644 test/cpp_test_suite/new_tests/cxx_cmd_types.cpp diff --git a/test/cpp_test_suite/new_tests/cxx_cmd_types.cpp b/test/cpp_test_suite/new_tests/cxx_cmd_types.cpp deleted file mode 100644 index ed9500410..000000000 --- a/test/cpp_test_suite/new_tests/cxx_cmd_types.cpp +++ /dev/null @@ -1,907 +0,0 @@ -//=================================================================================================================== -// -// file : cxx_cmd_types.cpp -// -// project : tango -// -// author(s) : ingvord -// -// Copyright (C) : 2004-2017 -// European Synchrotron Radiation Facility -// BP 220, Grenoble 38043 -// FRANCE -// -// This file is part of Tango. -// -// Tango is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// Tango is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty -// of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License along with Tango. -// If not, see . -//=================================================================================================================== -// -// Created by ingvord on 3/13/17. -// -#ifndef CmdTypesTestSuite_h -#define CmdTypesTestSuite_h - -#include -#include -#include -#include -#include - -using namespace Tango; -using namespace std; - -#define cout cout << "\t" - -#undef SUITE_NAME -#define SUITE_NAME CmdTypesTestSuite - -class CmdTypesTestSuite: public CxxTest::TestSuite -{ -protected: - DeviceProxy *device; - size_t loop = 10; - -public: - SUITE_NAME() - { - -// -// Arguments check ------------------------------------------------- -// - - string device_name; - - device_name = CxxTest::TangoPrinter::get_param("device1"); - - CxxTest::TangoPrinter::validate_args(); - - -// -// Initialization -------------------------------------------------- -// - - try - { - device = new DeviceProxy(device_name); - device->ping(); - } - catch (CORBA::Exception &e) - { - Except::print_exception(e); - exit(-1); - } - - } - - virtual ~SUITE_NAME() - { - delete device; - } - - static SUITE_NAME *createSuite() - { - return new SUITE_NAME(); - } - - static void destroySuite(SUITE_NAME *suite) - { - delete suite; - } - -// -// Tests ------------------------------------------------------- -// - - void test_void(void) - { - for (size_t i = 0; i < loop; i++) - { - TS_ASSERT_THROWS_NOTHING(device->command_inout("IOVoid")); - } - } - - void test_boolean(void) - { - - for (size_t i = 0; i < loop; i++) - { - DeviceData din, dout; - bool in = true; - din << in; - TS_ASSERT_THROWS_NOTHING(dout = device->command_inout("IOBool", din)); - bool received; - int data_type = dout.get_type(); - dout >> received; - TS_ASSERT_DIFFERS(in, received); - TS_ASSERT_EQUALS(data_type, Tango::DEV_BOOLEAN); - } - } - - void test_short(void) - { - - for (size_t i = 0; i < loop; i++) - { - DeviceData din, dout; - short in = 2; - din << in; - TS_ASSERT_THROWS_NOTHING(dout = device->command_inout("IOShort", din)); - short received; - dout >> received; - int data_type = dout.get_type(); - TS_ASSERT_EQUALS(received, (in * 2)); - TS_ASSERT_EQUALS(data_type, Tango::DEV_SHORT); - } - } - - void test_long(void) - { - for (size_t i = 0; i < loop; i++) - { - DeviceData din, dout; - DevLong in = 3; - din << in; - TS_ASSERT_THROWS_NOTHING(dout = device->command_inout("IOLong", din)); - DevLong received; - dout >> received; - TS_ASSERT_EQUALS(received, (in * 2)); - } - } - - void test_float() - { - - for (size_t i = 0; i < loop; i++) - { - DeviceData din, dout; - float in = (float) 3.1; - din << in; - TS_ASSERT_THROWS_NOTHING(dout = device->command_inout("IOFloat", din)); - float received; - dout >> received; - TS_ASSERT_EQUALS(received, (in * 2)); - } - } - - void test_double(void) - { - - for (size_t i = 0; i < loop; i++) - { - DeviceData din, dout; - double in = 3.1; - din << in; - TS_ASSERT_THROWS_NOTHING(dout = device->command_inout("IODouble", din)); - double received; - dout >> received; - TS_ASSERT_EQUALS(received, (in * 2)); - } - } - - void test_unsigned_short(void) - { - - for (size_t i = 0; i < loop; i++) - { - DeviceData din, dout; - unsigned short in = 100; - din << in; - TS_ASSERT_THROWS_NOTHING(dout = device->command_inout("IOUShort", din)); - unsigned short received; - dout >> received; - TS_ASSERT_EQUALS(received, (in * 2)); - } - } - - void test_unsigned_long(void) - { - - for (size_t i = 0; i < loop; i++) - { - DeviceData din, dout; - DevULong in = 1000; - din << in; - TS_ASSERT_THROWS_NOTHING(dout = device->command_inout("IOULong", din)); - DevULong received; - dout >> received; - TS_ASSERT_EQUALS(received, (in * 2)); - } - } - - void test_CPP_string(void) - { - - for (size_t i = 0; i < loop; i++) - { - DeviceData din, dout; - string str("abc"); - din << str; - TS_ASSERT_THROWS_NOTHING(dout = device->command_inout("IOString", din)); - string received; - dout >> received; - TS_ASSERT_EQUALS(received, "cba"); - } - } - - void test_classical_C_string(void) - { - for (size_t i = 0; i < loop; i++) - { - DeviceData din, dout; - const char *str = "abcd"; - din << str; - TS_ASSERT_THROWS_NOTHING(dout = device->command_inout("IOString", din)); - const char *received; - dout >> received; - TS_ASSERT(strcmp(str, "dcba")); - } - } - - void test_char_array(void) - { - for (size_t i = 0; i < loop; i++) - { - DeviceData din, dout; - vector in; - in.push_back(1); - in.push_back(2); - din << in; - TS_ASSERT_THROWS_NOTHING(dout = device->command_inout("IOCharArray", din)); - vector received; - dout >> received; - int data_type = dout.get_type(); - TS_ASSERT_EQUALS(in[0], received[1]); - TS_ASSERT_EQUALS(in[1], received[0]); - TS_ASSERT_EQUALS(data_type, Tango::DEVVAR_CHARARRAY); - } - } - - void test_DevVarCharArray(void) - { - for (size_t i = 0; i < loop; i++) - { - const DevVarCharArray *received; - DeviceData din, dout; - - DevVarCharArray *in = new DevVarCharArray(2); - in->length(2); - (*in)[0] = 10; - (*in)[1] = 20; - din << in; - - TS_ASSERT_THROWS_NOTHING(dout = device->command_inout("IOCharArray", din)); - dout >> received; - - TS_ASSERT_EQUALS(10, (*received)[1]); - TS_ASSERT_EQUALS(20, (*received)[0]); - } - - for (size_t i = 0; i < loop; i++) - { - const DevVarCharArray *received; - DeviceData din, dout; - - DevVarCharArray in(2); - in.length(2); - in[0] = 10; - in[1] = 20; - din << in; - - TS_ASSERT_THROWS_NOTHING(dout = device->command_inout("IOCharArray", din)); - dout >> received; - - TS_ASSERT_EQUALS(in[0], (*received)[1]); - TS_ASSERT_EQUALS(in[1], (*received)[0]); - } - } - - void test_short_array(void) - { - for (size_t i = 0; i < loop; i++) - { - DeviceData din, dout; - vector in; - in.push_back(10); - in.push_back(20); - din << in; - TS_ASSERT_THROWS_NOTHING(dout = device->command_inout("IOShortArray", din)); - vector received; - dout >> received; - TS_ASSERT_EQUALS(received[0], (in[0] * 2)); - TS_ASSERT_EQUALS(received[1], (in[1] * 2)); - } - } - - void test_DevVarShortArray(void) - { - for (size_t i = 0; i < loop; i++) - { - DeviceData din, dout; - DevVarShortArray *in = new DevVarShortArray(2); - in->length(2); - (*in)[0] = 1; - (*in)[1] = 2; - - din << in; - TS_ASSERT_THROWS_NOTHING(dout = device->command_inout("IOShortArray", din)); - const DevVarShortArray *received; - dout >> received; - TS_ASSERT_EQUALS((*received)[0], (1 * 2)); - TS_ASSERT_EQUALS((*received)[1], (2 * 2)); - } - - for (size_t i = 0; i < loop; i++) - { - DeviceData din, dout; - DevVarShortArray in(2); - in.length(2); - in[0] = 1; - in[1] = 2; - - din << in; - TS_ASSERT_THROWS_NOTHING(dout = device->command_inout("IOShortArray", din)); - const DevVarShortArray *received; - dout >> received; - TS_ASSERT_EQUALS((*received)[0], (in[0] * 2)); - TS_ASSERT_EQUALS((*received)[1], (in[1] * 2)); - } - } - - void test_long_array(void) - { - for (size_t i = 0; i < loop; i++) - { - DeviceData din, dout; - vector in; - in.push_back(100); - in.push_back(200); - din << in; - TS_ASSERT_THROWS_NOTHING(dout = device->command_inout("IOLongArray", din)); - vector received; - dout >> received; - TS_ASSERT_EQUALS(received[0], (in[0] * 2)); - TS_ASSERT_EQUALS(received[1], (in[1] * 2)); - } - } - - void test_DevVarLongArray(void) - { - for (size_t i = 0; i < loop; i++) - { - DeviceData din, dout; - DevVarLongArray *in = new DevVarLongArray(2); - in->length(2); - (*in)[0] = 11; - (*in)[1] = 22; - din << in; - TS_ASSERT_THROWS_NOTHING(dout = device->command_inout("IOLongArray", din)); - const DevVarLongArray *received; - dout >> received; - TS_ASSERT_EQUALS((*received)[0], (11 * 2)); - TS_ASSERT_EQUALS((*received)[1], (22 * 2)); - } - - for (size_t i = 0; i < loop; i++) - { - DeviceData din, dout; - DevVarLongArray in(2); - in.length(2); - in[0] = 11; - in[1] = 22; - din << in; - TS_ASSERT_THROWS_NOTHING(dout = device->command_inout("IOLongArray", din)); - const DevVarLongArray *received; - dout >> received; - TS_ASSERT_EQUALS((*received)[0], (in[0] * 2)); - TS_ASSERT_EQUALS((*received)[1], (in[1] * 2)); - } - } - - void test_float_array(void) - { - for (size_t i = 0; i < loop; i++) - { - DeviceData din, dout; - vector in; - in.push_back((float) 100.1); - in.push_back((float) 200.2); - din << in; - TS_ASSERT_THROWS_NOTHING(dout = device->command_inout("IOFloatArray", din)); - vector received; - dout >> received; - TS_ASSERT_EQUALS(received[0], (in[0] * 2)); - TS_ASSERT_EQUALS(received[1], (in[1] * 2)); - } - } - - void test_DevVarFloatArray(void) - { - for (size_t i = 0; i < loop; i++) - { - DeviceData din, dout; - DevVarFloatArray *in = new DevVarFloatArray(2); - in->length(2); - (*in)[0] = (float) 1.11; - (*in)[1] = (float) 2.22; - din << in; - TS_ASSERT_THROWS_NOTHING(dout = device->command_inout("IOFloatArray", din)); - const DevVarFloatArray *received; - dout >> received; - TS_ASSERT_EQUALS((*received)[0], ((float) 1.11 * 2)); - TS_ASSERT_EQUALS((*received)[1], ((float) 2.22 * 2)); - } - - for (size_t i = 0; i < loop; i++) - { - DeviceData din, dout; - DevVarFloatArray in(2); - in.length(2); - in[0] = (float) 1.11; - in[1] = (float) 2.22; - din << in; - TS_ASSERT_THROWS_NOTHING(dout = device->command_inout("IOFloatArray", din)); - const DevVarFloatArray *received; - dout >> received; - TS_ASSERT_EQUALS((*received)[0], (in[0] * 2)); - TS_ASSERT_EQUALS((*received)[1], (in[1] * 2)); - } - } - - void test_double_array(void) - { - - for (size_t i = 0; i < loop; i++) - { - DeviceData din, dout; - vector in; - in.push_back(1.234); - in.push_back(2.111); - din << in; - TS_ASSERT_THROWS_NOTHING(dout = device->command_inout("IODoubleArray", din)); - vector received; - dout >> received; - TS_ASSERT_EQUALS(received[0], (in[0] * 2)); - TS_ASSERT_EQUALS(received[1], (in[1] * 2)); - } - } - - void test_DevVarDoubleArray(void) - { - - for (size_t i = 0; i < loop; i++) - { - DeviceData din, dout; - DevVarDoubleArray *in = new DevVarDoubleArray(2); - in->length(2); - (*in)[0] = 1.12; - (*in)[1] = 3.45; - din << in; - TS_ASSERT_THROWS_NOTHING(dout = device->command_inout("IODoubleArray", din)); - const DevVarDoubleArray *received; - dout >> received; - TS_ASSERT_EQUALS((*received)[0], (1.12 * 2)); - TS_ASSERT_EQUALS((*received)[1], (3.45 * 2)); - } - - for (size_t i = 0; i < loop; i++) - { - DeviceData din, dout; - DevVarDoubleArray in(2); - in.length(2); - in[0] = 1.12; - in[1] = 3.45; - din << in; - TS_ASSERT_THROWS_NOTHING(dout = device->command_inout("IODoubleArray", din)); - const DevVarDoubleArray *received; - dout >> received; - TS_ASSERT_EQUALS((*received)[0], (in[0] * 2)); - TS_ASSERT_EQUALS((*received)[1], (in[1] * 2)); - } - } - - void test_unsigned_short_array(void) - { - for (size_t i = 0; i < loop; i++) - { - DeviceData din, dout; - vector in; - in.push_back(100); - in.push_back(200); - din << in; - TS_ASSERT_THROWS_NOTHING(dout = device->command_inout("IOUShortArray", din)); - vector received; - dout >> received; - TS_ASSERT_EQUALS(received[0], (in[0] * 2)); - TS_ASSERT_EQUALS(received[1], (in[1] * 2)); - } - } - - void test_DevVarUShortArray(void) - { - - for (size_t i = 0; i < loop; i++) - { - DeviceData din, dout; - DevVarUShortArray *in = new DevVarUShortArray(2); - in->length(2); - (*in)[0] = 11; - (*in)[1] = 22; - din << in; - TS_ASSERT_THROWS_NOTHING(dout = device->command_inout("IOUShortArray", din)); - const DevVarUShortArray *received; - dout >> received; - TS_ASSERT_EQUALS((*received)[0], (11 * 2)); - TS_ASSERT_EQUALS((*received)[1], (22 * 2)); - } - - for (size_t i = 0; i < loop; i++) - { - DeviceData din, dout; - DevVarUShortArray in(2); - in.length(2); - in[0] = 11; - in[1] = 22; - din << in; - TS_ASSERT_THROWS_NOTHING(dout = device->command_inout("IOUShortArray", din)); - const DevVarUShortArray *received; - dout >> received; - TS_ASSERT_EQUALS((*received)[0], (in[0] * 2)); - TS_ASSERT_EQUALS((*received)[1], (in[1] * 2)); - } - } - - void test_unsigned_long_array(void) - { - for (size_t i = 0; i < loop; i++) - { - DeviceData din, dout; - vector in; - in.push_back(1000); - in.push_back(2001); - din << in; - TS_ASSERT_THROWS_NOTHING(dout = device->command_inout("IOULongArray", din)); - vector received; - dout >> received; - TS_ASSERT_EQUALS(received[0], (in[0] * 2)); - TS_ASSERT_EQUALS(received[1], (in[1] * 2)); - } - } - - void test_DevVarULongArray(void) - { - for (size_t i = 0; i < loop; i++) - { - DeviceData din, dout; - DevVarULongArray *in = new DevVarULongArray(2); - in->length(2); - (*in)[0] = 111; - (*in)[1] = 222; - din << in; - TS_ASSERT_THROWS_NOTHING(dout = device->command_inout("IOULongArray", din)); - const DevVarULongArray *received; - dout >> received; - TS_ASSERT_EQUALS((*received)[0], (111 * 2)); - TS_ASSERT_EQUALS((*received)[1], (222 * 2)); - } - - for (size_t i = 0; i < loop; i++) - { - DeviceData din, dout; - DevVarULongArray in(2); - in.length(2); - in[0] = 111; - in[1] = 222; - din << in; - TS_ASSERT_THROWS_NOTHING(dout = device->command_inout("IOULongArray", din)); - const DevVarULongArray *received; - dout >> received; - TS_ASSERT_EQUALS((*received)[0], (in[0] * 2)); - TS_ASSERT_EQUALS((*received)[1], (in[1] * 2)); - } - } - - void test_string_array(void) - { - for (size_t i = 0; i < loop; i++) - { - DeviceData din, dout; - vector in; - in.push_back("abc"); - in.push_back("wxyz"); - din << in; - TS_ASSERT_THROWS_NOTHING(dout = device->command_inout("IOStringArray", din)); - vector received; - int data_type = dout.get_type(); - dout >> received; - - TS_ASSERT_EQUALS(received[0], in[1]); - TS_ASSERT_EQUALS(received[1], in[0]); - TS_ASSERT_EQUALS(data_type, Tango::DEVVAR_STRINGARRAY); - } - } - - void test_DevVarStringArray(void) - { - for (size_t i = 0; i < loop; i++) - { - DeviceData din, dout; - DevVarStringArray *in = new DevVarStringArray(2); - in->length(2); - (*in)[0] = Tango::string_dup("abc"); - (*in)[1] = Tango::string_dup("def"); - din << in; - TS_ASSERT_THROWS_NOTHING(dout = device->command_inout("IOStringArray", din)); - const DevVarStringArray *received; - dout >> received; - TS_ASSERT(!strcmp((*received)[0], "def")); - TS_ASSERT(!strcmp((*received)[1], "abc")); - } - } - - void test_vector_of_long_and_vector_of_string(void) - { - - for (size_t i = 0; i < loop; i++) - { - DeviceData din, dout; - vector in1; - in1.push_back(1000); - in1.push_back(2001); - in1.push_back(2002); - vector in2; - in2.push_back("abc"); - in2.push_back("def"); - din.insert(in1, in2); - TS_ASSERT_THROWS_NOTHING(dout = device->command_inout("IOLongString", din)); - vector received1; - vector received2; - dout.extract(received1, received2); - - TS_ASSERT_EQUALS(received2[0], in2[0]); - TS_ASSERT_EQUALS(received2[1], in2[1]); - TS_ASSERT_EQUALS(received1[0], (in1[0] * 2)); - TS_ASSERT_EQUALS(received1[1], (in1[1] * 2)); - TS_ASSERT_EQUALS(received1[2], (in1[2] * 2)); - } - } - - void test_DevVarLongStringArray(void) - { - - for (size_t i = 0; i < loop; i++) - { - DeviceData din, dout; - DevVarLongStringArray *in = new DevVarLongStringArray(); - in->lvalue.length(2); - in->lvalue[0] = 111; - in->lvalue[1] = 222; - in->svalue.length(2); - in->svalue[0] = Tango::string_dup("zxc"); - in->svalue[1] = Tango::string_dup("qwe"); - din << in; - TS_ASSERT_THROWS_NOTHING(dout = device->command_inout("IOLongString", din)); - const DevVarLongStringArray *received; - dout >> received; - - TS_ASSERT_EQUALS(received->lvalue[0], (111 * 2)); - TS_ASSERT_EQUALS(received->lvalue[1], (222 * 2)); - TS_ASSERT(!strcmp(received->svalue[0], "zxc")); - TS_ASSERT(!strcmp(received->svalue[1], "qwe")); - } - - for (size_t i = 0; i < loop; i++) - { - DeviceData din, dout; - DevVarLongStringArray in; - in.lvalue.length(2); - in.lvalue[0] = 111; - in.lvalue[1] = 222; - in.svalue.length(2); - in.svalue[0] = Tango::string_dup("zxc"); - in.svalue[1] = Tango::string_dup("qwe"); - din << in; - TS_ASSERT_THROWS_NOTHING(dout = device->command_inout("IOLongString", din)); - const DevVarLongStringArray *received; - dout >> received; - int data_type = dout.get_type(); - - TS_ASSERT_EQUALS(received->lvalue[0], (in.lvalue[0] * 2)); - TS_ASSERT_EQUALS(received->lvalue[1], (in.lvalue[1] * 2)); - TS_ASSERT(!strcmp(received->svalue[0], in.svalue[0])); - TS_ASSERT(!strcmp(received->svalue[1], in.svalue[1])); - TS_ASSERT_EQUALS(data_type, Tango::DEVVAR_LONGSTRINGARRAY); - } - } - - void test_vector_of_double_and_vector_of_string(void) - { - - for (size_t i = 0; i < loop; i++) - { - DeviceData din, dout; - vector in1; - in1.push_back(10.0); - in1.push_back(20.1); - in1.push_back(20.2); - vector in2; - in2.push_back("abc"); - in2.push_back("def"); - din.insert(in1, in2); - TS_ASSERT_THROWS_NOTHING(dout = device->command_inout("IODoubleString", din)); - vector received1; - vector received2; - dout.extract(received1, received2); - int data_type = dout.get_type(); - - TS_ASSERT_EQUALS(received2[0], in2[0]); - TS_ASSERT_EQUALS(received2[1], in2[1]); - TS_ASSERT_EQUALS(received1[0], (in1[0] * 2)); - TS_ASSERT_EQUALS(received1[1], (in1[1] * 2)); - TS_ASSERT_EQUALS(received1[2], (in1[2] * 2)); - TS_ASSERT_EQUALS(data_type, Tango::DEVVAR_DOUBLESTRINGARRAY); - } - } - - void test_DevVarDoubleStringArray(void) - { - - for (size_t i = 0; i < loop; i++) - { - DeviceData din, dout; - DevVarDoubleStringArray *in = new DevVarDoubleStringArray(); - in->dvalue.length(2); - in->dvalue[0] = 1.11; - in->dvalue[1] = 22.2; - in->svalue.length(3); - in->svalue[0] = Tango::string_dup("iop"); - in->svalue[1] = Tango::string_dup("jkl"); - in->svalue[2] = Tango::string_dup("bnm"); - din << in; - TS_ASSERT_THROWS_NOTHING(dout = device->command_inout("IODoubleString", din)); - const DevVarDoubleStringArray *received; - dout >> received; - - TS_ASSERT_EQUALS(received->dvalue[0], (1.11 * 2)); - TS_ASSERT_EQUALS(received->dvalue[1], (22.2 * 2)); - TS_ASSERT(!strcmp(received->svalue[0], "iop")); - TS_ASSERT(!strcmp(received->svalue[1], "jkl")); - TS_ASSERT(!strcmp(received->svalue[2], "bnm")); - } - - - for (size_t i = 0; i < loop; i++) - { - DeviceData din, dout; - DevVarDoubleStringArray in; - in.dvalue.length(2); - in.dvalue[0] = 1.11; - in.dvalue[1] = 22.2; - in.svalue.length(3); - in.svalue[0] = Tango::string_dup("iop"); - in.svalue[1] = Tango::string_dup("jkl"); - in.svalue[2] = Tango::string_dup("bnm"); - din << in; - TS_ASSERT_THROWS_NOTHING(dout = device->command_inout("IODoubleString", din)); - const DevVarDoubleStringArray *received; - dout >> received; - - TS_ASSERT_EQUALS(received->dvalue[0], (in.dvalue[0] * 2)); - TS_ASSERT_EQUALS(received->dvalue[1], (in.dvalue[1] * 2)); - TS_ASSERT(!strcmp(received->svalue[0], in.svalue[0])); - TS_ASSERT(!strcmp(received->svalue[1], in.svalue[1])); - TS_ASSERT(!strcmp(received->svalue[2], in.svalue[2])); - } - } - - void test_DevEncoded(void) - { - - for (size_t i = 0; i < loop; i++) - { - DeviceData din, dout; - DevEncoded in; - in.encoded_data.length(2); - in.encoded_data[0] = 11; - in.encoded_data[1] = 22; - in.encoded_format = Tango::string_dup("Sent"); - din << in; - TS_ASSERT_THROWS_NOTHING(dout = device->command_inout("IOEncoded", din)); - const DevEncoded *received; - dout >> received; - int data_type = dout.get_type(); - - TS_ASSERT_EQUALS(received->encoded_data.length(), 2); - TS_ASSERT_EQUALS(received->encoded_data[0], (11 * 2)); - TS_ASSERT_EQUALS(received->encoded_data[1], (22 * 2)); - TS_ASSERT(!strcmp(received->encoded_format, "Returned string")); - TS_ASSERT_EQUALS(data_type, Tango::DEV_ENCODED); - } - - for (size_t i = 0; i < loop; i++) - { - DeviceData din, dout; - string in_str("Sent"); - vector in_data; - - in_data.push_back((unsigned char) 15); - in_data.push_back((unsigned char) 25); - - din.insert(in_str, in_data); - TS_ASSERT_THROWS_NOTHING(dout = device->command_inout("IOEncoded", din)); - DevEncoded received; - dout >> received; - int data_type = dout.get_type(); - - TS_ASSERT_EQUALS(received.encoded_data.length(), 2); - TS_ASSERT_EQUALS(received.encoded_data[0], (15 * 2)); - TS_ASSERT_EQUALS(received.encoded_data[1], (25 * 2)); - TS_ASSERT(!strcmp(received.encoded_format, "Returned string")); - TS_ASSERT_EQUALS(data_type, Tango::DEV_ENCODED); - } - - for (size_t i = 0; i < loop; i++) - { - DeviceData din, dout; - string in_str("Sent"); - DevVarCharArray in_data; - - in_data.length(4); - in_data[0] = ((unsigned char) 15); - in_data[1] = ((unsigned char) 25); - in_data[2] = ((unsigned char) 35); - in_data[3] = ((unsigned char) 45); - - din.insert("Sent", &in_data); - TS_ASSERT_THROWS_NOTHING(dout = device->command_inout("IOEncoded", din)); - DevEncoded received; - dout >> received; - int data_type = dout.get_type(); - - TS_ASSERT_EQUALS(received.encoded_data.length(), 4); - TS_ASSERT_EQUALS(received.encoded_data[0], (15 * 2)); - TS_ASSERT_EQUALS(received.encoded_data[1], (25 * 2)); - TS_ASSERT_EQUALS(received.encoded_data[2], (35 * 2)); - TS_ASSERT_EQUALS(received.encoded_data[3], (45 * 2)); - TS_ASSERT(!strcmp(received.encoded_format, "Returned string")); - TS_ASSERT_EQUALS(data_type, Tango::DEV_ENCODED); - } - } - - void test_DevicePipeBlob(void) - { - for (size_t i = 0; i < loop; i++) - { - DeviceData din, dout; - DevicePipeBlob in{"TestPipeCmd"}; - vector names{"level0"}; - in.set_data_elt_names(names); - DevLong data = 123; - in << data; - din.insert(in); - TS_ASSERT_THROWS_NOTHING(dout = device->command_inout("IOPipeBlob", din)); - DevicePipeBlob received{}; - dout.extract(&received); - - TS_ASSERT_EQUALS(received.get_data_elt_nb(), 1); - TS_ASSERT_EQUALS(received.get_data_elt_name(0), "level0"); - int received_data; - received >> received_data; - TS_ASSERT_EQUALS(received_data, 123); - int data_type = dout.get_type(); - TS_ASSERT_EQUALS(data_type, Tango::DEV_PIPE_BLOB); - } - } -}; -#undef cout -#endif // CmdTypesTestSuite_h - - From 87b5bed7b890bc52d6b695bdec11811b657d82c4 Mon Sep 17 00:00:00 2001 From: ingvord Date: Tue, 18 Jul 2017 19:51:30 +0300 Subject: [PATCH 10/21] progress #378: progress --- src/client/devapi_base.cpp | 117 +-- src/client/devapi_data.cpp | 27 +- .../new_tests/cxx_cmd_types.cpp | 902 ++++++++++++++++++ 3 files changed, 968 insertions(+), 78 deletions(-) create mode 100644 test/cpp_test_suite/new_tests/cxx_cmd_types.cpp diff --git a/src/client/devapi_base.cpp b/src/client/devapi_base.cpp index 716d305d9..9502074d1 100644 --- a/src/client/devapi_base.cpp +++ b/src/client/devapi_base.cpp @@ -1283,9 +1283,10 @@ DeviceData Connection::command_inout(string &command, DeviceData &data_in) // Now, try to execute the command // - //TODO extract class hierarchyCORBA::Any *received; + //TODO extract class hierarchy + CORBA::Any *received; if (version >= 4) - { ClntIdent ci; + {ClntIdent ci; ApiUtil *au = ApiUtil::instance(); ci.cpp_clnt(au->get_client_pid()); @@ -5167,11 +5168,9 @@ void DeviceProxy::write_pipe(DevicePipe &dev_pipe) - while (ctr < 2) - { - try - { - check_and_reconnect(); + while (ctr < 2) + { try { + check_and_reconnect(); ClntIdent ci; ApiUtil *au = ApiUtil::instance(); @@ -5180,68 +5179,56 @@ void DeviceProxy::write_pipe(DevicePipe &dev_pipe) dev->write_pipe_5(pipe_value_5, ci); ctr = 2; - } - catch (Tango::ConnectionFailed &e) - { - dev_pipe.get_root_blob().reset_insert_ctr(); - - - stringstream desc; - desc << "Failed to write_pipe on device " << device_name << ", pipe " << dev_pipe.get_name(); - ApiConnExcept::re_throw_exception(e, API_PipeFailed, desc.str(), "DeviceProxy::write_pipe()"); - } - catch (Tango::DevFailed &e) - { - dev_pipe.get_root_blob().reset_insert_ctr(); + } + catch (Tango::ConnectionFailed &e) + { dev_pipe.get_root_blob().reset_insert_ctr(); - stringstream desc; - desc << "Failed to write_pipe on device " << device_name << ", pipe " << dev_pipe.get_name(); - Except::re_throw_exception(e, API_PipeFailed, desc.str(), "DeviceProxy::write_pipe()"); - } - catch (CORBA::TRANSIENT &trans) - { - TRANSIENT_NOT_EXIST_EXCEPT(trans, "DeviceProxy", "write_pipe", this); - } - catch (CORBA::OBJECT_NOT_EXIST &one) - { - if (one.minor() == omni::OBJECT_NOT_EXIST_NoMatch || one.minor() == 0) - { - TRANSIENT_NOT_EXIST_EXCEPT(one, "DeviceProxy", "write_pipe", this); + stringstream desc; + desc << "Failed to write_pipe on device " << device_name << ", pipe " << dev_pipe.get_name(); + ApiConnExcept::re_throw_exception(e, API_PipeFailed, desc.str(), "DeviceProxy::write_pipe()"); } - else - { - dev_pipe.get_root_blob().reset_insert_ctr(); + catch (Tango::DevFailed &e) + { dev_pipe.get_root_blob().reset_insert_ctr(); - set_connection_state(CONNECTION_NOTOK); stringstream desc; - desc << "Failed to write_pipe on device " << device_name; - ApiCommExcept::re_throw_exception(one, "API_CommunicationFailed", desc.str(), - "DeviceProxy::write_pipe()"); + desc << "Failed to write_pipe on device " << device_name << ", pipe " << dev_pipe.get_name(); + Except::re_throw_exception(e, API_PipeFailed, desc.str(), "DeviceProxy::write_pipe()"); } - } - catch (CORBA::COMM_FAILURE &comm) - { - if (comm.minor() == omni::COMM_FAILURE_WaitingForReply) - { - TRANSIENT_NOT_EXIST_EXCEPT(comm, "DeviceProxy", "write_pipe", this); + catch (CORBA::TRANSIENT &trans) + { TRANSIENT_NOT_EXIST_EXCEPT(trans, "DeviceProxy", "write_pipe", this); } - else - { - dev_pipe.get_root_blob().reset_insert_ctr(); + catch (CORBA::OBJECT_NOT_EXIST &one) + { if (one.minor() == omni::OBJECT_NOT_EXIST_NoMatch || one.minor() == 0) + { TRANSIENT_NOT_EXIST_EXCEPT(one, "DeviceProxy", "write_pipe", this); + } else + { dev_pipe.get_root_blob().reset_insert_ctr(); - set_connection_state(CONNECTION_NOTOK); - stringstream desc; - desc << "Failed to write_pipe on device " << device_name; - ApiCommExcept::re_throw_exception(comm, "API_CommunicationFailed", desc.str(), - "DeviceProxy::write_pipe()"); + set_connection_state(CONNECTION_NOTOK); + stringstream desc; + desc << "Failed to write_pipe on device " << device_name; + ApiCommExcept::re_throw_exception(one, "API_CommunicationFailed", desc.str(), + "DeviceProxy::write_pipe()"); + } } - } - catch (CORBA::SystemException &ce) - { - dev_pipe.get_root_blob().reset_insert_ctr(); + catch (CORBA::COMM_FAILURE &comm) + { if (comm.minor() == omni::COMM_FAILURE_WaitingForReply) + { TRANSIENT_NOT_EXIST_EXCEPT(comm, "DeviceProxy", "write_pipe", this); + } else + { dev_pipe.get_root_blob().reset_insert_ctr(); + + + set_connection_state(CONNECTION_NOTOK); + stringstream desc; + desc << "Failed to write_pipe on device " << device_name; + ApiCommExcept::re_throw_exception(comm, "API_CommunicationFailed", desc.str(), + "DeviceProxy::write_pipe()"); + } + } + catch (CORBA::SystemException &ce) + { dev_pipe.get_root_blob().reset_insert_ctr(); set_connection_state(CONNECTION_NOTOK); @@ -5253,6 +5240,7 @@ void DeviceProxy::write_pipe(DevicePipe &dev_pipe) } dev_pipe.get_root_blob().reset_insert_ctr(); + } DevPipeData @@ -5275,7 +5263,7 @@ DeviceProxy::createDevPipeData(DevicePipe &dev_pipe) const DevULong max, len; max = tmp_ptr->maximum(); len = tmp_ptr->length(); - result.data_blob.blob_data.replace(max, len, tmp_ptr->get_buffer((DevBoolean) true), true); delete tmp_ptr; + result.data_blob.blob_data.replace(max, len, tmp_ptr->get_buffer((DevBoolean) true), true); delete tmp_ptr; return result; } @@ -5309,11 +5297,10 @@ DevicePipe DeviceProxy::write_read_pipe(DevicePipe &pipe_data) // Prepare data sent to device // - //TODO replace with createDevPipeData - pipe_value_5.name = pipe_data.get_name().c_str(); - const string &bl_name = pipe_data.get_root_blob().get_name(); - if (bl_name.size() != 0) - pipe_value_5.data_blob.name = bl_name.c_str(); + //TODO replace with createDevPipeDatapipe_value_5.name = pipe_data.get_name().c_str(); + const string &bl_name = pipe_data.get_root_blob().get_name(); + if (bl_name.size() != 0) + pipe_value_5.data_blob.name = bl_name.c_str(); DevVarPipeDataEltArray *tmp_ptr = pipe_data.get_root_blob().get_insert_data(); DevULong max, len; @@ -7749,6 +7736,7 @@ int DeviceProxy::subscribe_event(const string &attr_name, EventType event, } + //------------------------------------------------------------------------------------------------------------------ // // method : @@ -7776,6 +7764,7 @@ int DeviceProxy::subscribe_event(const string &attr_name, EventType event, } + //------------------------------------------------------------------------------------------------------------------- // // method : diff --git a/src/client/devapi_data.cpp b/src/client/devapi_data.cpp index b748af152..b0ab385aa 100644 --- a/src/client/devapi_data.cpp +++ b/src/client/devapi_data.cpp @@ -339,24 +339,23 @@ int DeviceData::get_type() } break; - case CORBA::tk_struct: - tc_field = tc->member_type(0); - if(tc_field->kind() == tk_string) + case CORBA::tk_struct: + tc_field = tc->member_type(0); + if(tc_field->kind() == tk_string) { // The first field in a DevPipeBlob structure is a string (name field) data_type = Tango::DEV_PIPE_BLOB; break; - } - tc_al = tc_field->content_type(); - switch (tc_al->kind()) - { - case CORBA::tk_sequence: - tc_seq = tc_al->content_type(); - switch (tc_seq->kind()) - { - case CORBA::tk_long: - data_type = Tango::DEVVAR_LONGSTRINGARRAY; - break; + }tc_al = tc_field->content_type(); + switch (tc_al->kind()) + { + case CORBA::tk_sequence: + tc_seq = tc_al->content_type(); + switch (tc_seq->kind()) + { + case CORBA::tk_long: + data_type = Tango::DEVVAR_LONGSTRINGARRAY; + break; case CORBA::tk_double: data_type = Tango::DEVVAR_DOUBLESTRINGARRAY; diff --git a/test/cpp_test_suite/new_tests/cxx_cmd_types.cpp b/test/cpp_test_suite/new_tests/cxx_cmd_types.cpp new file mode 100644 index 000000000..08ec6ffdf --- /dev/null +++ b/test/cpp_test_suite/new_tests/cxx_cmd_types.cpp @@ -0,0 +1,902 @@ +//=================================================================================================================== +// +// file : cxx_cmd_types.cpp +// +// project : tango +// +// author(s) : ingvord +// +// Copyright (C) : 2004-2017 +// European Synchrotron Radiation Facility +// BP 220, Grenoble 38043 +// FRANCE +// +// This file is part of Tango. +// +// Tango is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// Tango is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty +// of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public License along with Tango. +// If not, see . +//=================================================================================================================== +// +// Created by ingvord on 3/13/17. +// +#ifndef CmdTypesTestSuite_h +#define CmdTypesTestSuite_h + +#include +#include +#include +#include +#include + +using namespace Tango; +using namespace std; + +#define cout cout << "\t" + +#undef SUITE_NAME +#define SUITE_NAME CmdTypesTestSuite + +class CmdTypesTestSuite: public CxxTest::TestSuite +{ +protected: + DeviceProxy *device; + size_t loop = 10; + +public: + SUITE_NAME() + { + +// +// Arguments check ------------------------------------------------- +// + + string device_name; + + device_name = CxxTest::TangoPrinter::get_param("device1"); + + CxxTest::TangoPrinter::validate_args(); + + +// +// Initialization -------------------------------------------------- +// + + try + { + device = new DeviceProxy(device_name); + device->ping(); + } + catch (CORBA::Exception &e) + { + Except::print_exception(e); + exit(-1); + } + + } + + virtual ~SUITE_NAME() + { + delete device; + } + + static SUITE_NAME *createSuite() + { + return new SUITE_NAME(); + } + + static void destroySuite(SUITE_NAME *suite) + { + delete suite; + } + +// +// Tests ------------------------------------------------------- +// + + void test_void(void) + { + for (size_t i = 0; i < loop; i++) + { + TS_ASSERT_THROWS_NOTHING(device->command_inout("IOVoid")); + } + } + + void test_boolean(void) + { + + for (size_t i = 0; i < loop; i++) + { + DeviceData din, dout; + bool in = true; + din << in; + TS_ASSERT_THROWS_NOTHING(dout = device->command_inout("IOBool", din)); + bool received; + int data_type = dout.get_type(); + dout >> received; + TS_ASSERT_DIFFERS(in, received); + TS_ASSERT_EQUALS(data_type, Tango::DEV_BOOLEAN); + } + } + + void test_short(void) + { + + for (size_t i = 0; i < loop; i++) + { + DeviceData din, dout; + short in = 2; + din << in; + TS_ASSERT_THROWS_NOTHING(dout = device->command_inout("IOShort", din)); + short received; + dout >> received; + int data_type = dout.get_type(); + TS_ASSERT_EQUALS(received, (in * 2)); + TS_ASSERT_EQUALS(data_type, Tango::DEV_SHORT); + } + } + + void test_long(void) + { + for (size_t i = 0; i < loop; i++) + { + DeviceData din, dout; + DevLong in = 3; + din << in; + TS_ASSERT_THROWS_NOTHING(dout = device->command_inout("IOLong", din)); + DevLong received; + dout >> received; + TS_ASSERT_EQUALS(received, (in * 2)); + } + } + + void test_float() + { + + for (size_t i = 0; i < loop; i++) + { + DeviceData din, dout; + float in = (float) 3.1; + din << in; + TS_ASSERT_THROWS_NOTHING(dout = device->command_inout("IOFloat", din)); + float received; + dout >> received; + TS_ASSERT_EQUALS(received, (in * 2)); + } + } + + void test_double(void) + { + + for (size_t i = 0; i < loop; i++) + { + DeviceData din, dout; + double in = 3.1; + din << in; + TS_ASSERT_THROWS_NOTHING(dout = device->command_inout("IODouble", din)); + double received; + dout >> received; + TS_ASSERT_EQUALS(received, (in * 2)); + } + } + + void test_unsigned_short(void) + { + + for (size_t i = 0; i < loop; i++) + { + DeviceData din, dout; + unsigned short in = 100; + din << in; + TS_ASSERT_THROWS_NOTHING(dout = device->command_inout("IOUShort", din)); + unsigned short received; + dout >> received; + TS_ASSERT_EQUALS(received, (in * 2)); + } + } + + void test_unsigned_long(void) + { + + for (size_t i = 0; i < loop; i++) + { + DeviceData din, dout; + DevULong in = 1000; + din << in; + TS_ASSERT_THROWS_NOTHING(dout = device->command_inout("IOULong", din)); + DevULong received; + dout >> received; + TS_ASSERT_EQUALS(received, (in * 2)); + } + } + + void test_CPP_string(void) + { + + for (size_t i = 0; i < loop; i++) + { + DeviceData din, dout; + string str("abc"); + din << str; + TS_ASSERT_THROWS_NOTHING(dout = device->command_inout("IOString", din)); + string received; + dout >> received; + TS_ASSERT_EQUALS(received, "cba"); + } + } + + void test_classical_C_string(void) + { + for (size_t i = 0; i < loop; i++) + { + DeviceData din, dout; + const char *str = "abcd"; + din << str; + TS_ASSERT_THROWS_NOTHING(dout = device->command_inout("IOString", din)); + const char *received; + dout >> received; + TS_ASSERT(strcmp(str, "dcba")); + } + } + + void test_char_array(void) + { + for (size_t i = 0; i < loop; i++) + { + DeviceData din, dout; + vector in; + in.push_back(1); + in.push_back(2); + din << in; + TS_ASSERT_THROWS_NOTHING(dout = device->command_inout("IOCharArray", din)); + vector received; + dout >> received; + int data_type = dout.get_type(); + TS_ASSERT_EQUALS(in[0], received[1]); + TS_ASSERT_EQUALS(in[1], received[0]); + TS_ASSERT_EQUALS(data_type, Tango::DEVVAR_CHARARRAY); + } + } + + void test_DevVarCharArray(void) + { + for (size_t i = 0; i < loop; i++) + { + const DevVarCharArray *received; + DeviceData din, dout; + + DevVarCharArray *in = new DevVarCharArray(2); + in->length(2); + (*in)[0] = 10; + (*in)[1] = 20; + din << in; + + TS_ASSERT_THROWS_NOTHING(dout = device->command_inout("IOCharArray", din)); + dout >> received; + + TS_ASSERT_EQUALS(10, (*received)[1]); + TS_ASSERT_EQUALS(20, (*received)[0]); + } + + for (size_t i = 0; i < loop; i++) + { + const DevVarCharArray *received; + DeviceData din, dout; + + DevVarCharArray in(2); + in.length(2); + in[0] = 10; + in[1] = 20; + din << in; + + TS_ASSERT_THROWS_NOTHING(dout = device->command_inout("IOCharArray", din)); + dout >> received; + + TS_ASSERT_EQUALS(in[0], (*received)[1]); + TS_ASSERT_EQUALS(in[1], (*received)[0]); + } + } + + void test_short_array(void) + { + for (size_t i = 0; i < loop; i++) + { + DeviceData din, dout; + vector in; + in.push_back(10); + in.push_back(20); + din << in; + TS_ASSERT_THROWS_NOTHING(dout = device->command_inout("IOShortArray", din)); + vector received; + dout >> received; + TS_ASSERT_EQUALS(received[0], (in[0] * 2)); + TS_ASSERT_EQUALS(received[1], (in[1] * 2)); + } + } + + void test_DevVarShortArray(void) + { + for (size_t i = 0; i < loop; i++) + { + DeviceData din, dout; + DevVarShortArray *in = new DevVarShortArray(2); + in->length(2); + (*in)[0] = 1; + (*in)[1] = 2; + + din << in; + TS_ASSERT_THROWS_NOTHING(dout = device->command_inout("IOShortArray", din)); + const DevVarShortArray *received; + dout >> received; + TS_ASSERT_EQUALS((*received)[0], (1 * 2)); + TS_ASSERT_EQUALS((*received)[1], (2 * 2)); + } + + for (size_t i = 0; i < loop; i++) + { + DeviceData din, dout; + DevVarShortArray in(2); + in.length(2); + in[0] = 1; + in[1] = 2; + + din << in; + TS_ASSERT_THROWS_NOTHING(dout = device->command_inout("IOShortArray", din)); + const DevVarShortArray *received; + dout >> received; + TS_ASSERT_EQUALS((*received)[0], (in[0] * 2)); + TS_ASSERT_EQUALS((*received)[1], (in[1] * 2)); + } + } + + void test_long_array(void) + { + for (size_t i = 0; i < loop; i++) + { + DeviceData din, dout; + vector in; + in.push_back(100); + in.push_back(200); + din << in; + TS_ASSERT_THROWS_NOTHING(dout = device->command_inout("IOLongArray", din)); + vector received; + dout >> received; + TS_ASSERT_EQUALS(received[0], (in[0] * 2)); + TS_ASSERT_EQUALS(received[1], (in[1] * 2)); + } + } + + void test_DevVarLongArray(void) + { + for (size_t i = 0; i < loop; i++) + { + DeviceData din, dout; + DevVarLongArray *in = new DevVarLongArray(2); + in->length(2); + (*in)[0] = 11; + (*in)[1] = 22; + din << in; + TS_ASSERT_THROWS_NOTHING(dout = device->command_inout("IOLongArray", din)); + const DevVarLongArray *received; + dout >> received; + TS_ASSERT_EQUALS((*received)[0], (11 * 2)); + TS_ASSERT_EQUALS((*received)[1], (22 * 2)); + } + + for (size_t i = 0; i < loop; i++) + { + DeviceData din, dout; + DevVarLongArray in(2); + in.length(2); + in[0] = 11; + in[1] = 22; + din << in; + TS_ASSERT_THROWS_NOTHING(dout = device->command_inout("IOLongArray", din)); + const DevVarLongArray *received; + dout >> received; + TS_ASSERT_EQUALS((*received)[0], (in[0] * 2)); + TS_ASSERT_EQUALS((*received)[1], (in[1] * 2)); + } + } + + void test_float_array(void) + { + for (size_t i = 0; i < loop; i++) + { + DeviceData din, dout; + vector in; + in.push_back((float) 100.1); + in.push_back((float) 200.2); + din << in; + TS_ASSERT_THROWS_NOTHING(dout = device->command_inout("IOFloatArray", din)); + vector received; + dout >> received; + TS_ASSERT_EQUALS(received[0], (in[0] * 2)); + TS_ASSERT_EQUALS(received[1], (in[1] * 2)); + } + } + + void test_DevVarFloatArray(void) + { + for (size_t i = 0; i < loop; i++) + { + DeviceData din, dout; + DevVarFloatArray *in = new DevVarFloatArray(2); + in->length(2); + (*in)[0] = (float) 1.11; + (*in)[1] = (float) 2.22; + din << in; + TS_ASSERT_THROWS_NOTHING(dout = device->command_inout("IOFloatArray", din)); + const DevVarFloatArray *received; + dout >> received; + TS_ASSERT_EQUALS((*received)[0], ((float) 1.11 * 2)); + TS_ASSERT_EQUALS((*received)[1], ((float) 2.22 * 2)); + } + + for (size_t i = 0; i < loop; i++) + { + DeviceData din, dout; + DevVarFloatArray in(2); + in.length(2); + in[0] = (float) 1.11; + in[1] = (float) 2.22; + din << in; + TS_ASSERT_THROWS_NOTHING(dout = device->command_inout("IOFloatArray", din)); + const DevVarFloatArray *received; + dout >> received; + TS_ASSERT_EQUALS((*received)[0], (in[0] * 2)); + TS_ASSERT_EQUALS((*received)[1], (in[1] * 2)); + } + } + + void test_double_array(void) + { + + for (size_t i = 0; i < loop; i++) + { + DeviceData din, dout; + vector in; + in.push_back(1.234); + in.push_back(2.111); + din << in; + TS_ASSERT_THROWS_NOTHING(dout = device->command_inout("IODoubleArray", din)); + vector received; + dout >> received; + TS_ASSERT_EQUALS(received[0], (in[0] * 2)); + TS_ASSERT_EQUALS(received[1], (in[1] * 2)); + } + } + + void test_DevVarDoubleArray(void) + { + + for (size_t i = 0; i < loop; i++) + { + DeviceData din, dout; + DevVarDoubleArray *in = new DevVarDoubleArray(2); + in->length(2); + (*in)[0] = 1.12; + (*in)[1] = 3.45; + din << in; + TS_ASSERT_THROWS_NOTHING(dout = device->command_inout("IODoubleArray", din)); + const DevVarDoubleArray *received; + dout >> received; + TS_ASSERT_EQUALS((*received)[0], (1.12 * 2)); + TS_ASSERT_EQUALS((*received)[1], (3.45 * 2)); + } + + for (size_t i = 0; i < loop; i++) + { + DeviceData din, dout; + DevVarDoubleArray in(2); + in.length(2); + in[0] = 1.12; + in[1] = 3.45; + din << in; + TS_ASSERT_THROWS_NOTHING(dout = device->command_inout("IODoubleArray", din)); + const DevVarDoubleArray *received; + dout >> received; + TS_ASSERT_EQUALS((*received)[0], (in[0] * 2)); + TS_ASSERT_EQUALS((*received)[1], (in[1] * 2)); + } + } + + void test_unsigned_short_array(void) + { + for (size_t i = 0; i < loop; i++) + { + DeviceData din, dout; + vector in; + in.push_back(100); + in.push_back(200); + din << in; + TS_ASSERT_THROWS_NOTHING(dout = device->command_inout("IOUShortArray", din)); + vector received; + dout >> received; + TS_ASSERT_EQUALS(received[0], (in[0] * 2)); + TS_ASSERT_EQUALS(received[1], (in[1] * 2)); + } + } + + void test_DevVarUShortArray(void) + { + + for (size_t i = 0; i < loop; i++) + { + DeviceData din, dout; + DevVarUShortArray *in = new DevVarUShortArray(2); + in->length(2); + (*in)[0] = 11; + (*in)[1] = 22; + din << in; + TS_ASSERT_THROWS_NOTHING(dout = device->command_inout("IOUShortArray", din)); + const DevVarUShortArray *received; + dout >> received; + TS_ASSERT_EQUALS((*received)[0], (11 * 2)); + TS_ASSERT_EQUALS((*received)[1], (22 * 2)); + } + + for (size_t i = 0; i < loop; i++) + { + DeviceData din, dout; + DevVarUShortArray in(2); + in.length(2); + in[0] = 11; + in[1] = 22; + din << in; + TS_ASSERT_THROWS_NOTHING(dout = device->command_inout("IOUShortArray", din)); + const DevVarUShortArray *received; + dout >> received; + TS_ASSERT_EQUALS((*received)[0], (in[0] * 2)); + TS_ASSERT_EQUALS((*received)[1], (in[1] * 2)); + } + } + + void test_unsigned_long_array(void) + { + for (size_t i = 0; i < loop; i++) + { + DeviceData din, dout; + vector in; + in.push_back(1000); + in.push_back(2001); + din << in; + TS_ASSERT_THROWS_NOTHING(dout = device->command_inout("IOULongArray", din)); + vector received; + dout >> received; + TS_ASSERT_EQUALS(received[0], (in[0] * 2)); + TS_ASSERT_EQUALS(received[1], (in[1] * 2)); + } + } + + void test_DevVarULongArray(void) + { + for (size_t i = 0; i < loop; i++) + { + DeviceData din, dout; + DevVarULongArray *in = new DevVarULongArray(2); + in->length(2); + (*in)[0] = 111; + (*in)[1] = 222; + din << in; + TS_ASSERT_THROWS_NOTHING(dout = device->command_inout("IOULongArray", din)); + const DevVarULongArray *received; + dout >> received; + TS_ASSERT_EQUALS((*received)[0], (111 * 2)); + TS_ASSERT_EQUALS((*received)[1], (222 * 2)); + } + + for (size_t i = 0; i < loop; i++) + { + DeviceData din, dout; + DevVarULongArray in(2); + in.length(2); + in[0] = 111; + in[1] = 222; + din << in; + TS_ASSERT_THROWS_NOTHING(dout = device->command_inout("IOULongArray", din)); + const DevVarULongArray *received; + dout >> received; + TS_ASSERT_EQUALS((*received)[0], (in[0] * 2)); + TS_ASSERT_EQUALS((*received)[1], (in[1] * 2)); + } + } + + void test_string_array(void) + { + for (size_t i = 0; i < loop; i++) + { + DeviceData din, dout; + vector in; + in.push_back("abc"); + in.push_back("wxyz"); + din << in; + TS_ASSERT_THROWS_NOTHING(dout = device->command_inout("IOStringArray", din)); + vector received; + int data_type = dout.get_type(); + dout >> received; + + TS_ASSERT_EQUALS(received[0], in[1]); + TS_ASSERT_EQUALS(received[1], in[0]); + TS_ASSERT_EQUALS(data_type, Tango::DEVVAR_STRINGARRAY); + } + } + + void test_DevVarStringArray(void) + { + for (size_t i = 0; i < loop; i++) + { + DeviceData din, dout; + DevVarStringArray *in = new DevVarStringArray(2); + in->length(2); + (*in)[0] = Tango::string_dup("abc"); + (*in)[1] = Tango::string_dup("def"); + din << in; + TS_ASSERT_THROWS_NOTHING(dout = device->command_inout("IOStringArray", din)); + const DevVarStringArray *received; + dout >> received; + TS_ASSERT(!strcmp((*received)[0], "def")); + TS_ASSERT(!strcmp((*received)[1], "abc")); + } + } + + void test_vector_of_long_and_vector_of_string(void) + { + + for (size_t i = 0; i < loop; i++) + { + DeviceData din, dout; + vector in1; + in1.push_back(1000); + in1.push_back(2001); + in1.push_back(2002); + vector in2; + in2.push_back("abc"); + in2.push_back("def"); + din.insert(in1, in2); + TS_ASSERT_THROWS_NOTHING(dout = device->command_inout("IOLongString", din)); + vector received1; + vector received2; + dout.extract(received1, received2); + + TS_ASSERT_EQUALS(received2[0], in2[0]); + TS_ASSERT_EQUALS(received2[1], in2[1]); + TS_ASSERT_EQUALS(received1[0], (in1[0] * 2)); + TS_ASSERT_EQUALS(received1[1], (in1[1] * 2)); + TS_ASSERT_EQUALS(received1[2], (in1[2] * 2)); + } + } + + void test_DevVarLongStringArray(void) + { + + for (size_t i = 0; i < loop; i++) + { + DeviceData din, dout; + DevVarLongStringArray *in = new DevVarLongStringArray(); + in->lvalue.length(2); + in->lvalue[0] = 111; + in->lvalue[1] = 222; + in->svalue.length(2); + in->svalue[0] = Tango::string_dup("zxc"); + in->svalue[1] = Tango::string_dup("qwe"); + din << in; + TS_ASSERT_THROWS_NOTHING(dout = device->command_inout("IOLongString", din)); + const DevVarLongStringArray *received; + dout >> received; + + TS_ASSERT_EQUALS(received->lvalue[0], (111 * 2)); + TS_ASSERT_EQUALS(received->lvalue[1], (222 * 2)); + TS_ASSERT(!strcmp(received->svalue[0], "zxc")); + TS_ASSERT(!strcmp(received->svalue[1], "qwe")); + } + + for (size_t i = 0; i < loop; i++) + { + DeviceData din, dout; + DevVarLongStringArray in; + in.lvalue.length(2); + in.lvalue[0] = 111; + in.lvalue[1] = 222; + in.svalue.length(2); + in.svalue[0] = Tango::string_dup("zxc"); + in.svalue[1] = Tango::string_dup("qwe"); + din << in; + TS_ASSERT_THROWS_NOTHING(dout = device->command_inout("IOLongString", din)); + const DevVarLongStringArray *received; + dout >> received; + int data_type = dout.get_type(); + + TS_ASSERT_EQUALS(received->lvalue[0], (in.lvalue[0] * 2)); + TS_ASSERT_EQUALS(received->lvalue[1], (in.lvalue[1] * 2)); + TS_ASSERT(!strcmp(received->svalue[0], in.svalue[0])); + TS_ASSERT(!strcmp(received->svalue[1], in.svalue[1])); + TS_ASSERT_EQUALS(data_type, Tango::DEVVAR_LONGSTRINGARRAY); + } + } + + void test_vector_of_double_and_vector_of_string(void) + { + + for (size_t i = 0; i < loop; i++) + { + DeviceData din, dout; + vector in1; + in1.push_back(10.0); + in1.push_back(20.1); + in1.push_back(20.2); + vector in2; + in2.push_back("abc"); + in2.push_back("def"); + din.insert(in1, in2); + TS_ASSERT_THROWS_NOTHING(dout = device->command_inout("IODoubleString", din)); + vector received1; + vector received2; + dout.extract(received1, received2); + int data_type = dout.get_type(); + + TS_ASSERT_EQUALS(received2[0], in2[0]); + TS_ASSERT_EQUALS(received2[1], in2[1]); + TS_ASSERT_EQUALS(received1[0], (in1[0] * 2)); + TS_ASSERT_EQUALS(received1[1], (in1[1] * 2)); + TS_ASSERT_EQUALS(received1[2], (in1[2] * 2)); + TS_ASSERT_EQUALS(data_type, Tango::DEVVAR_DOUBLESTRINGARRAY); + } + } + + void test_DevVarDoubleStringArray(void) + { + + for (size_t i = 0; i < loop; i++) + { + DeviceData din, dout; + DevVarDoubleStringArray *in = new DevVarDoubleStringArray(); + in->dvalue.length(2); + in->dvalue[0] = 1.11; + in->dvalue[1] = 22.2; + in->svalue.length(3); + in->svalue[0] = Tango::string_dup("iop"); + in->svalue[1] = Tango::string_dup("jkl"); + in->svalue[2] = Tango::string_dup("bnm"); + din << in; + TS_ASSERT_THROWS_NOTHING(dout = device->command_inout("IODoubleString", din)); + const DevVarDoubleStringArray *received; + dout >> received; + + TS_ASSERT_EQUALS(received->dvalue[0], (1.11 * 2)); + TS_ASSERT_EQUALS(received->dvalue[1], (22.2 * 2)); + TS_ASSERT(!strcmp(received->svalue[0], "iop")); + TS_ASSERT(!strcmp(received->svalue[1], "jkl")); + TS_ASSERT(!strcmp(received->svalue[2], "bnm")); + } + + + for (size_t i = 0; i < loop; i++) + { + DeviceData din, dout; + DevVarDoubleStringArray in; + in.dvalue.length(2); + in.dvalue[0] = 1.11; + in.dvalue[1] = 22.2; + in.svalue.length(3); + in.svalue[0] = Tango::string_dup("iop"); + in.svalue[1] = Tango::string_dup("jkl"); + in.svalue[2] = Tango::string_dup("bnm"); + din << in; + TS_ASSERT_THROWS_NOTHING(dout = device->command_inout("IODoubleString", din)); + const DevVarDoubleStringArray *received; + dout >> received; + + TS_ASSERT_EQUALS(received->dvalue[0], (in.dvalue[0] * 2)); + TS_ASSERT_EQUALS(received->dvalue[1], (in.dvalue[1] * 2)); + TS_ASSERT(!strcmp(received->svalue[0], in.svalue[0])); + TS_ASSERT(!strcmp(received->svalue[1], in.svalue[1])); + TS_ASSERT(!strcmp(received->svalue[2], in.svalue[2])); + } + } + + void test_DevEncoded(void) + { + + for (size_t i = 0; i < loop; i++) + { + DeviceData din, dout; + DevEncoded in; + in.encoded_data.length(2); + in.encoded_data[0] = 11; + in.encoded_data[1] = 22; + in.encoded_format = Tango::string_dup("Sent"); + din << in; + TS_ASSERT_THROWS_NOTHING(dout = device->command_inout("IOEncoded", din)); + const DevEncoded *received; + dout >> received; + int data_type = dout.get_type(); + + TS_ASSERT_EQUALS(received->encoded_data.length(), 2); + TS_ASSERT_EQUALS(received->encoded_data[0], (11 * 2)); + TS_ASSERT_EQUALS(received->encoded_data[1], (22 * 2)); + TS_ASSERT(!strcmp(received->encoded_format, "Returned string")); + TS_ASSERT_EQUALS(data_type, Tango::DEV_ENCODED); + } + + for (size_t i = 0; i < loop; i++) + { + DeviceData din, dout; + string in_str("Sent"); + vector in_data; + + in_data.push_back((unsigned char) 15); + in_data.push_back((unsigned char) 25); + + din.insert(in_str, in_data); + TS_ASSERT_THROWS_NOTHING(dout = device->command_inout("IOEncoded", din)); + DevEncoded received; + dout >> received; + int data_type = dout.get_type(); + + TS_ASSERT_EQUALS(received.encoded_data.length(), 2); + TS_ASSERT_EQUALS(received.encoded_data[0], (15 * 2)); + TS_ASSERT_EQUALS(received.encoded_data[1], (25 * 2)); + TS_ASSERT(!strcmp(received.encoded_format, "Returned string")); + TS_ASSERT_EQUALS(data_type, Tango::DEV_ENCODED); + } + + for (size_t i = 0; i < loop; i++) + { + DeviceData din, dout; + string in_str("Sent"); + DevVarCharArray in_data; + + in_data.length(4); + in_data[0] = ((unsigned char) 15); + in_data[1] = ((unsigned char) 25); + in_data[2] = ((unsigned char) 35); + in_data[3] = ((unsigned char) 45); + + din.insert("Sent", &in_data); + TS_ASSERT_THROWS_NOTHING(dout = device->command_inout("IOEncoded", din)); + DevEncoded received; + dout >> received; + int data_type = dout.get_type(); + + TS_ASSERT_EQUALS(received.encoded_data.length(), 4); + TS_ASSERT_EQUALS(received.encoded_data[0], (15 * 2)); + TS_ASSERT_EQUALS(received.encoded_data[1], (25 * 2)); + TS_ASSERT_EQUALS(received.encoded_data[2], (35 * 2)); + TS_ASSERT_EQUALS(received.encoded_data[3], (45 * 2)); + TS_ASSERT(!strcmp(received.encoded_format, "Returned string")); + TS_ASSERT_EQUALS(data_type, Tango::DEV_ENCODED); + } + } + + void test_DevicePipeBlob(void) + { + for (size_t i = 0; i < loop; i++) + { + DeviceData din, dout; + DevicePipeBlob in{"TestPipeCmd"}; + in.set_current_delt_name("level 0"); + DevLong data = 123; + in << data; + din.insert(in); + TS_ASSERT_THROWS_NOTHING(dout = device->command_inout("IOPipeBlob", din)); + DevicePipeBlob *received; + dout.extract(received); + int data_type = dout.get_type(); + + //TODO + TS_ASSERT_EQUALS(data_type, Tango::DEV_PIPE_BLOB); + } + } +}; +#undef cout +#endif // CmdTypesTestSuite_h + + From d0c24cd1d491e114ea17782d7fb9db9c3746025f Mon Sep 17 00:00:00 2001 From: ingvord Date: Wed, 19 Jul 2017 19:35:45 +0300 Subject: [PATCH 11/21] progress #378: progress --- test/cpp_test_suite/cpp_test_ds/TypeCmds.cpp | 3 +-- test/cpp_test_suite/new_tests/cxx_cmd_types.cpp | 15 ++++++++++----- 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/test/cpp_test_suite/cpp_test_ds/TypeCmds.cpp b/test/cpp_test_suite/cpp_test_ds/TypeCmds.cpp index 8dd7bfde6..d7193499e 100644 --- a/test/cpp_test_suite/cpp_test_ds/TypeCmds.cpp +++ b/test/cpp_test_suite/cpp_test_ds/TypeCmds.cpp @@ -1663,7 +1663,7 @@ bool IOPipeBlob::is_allowed(Tango::DeviceImpl *dev, const CORBA::Any &in_any) } CORBA::Any *IOPipeBlob::execute(Tango::DeviceImpl *dev, const CORBA::Any &in_any) { - Tango::DevPipeBlob *blob; + Tango::DevPipeBlob *blob = nullptr; //TODO extract bool extracted = in_any >>= blob; if (not(extracted)) throw logic_error{"DevPipeBlob has not been extracted!"}; @@ -1671,7 +1671,6 @@ CORBA::Any *IOPipeBlob::execute(Tango::DeviceImpl *dev, const CORBA::Any &in_any //TODO insert CORBA::Any *out_any = new CORBA::Any(); - (*out_any) <<= *blob; return out_any; } diff --git a/test/cpp_test_suite/new_tests/cxx_cmd_types.cpp b/test/cpp_test_suite/new_tests/cxx_cmd_types.cpp index 08ec6ffdf..ed9500410 100644 --- a/test/cpp_test_suite/new_tests/cxx_cmd_types.cpp +++ b/test/cpp_test_suite/new_tests/cxx_cmd_types.cpp @@ -882,16 +882,21 @@ class CmdTypesTestSuite: public CxxTest::TestSuite { DeviceData din, dout; DevicePipeBlob in{"TestPipeCmd"}; - in.set_current_delt_name("level 0"); + vector names{"level0"}; + in.set_data_elt_names(names); DevLong data = 123; in << data; din.insert(in); TS_ASSERT_THROWS_NOTHING(dout = device->command_inout("IOPipeBlob", din)); - DevicePipeBlob *received; - dout.extract(received); + DevicePipeBlob received{}; + dout.extract(&received); + + TS_ASSERT_EQUALS(received.get_data_elt_nb(), 1); + TS_ASSERT_EQUALS(received.get_data_elt_name(0), "level0"); + int received_data; + received >> received_data; + TS_ASSERT_EQUALS(received_data, 123); int data_type = dout.get_type(); - - //TODO TS_ASSERT_EQUALS(data_type, Tango::DEV_PIPE_BLOB); } } From 593a9eba8a50d64024b1d45ee92c46e915ce8c94 Mon Sep 17 00:00:00 2001 From: ingvord Date: Tue, 25 Jul 2017 13:20:54 +0200 Subject: [PATCH 12/21] Progress #378 add cmd_query test --- .../new_tests/cxx_cmd_query.cpp | 741 +++++++++--------- 1 file changed, 376 insertions(+), 365 deletions(-) diff --git a/test/cpp_test_suite/new_tests/cxx_cmd_query.cpp b/test/cpp_test_suite/new_tests/cxx_cmd_query.cpp index d1ee120b1..650ada031 100644 --- a/test/cpp_test_suite/new_tests/cxx_cmd_query.cpp +++ b/test/cpp_test_suite/new_tests/cxx_cmd_query.cpp @@ -17,59 +17,59 @@ using namespace std; class CmdQueryTestSuite: public CxxTest::TestSuite { protected: - DeviceProxy *device1, *dserver; - CommandInfoList cmd_inf_list; + DeviceProxy *device1, *dserver; + CommandInfoList cmd_inf_list; public: - SUITE_NAME() - { + SUITE_NAME() + { // // Arguments check ------------------------------------------------- // - string device1_name, dserver_name; + string device1_name, dserver_name; - device1_name = CxxTest::TangoPrinter::get_param("device1"); - dserver_name = "dserver/" + CxxTest::TangoPrinter::get_param("fulldsname"); + device1_name = CxxTest::TangoPrinter::get_param("device1"); + dserver_name = "dserver/" + CxxTest::TangoPrinter::get_param("fulldsname"); - CxxTest::TangoPrinter::validate_args(); + CxxTest::TangoPrinter::validate_args(); // // Initialization -------------------------------------------------- // - try - { - device1 = new DeviceProxy(device1_name); - dserver = new DeviceProxy(dserver_name); - device1->ping(); - dserver->ping(); - } - catch (CORBA::Exception &e) - { - Except::print_exception(e); - exit(-1); - } - - } - - virtual ~SUITE_NAME() - { - delete device1; - delete dserver; - } - - static SUITE_NAME *createSuite() - { - return new SUITE_NAME(); - } - - static void destroySuite(SUITE_NAME *suite) - { - delete suite; - } + try + { + device1 = new DeviceProxy(device1_name); + dserver = new DeviceProxy(dserver_name); + device1->ping(); + dserver->ping(); + } + catch (CORBA::Exception &e) + { + Except::print_exception(e); + exit(-1); + } + + } + + virtual ~SUITE_NAME() + { + delete device1; + delete dserver; + } + + static SUITE_NAME *createSuite() + { + return new SUITE_NAME(); + } + + static void destroySuite(SUITE_NAME *suite) + { + delete suite; + } // // Tests ------------------------------------------------------- @@ -84,467 +84,478 @@ class CmdQueryTestSuite: public CxxTest::TestSuite // Test command list query - void test_command_list_query(void) - { - TS_ASSERT_THROWS_NOTHING(cmd_inf_list = *dserver->command_list_query()); - TS_ASSERT(cmd_inf_list.size() == 32); - } + void test_command_list_query(void) + { + TS_ASSERT_THROWS_NOTHING(cmd_inf_list = *dserver->command_list_query()); + TS_ASSERT(cmd_inf_list.size() == 32); + } // Test Status command - void test_command_Status(void) - { - CommandInfo cmd_inf; - TS_ASSERT_THROWS_NOTHING(cmd_inf = device1->command_query("Status")); - TS_ASSERT_EQUALS(cmd_inf.cmd_name,"Status"); - TS_ASSERT_EQUALS(cmd_inf.in_type,Tango::DEV_VOID); - TS_ASSERT_EQUALS(cmd_inf.out_type,Tango::DEV_STRING); - TS_ASSERT_EQUALS(cmd_inf.in_type_desc,"Uninitialised"); - TS_ASSERT_EQUALS(cmd_inf.out_type_desc,"Device status"); - } + void test_command_Status(void) + { + CommandInfo cmd_inf; + TS_ASSERT_THROWS_NOTHING(cmd_inf = device1->command_query("Status")); + TS_ASSERT_EQUALS(cmd_inf.cmd_name, "Status"); + TS_ASSERT_EQUALS(cmd_inf.in_type, Tango::DEV_VOID); + TS_ASSERT_EQUALS(cmd_inf.out_type, Tango::DEV_STRING); + TS_ASSERT_EQUALS(cmd_inf.in_type_desc, "Uninitialised"); + TS_ASSERT_EQUALS(cmd_inf.out_type_desc, "Device status"); + } // Test fake command - void test_fake_command(void) - { - TS_ASSERT_THROWS_ASSERT(device1->command_query("DevToto"),Tango::DevFailed &e, - TS_ASSERT(string(e.errors[0].reason.in()) == "API_CommandNotFound" - && e.errors[0].severity == Tango::ERR)); - } + void test_fake_command(void) + { + TS_ASSERT_THROWS_ASSERT(device1->command_query("DevToto"), Tango::DevFailed &e, + TS_ASSERT(string(e.errors[0].reason.in()) == "API_CommandNotFound" + && e.errors[0].severity == Tango::ERR)); + } // Test AddLoggingTarget command_list_query - void test_command_list_query_AddLoggingTarget(void) - { + void test_command_list_query_AddLoggingTarget(void) + { // CommandInfo cmd_inf = dserver->command_query("AddLoggingTarget"); - CommandInfo cmd_inf = cmd_inf_list[0]; - TS_ASSERT_EQUALS(cmd_inf.cmd_name,"AddLoggingTarget"); - TS_ASSERT_EQUALS(cmd_inf.in_type,Tango::DEVVAR_STRINGARRAY); - TS_ASSERT_EQUALS(cmd_inf.out_type,Tango::DEV_VOID); - TS_ASSERT_EQUALS(cmd_inf.in_type_desc,"Str[i]=Device-name. Str[i+1]=Target-type::Target-name"); - TS_ASSERT_EQUALS(cmd_inf.out_type_desc,"Uninitialised"); - } + CommandInfo cmd_inf = cmd_inf_list[0]; + TS_ASSERT_EQUALS(cmd_inf.cmd_name, "AddLoggingTarget"); + TS_ASSERT_EQUALS(cmd_inf.in_type, Tango::DEVVAR_STRINGARRAY); + TS_ASSERT_EQUALS(cmd_inf.out_type, Tango::DEV_VOID); + TS_ASSERT_EQUALS(cmd_inf.in_type_desc, "Str[i]=Device-name. Str[i+1]=Target-type::Target-name"); + TS_ASSERT_EQUALS(cmd_inf.out_type_desc, "Uninitialised"); + } // Test AddObjPolling command_list_query - void test_command_list_query_AddObjPolling(void) - { + void test_command_list_query_AddObjPolling(void) + { // CommandInfo cmd_inf = dserver->command_query("AddObjPolling"); - CommandInfo cmd_inf = cmd_inf_list[1]; - TS_ASSERT_EQUALS(cmd_inf.cmd_name,"AddObjPolling"); - TS_ASSERT_EQUALS(cmd_inf.in_type,Tango::DEVVAR_LONGSTRINGARRAY); - TS_ASSERT_EQUALS(cmd_inf.out_type,Tango::DEV_VOID); - TS_ASSERT_EQUALS(cmd_inf.in_type_desc,"Lg[0]=Upd period. Str[0]=Device name. Str[1]=Object type. Str[2]=Object name"); - TS_ASSERT_EQUALS(cmd_inf.out_type_desc,"Uninitialised"); - } + CommandInfo cmd_inf = cmd_inf_list[1]; + TS_ASSERT_EQUALS(cmd_inf.cmd_name, "AddObjPolling"); + TS_ASSERT_EQUALS(cmd_inf.in_type, Tango::DEVVAR_LONGSTRINGARRAY); + TS_ASSERT_EQUALS(cmd_inf.out_type, Tango::DEV_VOID); + TS_ASSERT_EQUALS(cmd_inf.in_type_desc, + "Lg[0]=Upd period. Str[0]=Device name. Str[1]=Object type. Str[2]=Object name"); + TS_ASSERT_EQUALS(cmd_inf.out_type_desc, "Uninitialised"); + } // Test DevLockStatus command_list_query - void test_command_list_query_DevLockStatus(void) - { + void test_command_list_query_DevLockStatus(void) + { // CommandInfo cmd_inf = dserver->command_query("DevLockStatus"); - CommandInfo cmd_inf = cmd_inf_list[2]; - TS_ASSERT_EQUALS(cmd_inf.cmd_name,"DevLockStatus"); - TS_ASSERT_EQUALS(cmd_inf.in_type,Tango::DEV_STRING); - TS_ASSERT_EQUALS(cmd_inf.out_type,Tango::DEVVAR_LONGSTRINGARRAY); - TS_ASSERT_EQUALS(cmd_inf.in_type_desc,"Device name"); - TS_ASSERT_EQUALS(cmd_inf.out_type_desc,"Device locking status"); - } + CommandInfo cmd_inf = cmd_inf_list[2]; + TS_ASSERT_EQUALS(cmd_inf.cmd_name, "DevLockStatus"); + TS_ASSERT_EQUALS(cmd_inf.in_type, Tango::DEV_STRING); + TS_ASSERT_EQUALS(cmd_inf.out_type, Tango::DEVVAR_LONGSTRINGARRAY); + TS_ASSERT_EQUALS(cmd_inf.in_type_desc, "Device name"); + TS_ASSERT_EQUALS(cmd_inf.out_type_desc, "Device locking status"); + } // Test DevPollStatus command_list_query - void test_command_list_query_DevPollStatus(void) - { + void test_command_list_query_DevPollStatus(void) + { // CommandInfo cmd_inf = dserver->command_query("DevPollStatus"); - CommandInfo cmd_inf = cmd_inf_list[3]; - TS_ASSERT_EQUALS(cmd_inf.cmd_name,"DevPollStatus"); - TS_ASSERT_EQUALS(cmd_inf.in_type,Tango::DEV_STRING); - TS_ASSERT_EQUALS(cmd_inf.out_type,Tango::DEVVAR_STRINGARRAY); - TS_ASSERT_EQUALS(cmd_inf.in_type_desc,"Device name"); - TS_ASSERT_EQUALS(cmd_inf.out_type_desc,"Device polling status"); - } + CommandInfo cmd_inf = cmd_inf_list[3]; + TS_ASSERT_EQUALS(cmd_inf.cmd_name, "DevPollStatus"); + TS_ASSERT_EQUALS(cmd_inf.in_type, Tango::DEV_STRING); + TS_ASSERT_EQUALS(cmd_inf.out_type, Tango::DEVVAR_STRINGARRAY); + TS_ASSERT_EQUALS(cmd_inf.in_type_desc, "Device name"); + TS_ASSERT_EQUALS(cmd_inf.out_type_desc, "Device polling status"); + } // Test DevRestart command_list_query - void test_command_list_query_DevRestart(void) - { + void test_command_list_query_DevRestart(void) + { // CommandInfo cmd_inf = dserver->command_query("DevRestart"); - CommandInfo cmd_inf = cmd_inf_list[4]; - TS_ASSERT_EQUALS(cmd_inf.cmd_name,"DevRestart"); - TS_ASSERT_EQUALS(cmd_inf.in_type,Tango::DEV_STRING); - TS_ASSERT_EQUALS(cmd_inf.out_type,Tango::DEV_VOID); - TS_ASSERT_EQUALS(cmd_inf.in_type_desc,"Device name"); - TS_ASSERT_EQUALS(cmd_inf.out_type_desc,"Uninitialised"); - } + CommandInfo cmd_inf = cmd_inf_list[4]; + TS_ASSERT_EQUALS(cmd_inf.cmd_name, "DevRestart"); + TS_ASSERT_EQUALS(cmd_inf.in_type, Tango::DEV_STRING); + TS_ASSERT_EQUALS(cmd_inf.out_type, Tango::DEV_VOID); + TS_ASSERT_EQUALS(cmd_inf.in_type_desc, "Device name"); + TS_ASSERT_EQUALS(cmd_inf.out_type_desc, "Uninitialised"); + } // Test EventConfirmSubscription command_list_query - void test_command_list_query_EventConfirmSubscriptionChange(void) - { + void test_command_list_query_EventConfirmSubscriptionChange(void) + { // CommandInfo cmd_inf = dserver->command_query("EventConfirmSubscription"); - CommandInfo cmd_inf = cmd_inf_list[5]; - TS_ASSERT_EQUALS(cmd_inf.cmd_name,"EventConfirmSubscription"); - TS_ASSERT_EQUALS(cmd_inf.in_type,Tango::DEVVAR_STRINGARRAY); - TS_ASSERT_EQUALS(cmd_inf.out_type,Tango::DEV_VOID); - TS_ASSERT_EQUALS(cmd_inf.in_type_desc,"Str[0] = dev1 name, Str[1] = att1 name, Str[2] = event name, Str[3] = dev2 name, Str[4] = att2 name, Str[5] = event name,..."); - TS_ASSERT_EQUALS(cmd_inf.out_type_desc,"Uninitialised"); - } + CommandInfo cmd_inf = cmd_inf_list[5]; + TS_ASSERT_EQUALS(cmd_inf.cmd_name, "EventConfirmSubscription"); + TS_ASSERT_EQUALS(cmd_inf.in_type, Tango::DEVVAR_STRINGARRAY); + TS_ASSERT_EQUALS(cmd_inf.out_type, Tango::DEV_VOID); + TS_ASSERT_EQUALS(cmd_inf.in_type_desc, + "Str[0] = dev1 name, Str[1] = att1 name, Str[2] = event name, Str[3] = dev2 name, Str[4] = att2 name, Str[5] = event name,..."); + TS_ASSERT_EQUALS(cmd_inf.out_type_desc, "Uninitialised"); + } // Test EventSubscriptionChange command_list_query - void test_command_list_query_EventSubscriptionChange(void) - { + void test_command_list_query_EventSubscriptionChange(void) + { // CommandInfo cmd_inf = dserver->command_query("EventSubscriptionChange"); - CommandInfo cmd_inf = cmd_inf_list[6]; - TS_ASSERT_EQUALS(cmd_inf.cmd_name,"EventSubscriptionChange"); - TS_ASSERT_EQUALS(cmd_inf.in_type,Tango::DEVVAR_STRINGARRAY); - TS_ASSERT_EQUALS(cmd_inf.out_type,Tango::DEV_LONG); - TS_ASSERT_EQUALS(cmd_inf.in_type_desc,"Event consumer wants to subscribe to"); - TS_ASSERT_EQUALS(cmd_inf.out_type_desc,"Tango lib release"); - } + CommandInfo cmd_inf = cmd_inf_list[6]; + TS_ASSERT_EQUALS(cmd_inf.cmd_name, "EventSubscriptionChange"); + TS_ASSERT_EQUALS(cmd_inf.in_type, Tango::DEVVAR_STRINGARRAY); + TS_ASSERT_EQUALS(cmd_inf.out_type, Tango::DEV_LONG); + TS_ASSERT_EQUALS(cmd_inf.in_type_desc, "Event consumer wants to subscribe to"); + TS_ASSERT_EQUALS(cmd_inf.out_type_desc, "Tango lib release"); + } // Test GetLoggingLevel command_list_query - void test_command_list_query_GetLoggingLevel(void) - { + void test_command_list_query_GetLoggingLevel(void) + { // CommandInfo cmd_inf = dserver->command_query("GetLoggingLevel"); - CommandInfo cmd_inf = cmd_inf_list[7]; - TS_ASSERT_EQUALS(cmd_inf.cmd_name,"GetLoggingLevel"); - TS_ASSERT_EQUALS(cmd_inf.in_type,Tango::DEVVAR_STRINGARRAY); - TS_ASSERT_EQUALS(cmd_inf.out_type,Tango::DEVVAR_LONGSTRINGARRAY); - TS_ASSERT_EQUALS(cmd_inf.in_type_desc,"Device list"); - TS_ASSERT_EQUALS(cmd_inf.out_type_desc,"Lg[i]=Logging Level. Str[i]=Device name."); - } + CommandInfo cmd_inf = cmd_inf_list[7]; + TS_ASSERT_EQUALS(cmd_inf.cmd_name, "GetLoggingLevel"); + TS_ASSERT_EQUALS(cmd_inf.in_type, Tango::DEVVAR_STRINGARRAY); + TS_ASSERT_EQUALS(cmd_inf.out_type, Tango::DEVVAR_LONGSTRINGARRAY); + TS_ASSERT_EQUALS(cmd_inf.in_type_desc, "Device list"); + TS_ASSERT_EQUALS(cmd_inf.out_type_desc, "Lg[i]=Logging Level. Str[i]=Device name."); + } // Test GetLoggingTarget command_list_query - void test_command_list_query_GetLoggingTarget(void) - { + void test_command_list_query_GetLoggingTarget(void) + { // CommandInfo cmd_inf = dserver->command_query("GetLoggingTarget"); - CommandInfo cmd_inf = cmd_inf_list[8]; - TS_ASSERT_EQUALS(cmd_inf.cmd_name,"GetLoggingTarget"); - TS_ASSERT_EQUALS(cmd_inf.in_type,Tango::DEV_STRING); - TS_ASSERT_EQUALS(cmd_inf.out_type,Tango::DEVVAR_STRINGARRAY); - TS_ASSERT_EQUALS(cmd_inf.in_type_desc,"Device name"); - TS_ASSERT_EQUALS(cmd_inf.out_type_desc,"Logging target list"); - } + CommandInfo cmd_inf = cmd_inf_list[8]; + TS_ASSERT_EQUALS(cmd_inf.cmd_name, "GetLoggingTarget"); + TS_ASSERT_EQUALS(cmd_inf.in_type, Tango::DEV_STRING); + TS_ASSERT_EQUALS(cmd_inf.out_type, Tango::DEVVAR_STRINGARRAY); + TS_ASSERT_EQUALS(cmd_inf.in_type_desc, "Device name"); + TS_ASSERT_EQUALS(cmd_inf.out_type_desc, "Logging target list"); + } // Test Init command_list_query - void test_command_list_query_Init(void) - { + void test_command_list_query_Init(void) + { // CommandInfo cmd_inf = dserver->command_query("Init"); - CommandInfo cmd_inf = cmd_inf_list[9]; - TS_ASSERT_EQUALS(cmd_inf.cmd_name,"Init"); - TS_ASSERT_EQUALS(cmd_inf.in_type,Tango::DEV_VOID); - TS_ASSERT_EQUALS(cmd_inf.out_type,Tango::DEV_VOID); - TS_ASSERT_EQUALS(cmd_inf.in_type_desc,"Uninitialised"); - TS_ASSERT_EQUALS(cmd_inf.out_type_desc,"Uninitialised"); - } + CommandInfo cmd_inf = cmd_inf_list[9]; + TS_ASSERT_EQUALS(cmd_inf.cmd_name, "Init"); + TS_ASSERT_EQUALS(cmd_inf.in_type, Tango::DEV_VOID); + TS_ASSERT_EQUALS(cmd_inf.out_type, Tango::DEV_VOID); + TS_ASSERT_EQUALS(cmd_inf.in_type_desc, "Uninitialised"); + TS_ASSERT_EQUALS(cmd_inf.out_type_desc, "Uninitialised"); + } // Test Kill command_list_query - void test_command_list_query_Kill(void) - { + void test_command_list_query_Kill(void) + { // CommandInfo cmd_inf = dserver->command_query("Kill"); - CommandInfo cmd_inf = cmd_inf_list[10]; - TS_ASSERT_EQUALS(cmd_inf.cmd_name,"Kill"); - TS_ASSERT_EQUALS(cmd_inf.in_type,Tango::DEV_VOID); - TS_ASSERT_EQUALS(cmd_inf.out_type,Tango::DEV_VOID); - TS_ASSERT_EQUALS(cmd_inf.in_type_desc,"Uninitialised"); - TS_ASSERT_EQUALS(cmd_inf.out_type_desc,"Uninitialised"); - } + CommandInfo cmd_inf = cmd_inf_list[10]; + TS_ASSERT_EQUALS(cmd_inf.cmd_name, "Kill"); + TS_ASSERT_EQUALS(cmd_inf.in_type, Tango::DEV_VOID); + TS_ASSERT_EQUALS(cmd_inf.out_type, Tango::DEV_VOID); + TS_ASSERT_EQUALS(cmd_inf.in_type_desc, "Uninitialised"); + TS_ASSERT_EQUALS(cmd_inf.out_type_desc, "Uninitialised"); + } // Test LockDevice command_list_query - void test_command_list_query_LockDevice(void) - { + void test_command_list_query_LockDevice(void) + { // CommandInfo cmd_inf = dserver->command_query("LockDevice"); - CommandInfo cmd_inf = cmd_inf_list[11]; - TS_ASSERT_EQUALS(cmd_inf.cmd_name,"LockDevice"); - TS_ASSERT_EQUALS(cmd_inf.in_type,Tango::DEVVAR_LONGSTRINGARRAY); - TS_ASSERT_EQUALS(cmd_inf.out_type,Tango::DEV_VOID); - TS_ASSERT_EQUALS(cmd_inf.in_type_desc,"Str[0] = Device name. Lg[0] = Lock validity"); - TS_ASSERT_EQUALS(cmd_inf.out_type_desc,"Uninitialised"); - } + CommandInfo cmd_inf = cmd_inf_list[11]; + TS_ASSERT_EQUALS(cmd_inf.cmd_name, "LockDevice"); + TS_ASSERT_EQUALS(cmd_inf.in_type, Tango::DEVVAR_LONGSTRINGARRAY); + TS_ASSERT_EQUALS(cmd_inf.out_type, Tango::DEV_VOID); + TS_ASSERT_EQUALS(cmd_inf.in_type_desc, "Str[0] = Device name. Lg[0] = Lock validity"); + TS_ASSERT_EQUALS(cmd_inf.out_type_desc, "Uninitialised"); + } // Test PolledDevice command_list_query - void test_command_list_query_PolledDevice(void) - { + void test_command_list_query_PolledDevice(void) + { // CommandInfo cmd_inf = dserver->command_query("PolledDevice"); - CommandInfo cmd_inf = cmd_inf_list[12]; - TS_ASSERT_EQUALS(cmd_inf.cmd_name,"PolledDevice"); - TS_ASSERT_EQUALS(cmd_inf.in_type,Tango::DEV_VOID); - TS_ASSERT_EQUALS(cmd_inf.out_type,Tango::DEVVAR_STRINGARRAY); - TS_ASSERT_EQUALS(cmd_inf.in_type_desc,"Uninitialised"); - TS_ASSERT_EQUALS(cmd_inf.out_type_desc,"Polled device name list"); - } + CommandInfo cmd_inf = cmd_inf_list[12]; + TS_ASSERT_EQUALS(cmd_inf.cmd_name, "PolledDevice"); + TS_ASSERT_EQUALS(cmd_inf.in_type, Tango::DEV_VOID); + TS_ASSERT_EQUALS(cmd_inf.out_type, Tango::DEVVAR_STRINGARRAY); + TS_ASSERT_EQUALS(cmd_inf.in_type_desc, "Uninitialised"); + TS_ASSERT_EQUALS(cmd_inf.out_type_desc, "Polled device name list"); + } // Test QueryClass command_list_query - void test_command_list_query_QueryClass(void) - { + void test_command_list_query_QueryClass(void) + { // CommandInfo cmd_inf = dserver->command_query("QueryClass"); - CommandInfo cmd_inf = cmd_inf_list[13]; - TS_ASSERT_EQUALS(cmd_inf.cmd_name,"QueryClass"); - TS_ASSERT_EQUALS(cmd_inf.in_type,Tango::DEV_VOID); - TS_ASSERT_EQUALS(cmd_inf.out_type,Tango::DEVVAR_STRINGARRAY); - TS_ASSERT_EQUALS(cmd_inf.in_type_desc,"Uninitialised"); - TS_ASSERT_EQUALS(cmd_inf.out_type_desc,"Device server class(es) list"); - } + CommandInfo cmd_inf = cmd_inf_list[13]; + TS_ASSERT_EQUALS(cmd_inf.cmd_name, "QueryClass"); + TS_ASSERT_EQUALS(cmd_inf.in_type, Tango::DEV_VOID); + TS_ASSERT_EQUALS(cmd_inf.out_type, Tango::DEVVAR_STRINGARRAY); + TS_ASSERT_EQUALS(cmd_inf.in_type_desc, "Uninitialised"); + TS_ASSERT_EQUALS(cmd_inf.out_type_desc, "Device server class(es) list"); + } // Test QueryDevice command_list_query - void test_command_list_query_QueryDevice(void) - { + void test_command_list_query_QueryDevice(void) + { // CommandInfo cmd_inf = dserver->command_query("QueryDevice"); - CommandInfo cmd_inf = cmd_inf_list[14]; - TS_ASSERT_EQUALS(cmd_inf.cmd_name,"QueryDevice"); - TS_ASSERT_EQUALS(cmd_inf.in_type,Tango::DEV_VOID); - TS_ASSERT_EQUALS(cmd_inf.out_type,Tango::DEVVAR_STRINGARRAY); - TS_ASSERT_EQUALS(cmd_inf.in_type_desc,"Uninitialised"); - TS_ASSERT_EQUALS(cmd_inf.out_type_desc,"Device server device(s) list"); - } + CommandInfo cmd_inf = cmd_inf_list[14]; + TS_ASSERT_EQUALS(cmd_inf.cmd_name, "QueryDevice"); + TS_ASSERT_EQUALS(cmd_inf.in_type, Tango::DEV_VOID); + TS_ASSERT_EQUALS(cmd_inf.out_type, Tango::DEVVAR_STRINGARRAY); + TS_ASSERT_EQUALS(cmd_inf.in_type_desc, "Uninitialised"); + TS_ASSERT_EQUALS(cmd_inf.out_type_desc, "Device server device(s) list"); + } // Test QuerySubDevice command_list_query - void test_command_list_query_QuerySubDevice(void) - { + void test_command_list_query_QuerySubDevice(void) + { // CommandInfo cmd_inf = dserver->command_query("QuerySubDevice"); - CommandInfo cmd_inf = cmd_inf_list[15]; - TS_ASSERT_EQUALS(cmd_inf.cmd_name,"QuerySubDevice"); - TS_ASSERT_EQUALS(cmd_inf.in_type,Tango::DEV_VOID); - TS_ASSERT_EQUALS(cmd_inf.out_type,Tango::DEVVAR_STRINGARRAY); - TS_ASSERT_EQUALS(cmd_inf.in_type_desc,"Uninitialised"); - TS_ASSERT_EQUALS(cmd_inf.out_type_desc,"Device server sub device(s) list"); - } + CommandInfo cmd_inf = cmd_inf_list[15]; + TS_ASSERT_EQUALS(cmd_inf.cmd_name, "QuerySubDevice"); + TS_ASSERT_EQUALS(cmd_inf.in_type, Tango::DEV_VOID); + TS_ASSERT_EQUALS(cmd_inf.out_type, Tango::DEVVAR_STRINGARRAY); + TS_ASSERT_EQUALS(cmd_inf.in_type_desc, "Uninitialised"); + TS_ASSERT_EQUALS(cmd_inf.out_type_desc, "Device server sub device(s) list"); + } // Test QueryWizardClassProperty command_list_query - void test_command_list_query_QueryWizardClassProperty(void) - { + void test_command_list_query_QueryWizardClassProperty(void) + { // CommandInfo cmd_inf = dserver->command_query("QueryWizardClassProperty"); - CommandInfo cmd_inf = cmd_inf_list[16]; - TS_ASSERT_EQUALS(cmd_inf.cmd_name,"QueryWizardClassProperty"); - TS_ASSERT_EQUALS(cmd_inf.in_type,Tango::DEV_STRING); - TS_ASSERT_EQUALS(cmd_inf.out_type,Tango::DEVVAR_STRINGARRAY); - TS_ASSERT_EQUALS(cmd_inf.in_type_desc,"Class name"); - TS_ASSERT_EQUALS(cmd_inf.out_type_desc,"Class property list (name - description and default value)"); - } + CommandInfo cmd_inf = cmd_inf_list[16]; + TS_ASSERT_EQUALS(cmd_inf.cmd_name, "QueryWizardClassProperty"); + TS_ASSERT_EQUALS(cmd_inf.in_type, Tango::DEV_STRING); + TS_ASSERT_EQUALS(cmd_inf.out_type, Tango::DEVVAR_STRINGARRAY); + TS_ASSERT_EQUALS(cmd_inf.in_type_desc, "Class name"); + TS_ASSERT_EQUALS(cmd_inf.out_type_desc, "Class property list (name - description and default value)"); + } // Test QueryWizardDevProperty command_list_query - void test_command_list_query_QueryWizardDevProperty(void) - { + void test_command_list_query_QueryWizardDevProperty(void) + { // CommandInfo cmd_inf = dserver->command_query("QueryWizardDevProperty"); - CommandInfo cmd_inf = cmd_inf_list[17]; - TS_ASSERT_EQUALS(cmd_inf.cmd_name,"QueryWizardDevProperty"); - TS_ASSERT_EQUALS(cmd_inf.in_type,Tango::DEV_STRING); - TS_ASSERT_EQUALS(cmd_inf.out_type,Tango::DEVVAR_STRINGARRAY); - TS_ASSERT_EQUALS(cmd_inf.in_type_desc,"Class name"); - TS_ASSERT_EQUALS(cmd_inf.out_type_desc,"Device property list (name - description and default value)"); - } + CommandInfo cmd_inf = cmd_inf_list[17]; + TS_ASSERT_EQUALS(cmd_inf.cmd_name, "QueryWizardDevProperty"); + TS_ASSERT_EQUALS(cmd_inf.in_type, Tango::DEV_STRING); + TS_ASSERT_EQUALS(cmd_inf.out_type, Tango::DEVVAR_STRINGARRAY); + TS_ASSERT_EQUALS(cmd_inf.in_type_desc, "Class name"); + TS_ASSERT_EQUALS(cmd_inf.out_type_desc, "Device property list (name - description and default value)"); + } // Test ReLockDevices command_list_query - void test_command_list_query_ReLockDevices(void) - { + void test_command_list_query_ReLockDevices(void) + { // CommandInfo cmd_inf = dserver->command_query("ReLockDevices"); - CommandInfo cmd_inf = cmd_inf_list[18]; - TS_ASSERT_EQUALS(cmd_inf.cmd_name,"ReLockDevices"); - TS_ASSERT_EQUALS(cmd_inf.in_type,Tango::DEVVAR_STRINGARRAY); - TS_ASSERT_EQUALS(cmd_inf.out_type,Tango::DEV_VOID); - TS_ASSERT_EQUALS(cmd_inf.in_type_desc,"Device(s) name"); - TS_ASSERT_EQUALS(cmd_inf.out_type_desc,"Uninitialised"); - } + CommandInfo cmd_inf = cmd_inf_list[18]; + TS_ASSERT_EQUALS(cmd_inf.cmd_name, "ReLockDevices"); + TS_ASSERT_EQUALS(cmd_inf.in_type, Tango::DEVVAR_STRINGARRAY); + TS_ASSERT_EQUALS(cmd_inf.out_type, Tango::DEV_VOID); + TS_ASSERT_EQUALS(cmd_inf.in_type_desc, "Device(s) name"); + TS_ASSERT_EQUALS(cmd_inf.out_type_desc, "Uninitialised"); + } // Test RemObjPolling command_list_query - void test_command_list_query_RemObjPolling(void) - { + void test_command_list_query_RemObjPolling(void) + { // CommandInfo cmd_inf = dserver->command_query("RemObjPolling"); - CommandInfo cmd_inf = cmd_inf_list[19]; - TS_ASSERT_EQUALS(cmd_inf.cmd_name,"RemObjPolling"); - TS_ASSERT_EQUALS(cmd_inf.in_type,Tango::DEVVAR_STRINGARRAY); - TS_ASSERT_EQUALS(cmd_inf.out_type,Tango::DEV_VOID); - TS_ASSERT_EQUALS(cmd_inf.in_type_desc,"Str[0]=Device name. Str[1]=Object type. Str[2]=Object name"); - TS_ASSERT_EQUALS(cmd_inf.out_type_desc,"Uninitialised"); - } + CommandInfo cmd_inf = cmd_inf_list[19]; + TS_ASSERT_EQUALS(cmd_inf.cmd_name, "RemObjPolling"); + TS_ASSERT_EQUALS(cmd_inf.in_type, Tango::DEVVAR_STRINGARRAY); + TS_ASSERT_EQUALS(cmd_inf.out_type, Tango::DEV_VOID); + TS_ASSERT_EQUALS(cmd_inf.in_type_desc, "Str[0]=Device name. Str[1]=Object type. Str[2]=Object name"); + TS_ASSERT_EQUALS(cmd_inf.out_type_desc, "Uninitialised"); + } // Test RemoveLoggingTarget command_list_query - void test_command_list_query_RemoveLoggingTarget(void) - { + void test_command_list_query_RemoveLoggingTarget(void) + { // CommandInfo cmd_inf = dserver->command_query("RemoveLoggingTarget"); - CommandInfo cmd_inf = cmd_inf_list[20]; - TS_ASSERT_EQUALS(cmd_inf.cmd_name,"RemoveLoggingTarget"); - TS_ASSERT_EQUALS(cmd_inf.in_type,Tango::DEVVAR_STRINGARRAY); - TS_ASSERT_EQUALS(cmd_inf.out_type,Tango::DEV_VOID); - TS_ASSERT_EQUALS(cmd_inf.in_type_desc,"Str[i]=Device-name. Str[i+1]=Target-type::Target-name"); - TS_ASSERT_EQUALS(cmd_inf.out_type_desc,"Uninitialised"); - } + CommandInfo cmd_inf = cmd_inf_list[20]; + TS_ASSERT_EQUALS(cmd_inf.cmd_name, "RemoveLoggingTarget"); + TS_ASSERT_EQUALS(cmd_inf.in_type, Tango::DEVVAR_STRINGARRAY); + TS_ASSERT_EQUALS(cmd_inf.out_type, Tango::DEV_VOID); + TS_ASSERT_EQUALS(cmd_inf.in_type_desc, "Str[i]=Device-name. Str[i+1]=Target-type::Target-name"); + TS_ASSERT_EQUALS(cmd_inf.out_type_desc, "Uninitialised"); + } // Test RestartServer command_list_query - void test_command_list_query_RestartServer(void) - { + void test_command_list_query_RestartServer(void) + { // CommandInfo cmd_inf = dserver->command_query("RestartServer"); - CommandInfo cmd_inf = cmd_inf_list[21]; - TS_ASSERT_EQUALS(cmd_inf.cmd_name,"RestartServer"); - TS_ASSERT_EQUALS(cmd_inf.in_type,Tango::DEV_VOID); - TS_ASSERT_EQUALS(cmd_inf.out_type,Tango::DEV_VOID); - TS_ASSERT_EQUALS(cmd_inf.in_type_desc,"Uninitialised"); - TS_ASSERT_EQUALS(cmd_inf.out_type_desc,"Uninitialised"); - } + CommandInfo cmd_inf = cmd_inf_list[21]; + TS_ASSERT_EQUALS(cmd_inf.cmd_name, "RestartServer"); + TS_ASSERT_EQUALS(cmd_inf.in_type, Tango::DEV_VOID); + TS_ASSERT_EQUALS(cmd_inf.out_type, Tango::DEV_VOID); + TS_ASSERT_EQUALS(cmd_inf.in_type_desc, "Uninitialised"); + TS_ASSERT_EQUALS(cmd_inf.out_type_desc, "Uninitialised"); + } // Test SetLoggingLevel command_list_query - void test_command_list_query_SetLoggingLevel(void) - { + void test_command_list_query_SetLoggingLevel(void) + { // CommandInfo cmd_inf = dserver->command_query("SetLoggingLevel"); - CommandInfo cmd_inf = cmd_inf_list[22]; - TS_ASSERT_EQUALS(cmd_inf.cmd_name,"SetLoggingLevel"); - TS_ASSERT_EQUALS(cmd_inf.in_type,Tango::DEVVAR_LONGSTRINGARRAY); - TS_ASSERT_EQUALS(cmd_inf.out_type,Tango::DEV_VOID); - TS_ASSERT_EQUALS(cmd_inf.in_type_desc,"Lg[i]=Logging Level. Str[i]=Device name."); - TS_ASSERT_EQUALS(cmd_inf.out_type_desc,"Uninitialised"); - } + CommandInfo cmd_inf = cmd_inf_list[22]; + TS_ASSERT_EQUALS(cmd_inf.cmd_name, "SetLoggingLevel"); + TS_ASSERT_EQUALS(cmd_inf.in_type, Tango::DEVVAR_LONGSTRINGARRAY); + TS_ASSERT_EQUALS(cmd_inf.out_type, Tango::DEV_VOID); + TS_ASSERT_EQUALS(cmd_inf.in_type_desc, "Lg[i]=Logging Level. Str[i]=Device name."); + TS_ASSERT_EQUALS(cmd_inf.out_type_desc, "Uninitialised"); + } // Test StartLogging command_list_query - void test_command_list_query_StartLogging(void) - { + void test_command_list_query_StartLogging(void) + { // CommandInfo cmd_inf = dserver->command_query("StartLogging"); - CommandInfo cmd_inf = cmd_inf_list[23]; - TS_ASSERT_EQUALS(cmd_inf.cmd_name,"StartLogging"); - TS_ASSERT_EQUALS(cmd_inf.in_type,Tango::DEV_VOID); - TS_ASSERT_EQUALS(cmd_inf.out_type,Tango::DEV_VOID); - TS_ASSERT_EQUALS(cmd_inf.in_type_desc,"Uninitialised"); - TS_ASSERT_EQUALS(cmd_inf.out_type_desc,"Uninitialised"); - } + CommandInfo cmd_inf = cmd_inf_list[23]; + TS_ASSERT_EQUALS(cmd_inf.cmd_name, "StartLogging"); + TS_ASSERT_EQUALS(cmd_inf.in_type, Tango::DEV_VOID); + TS_ASSERT_EQUALS(cmd_inf.out_type, Tango::DEV_VOID); + TS_ASSERT_EQUALS(cmd_inf.in_type_desc, "Uninitialised"); + TS_ASSERT_EQUALS(cmd_inf.out_type_desc, "Uninitialised"); + } // Test StartPolling command_list_query - void test_command_list_query_StartPolling(void) - { + void test_command_list_query_StartPolling(void) + { // CommandInfo cmd_inf = dserver->command_query("StartPolling"); - CommandInfo cmd_inf = cmd_inf_list[24]; - TS_ASSERT_EQUALS(cmd_inf.cmd_name,"StartPolling"); - TS_ASSERT_EQUALS(cmd_inf.in_type,Tango::DEV_VOID); - TS_ASSERT_EQUALS(cmd_inf.out_type,Tango::DEV_VOID); - TS_ASSERT_EQUALS(cmd_inf.in_type_desc,"Uninitialised"); - TS_ASSERT_EQUALS(cmd_inf.out_type_desc,"Uninitialised"); - } + CommandInfo cmd_inf = cmd_inf_list[24]; + TS_ASSERT_EQUALS(cmd_inf.cmd_name, "StartPolling"); + TS_ASSERT_EQUALS(cmd_inf.in_type, Tango::DEV_VOID); + TS_ASSERT_EQUALS(cmd_inf.out_type, Tango::DEV_VOID); + TS_ASSERT_EQUALS(cmd_inf.in_type_desc, "Uninitialised"); + TS_ASSERT_EQUALS(cmd_inf.out_type_desc, "Uninitialised"); + } // Test State command_list_query - void test_command_list_query_State(void) - { + void test_command_list_query_State(void) + { // CommandInfo cmd_inf = dserver->command_query("State"); - CommandInfo cmd_inf = cmd_inf_list[25]; - TS_ASSERT_EQUALS(cmd_inf.cmd_name,"State"); - TS_ASSERT_EQUALS(cmd_inf.in_type,Tango::DEV_VOID); - TS_ASSERT_EQUALS(cmd_inf.out_type,Tango::DEV_STATE); - TS_ASSERT_EQUALS(cmd_inf.in_type_desc,"Uninitialised"); - TS_ASSERT_EQUALS(cmd_inf.out_type_desc,"Device state"); - } + CommandInfo cmd_inf = cmd_inf_list[25]; + TS_ASSERT_EQUALS(cmd_inf.cmd_name, "State"); + TS_ASSERT_EQUALS(cmd_inf.in_type, Tango::DEV_VOID); + TS_ASSERT_EQUALS(cmd_inf.out_type, Tango::DEV_STATE); + TS_ASSERT_EQUALS(cmd_inf.in_type_desc, "Uninitialised"); + TS_ASSERT_EQUALS(cmd_inf.out_type_desc, "Device state"); + } // Test Status command_list_query - void test_command_list_query_Status(void) - { + void test_command_list_query_Status(void) + { // CommandInfo cmd_inf = dserver->command_query("Status"); - CommandInfo cmd_inf = cmd_inf_list[26]; - TS_ASSERT_EQUALS(cmd_inf.cmd_name,"Status"); - TS_ASSERT_EQUALS(cmd_inf.in_type,Tango::DEV_VOID); - TS_ASSERT_EQUALS(cmd_inf.out_type,Tango::DEV_STRING); - TS_ASSERT_EQUALS(cmd_inf.in_type_desc,"Uninitialised"); - TS_ASSERT_EQUALS(cmd_inf.out_type_desc,"Device status"); - } + CommandInfo cmd_inf = cmd_inf_list[26]; + TS_ASSERT_EQUALS(cmd_inf.cmd_name, "Status"); + TS_ASSERT_EQUALS(cmd_inf.in_type, Tango::DEV_VOID); + TS_ASSERT_EQUALS(cmd_inf.out_type, Tango::DEV_STRING); + TS_ASSERT_EQUALS(cmd_inf.in_type_desc, "Uninitialised"); + TS_ASSERT_EQUALS(cmd_inf.out_type_desc, "Device status"); + } // Test StopLogging command_list_query - void test_command_list_query_StopLogging(void) - { + void test_command_list_query_StopLogging(void) + { // CommandInfo cmd_inf = dserver->command_query("StopLogging"); - CommandInfo cmd_inf = cmd_inf_list[27]; - TS_ASSERT_EQUALS(cmd_inf.cmd_name,"StopLogging"); - TS_ASSERT_EQUALS(cmd_inf.in_type,Tango::DEV_VOID); - TS_ASSERT_EQUALS(cmd_inf.out_type,Tango::DEV_VOID); - TS_ASSERT_EQUALS(cmd_inf.in_type_desc,"Uninitialised"); - TS_ASSERT_EQUALS(cmd_inf.out_type_desc,"Uninitialised"); - } + CommandInfo cmd_inf = cmd_inf_list[27]; + TS_ASSERT_EQUALS(cmd_inf.cmd_name, "StopLogging"); + TS_ASSERT_EQUALS(cmd_inf.in_type, Tango::DEV_VOID); + TS_ASSERT_EQUALS(cmd_inf.out_type, Tango::DEV_VOID); + TS_ASSERT_EQUALS(cmd_inf.in_type_desc, "Uninitialised"); + TS_ASSERT_EQUALS(cmd_inf.out_type_desc, "Uninitialised"); + } // Test StopPolling command_list_query - void test_command_list_query_StopPolling(void) - { + void test_command_list_query_StopPolling(void) + { // CommandInfo cmd_inf = dserver->command_query("StopPolling"); - CommandInfo cmd_inf = cmd_inf_list[28]; - TS_ASSERT_EQUALS(cmd_inf.cmd_name,"StopPolling"); - TS_ASSERT_EQUALS(cmd_inf.in_type,Tango::DEV_VOID); - TS_ASSERT_EQUALS(cmd_inf.out_type,Tango::DEV_VOID); - TS_ASSERT_EQUALS(cmd_inf.in_type_desc,"Uninitialised"); - TS_ASSERT_EQUALS(cmd_inf.out_type_desc,"Uninitialised"); - } + CommandInfo cmd_inf = cmd_inf_list[28]; + TS_ASSERT_EQUALS(cmd_inf.cmd_name, "StopPolling"); + TS_ASSERT_EQUALS(cmd_inf.in_type, Tango::DEV_VOID); + TS_ASSERT_EQUALS(cmd_inf.out_type, Tango::DEV_VOID); + TS_ASSERT_EQUALS(cmd_inf.in_type_desc, "Uninitialised"); + TS_ASSERT_EQUALS(cmd_inf.out_type_desc, "Uninitialised"); + } // Test UnLockDevice command_list_query - void test_command_list_query_UnLockDevice(void) - { + void test_command_list_query_UnLockDevice(void) + { // CommandInfo cmd_inf = dserver->command_query("UnLockDevice"); - CommandInfo cmd_inf = cmd_inf_list[29]; - TS_ASSERT_EQUALS(cmd_inf.cmd_name,"UnLockDevice"); - TS_ASSERT_EQUALS(cmd_inf.in_type,Tango::DEVVAR_LONGSTRINGARRAY); - TS_ASSERT_EQUALS(cmd_inf.out_type,Tango::DEV_LONG); - TS_ASSERT_EQUALS(cmd_inf.in_type_desc,"Str[x] = Device name(s). Lg[0] = Force flag"); - TS_ASSERT_EQUALS(cmd_inf.out_type_desc,"Device global lock counter"); - } + CommandInfo cmd_inf = cmd_inf_list[29]; + TS_ASSERT_EQUALS(cmd_inf.cmd_name, "UnLockDevice"); + TS_ASSERT_EQUALS(cmd_inf.in_type, Tango::DEVVAR_LONGSTRINGARRAY); + TS_ASSERT_EQUALS(cmd_inf.out_type, Tango::DEV_LONG); + TS_ASSERT_EQUALS(cmd_inf.in_type_desc, "Str[x] = Device name(s). Lg[0] = Force flag"); + TS_ASSERT_EQUALS(cmd_inf.out_type_desc, "Device global lock counter"); + } // Test UpdObjPollingPeriod command_list_query - void test_command_list_query_list_query_UpdObjPollingPeriod(void) - { + void test_command_list_query_list_query_UpdObjPollingPeriod(void) + { // CommandInfo cmd_inf = dserver->command_query("UpdObjPollingPeriod"); - CommandInfo cmd_inf = cmd_inf_list[30]; - TS_ASSERT_EQUALS(cmd_inf.cmd_name,"UpdObjPollingPeriod"); - TS_ASSERT_EQUALS(cmd_inf.in_type,Tango::DEVVAR_LONGSTRINGARRAY); - TS_ASSERT_EQUALS(cmd_inf.out_type,Tango::DEV_VOID); - TS_ASSERT_EQUALS(cmd_inf.in_type_desc,"Lg[0]=Upd period. Str[0]=Device name. Str[1]=Object type. Str[2]=Object name"); - TS_ASSERT_EQUALS(cmd_inf.out_type_desc,"Uninitialised"); - } + CommandInfo cmd_inf = cmd_inf_list[30]; + TS_ASSERT_EQUALS(cmd_inf.cmd_name, "UpdObjPollingPeriod"); + TS_ASSERT_EQUALS(cmd_inf.in_type, Tango::DEVVAR_LONGSTRINGARRAY); + TS_ASSERT_EQUALS(cmd_inf.out_type, Tango::DEV_VOID); + TS_ASSERT_EQUALS(cmd_inf.in_type_desc, + "Lg[0]=Upd period. Str[0]=Device name. Str[1]=Object type. Str[2]=Object name"); + TS_ASSERT_EQUALS(cmd_inf.out_type_desc, "Uninitialised"); + } // Test ZmqEventSubscriptionChange command_list_query - void test_command_list_query_ZMQEventSubscriptionChange(void) - { + void test_command_list_query_ZMQEventSubscriptionChange(void) + { // CommandInfo cmd_inf = dserver->command_query("ZmqEventSubscriptionChange"); - CommandInfo cmd_inf = cmd_inf_list[31]; - TS_ASSERT_EQUALS(cmd_inf.cmd_name,"ZmqEventSubscriptionChange"); - TS_ASSERT_EQUALS(cmd_inf.in_type,Tango::DEVVAR_STRINGARRAY); - TS_ASSERT_EQUALS(cmd_inf.out_type,Tango::DEVVAR_LONGSTRINGARRAY); - TS_ASSERT_EQUALS(cmd_inf.in_type_desc,"Event consumer wants to subscribe to.\n" - "device name, attribute/pipe name, action (\"subscribe\"), event name, \"\n" - "event name can take the following values:\n" - " \"change\",\n" - " \"quality\",\n" - " \"periodic\",\n" - " \"archive\",\n" - " \"user_event\",\n" - " \"attr_conf\",\n" - " \"data_ready\",\n" - " \"intr_change\",\n" - " \"pipe\"\n" - "\"info\" can also be used as single parameter to retrieve information about the heartbeat and event pub endpoints."); - TS_ASSERT_EQUALS(cmd_inf.out_type_desc,"Str[0] = Heartbeat pub endpoint - Str[1] = Event pub endpoint\n" - "...\n" - "Str[n] = Alternate Heartbeat pub endpoint - Str[n+1] = Alternate Event pub endpoint\n" - "Lg[0] = Tango lib release - Lg[1] = Device IDL release\n" - "Lg[2] = Subscriber HWM - Lg[3] = Multicast rate\n" - "Lg[4] = Multicast IVL - Lg[5] = ZMQ release"); - } - + CommandInfo cmd_inf = cmd_inf_list[31]; + TS_ASSERT_EQUALS(cmd_inf.cmd_name, "ZmqEventSubscriptionChange"); + TS_ASSERT_EQUALS(cmd_inf.in_type, Tango::DEVVAR_STRINGARRAY); + TS_ASSERT_EQUALS(cmd_inf.out_type, Tango::DEVVAR_LONGSTRINGARRAY); + TS_ASSERT_EQUALS(cmd_inf.in_type_desc, "Event consumer wants to subscribe to.\n" + "device name, attribute/pipe name, action (\"subscribe\"), event name, \"\n" + "event name can take the following values:\n" + " \"change\",\n" + " \"quality\",\n" + " \"periodic\",\n" + " \"archive\",\n" + " \"user_event\",\n" + " \"attr_conf\",\n" + " \"data_ready\",\n" + " \"intr_change\",\n" + " \"pipe\"\n" + "\"info\" can also be used as single parameter to retrieve information about the heartbeat and event pub endpoints."); + TS_ASSERT_EQUALS(cmd_inf.out_type_desc, "Str[0] = Heartbeat pub endpoint - Str[1] = Event pub endpoint\n" + "...\n" + "Str[n] = Alternate Heartbeat pub endpoint - Str[n+1] = Alternate Event pub endpoint\n" + "Lg[0] = Tango lib release - Lg[1] = Device IDL release\n" + "Lg[2] = Subscriber HWM - Lg[3] = Multicast rate\n" + "Lg[4] = Multicast IVL - Lg[5] = ZMQ release"); + } + + void test_command_IOPipeBlob_query(void) + { + CommandInfo info; + TS_ASSERT_THROWS_NOTHING(info = device1->command_query("IOPipeBlob")); + + TS_ASSERT_EQUALS(Tango::DEV_PIPE_BLOB, info.in_type); + TS_ASSERT_EQUALS(Tango::DEV_PIPE_BLOB, info.out_type); + } }; #undef cout #endif // CmdQueryTestSuite_h From e514b620cf65e1d7caa86f32cc61a607775a51f7 Mon Sep 17 00:00:00 2001 From: ingvord Date: Tue, 25 Jul 2017 15:58:14 +0200 Subject: [PATCH 13/21] Progress #378 extract/insert --- include/tango/server/command.h | 19 + src/server/command.cpp | 1140 +++++++++--------- test/cpp_test_suite/cpp_test_ds/TypeCmds.cpp | 16 +- 3 files changed, 622 insertions(+), 553 deletions(-) diff --git a/include/tango/server/command.h b/include/tango/server/command.h index f500c8403..afef4e100 100644 --- a/include/tango/server/command.h +++ b/include/tango/server/command.h @@ -741,6 +741,16 @@ virtual ~Command() {} * DevFailed exception specification */ void extract(const CORBA::Any &in, const Tango::DevEncoded *&data); + + /** + * Extracts DevPipeBlob from a CORBA Any object + * + * @param in the CORBA Any object + * @param data Reference to the extracted DevPipeBlob object + * @exception DevFailed If the Any object does not contains a data of the + * waited type. + */ + void extract(const CORBA::Any &in, DevPipeBlob *&data); //@} /**@name Insert methods. @@ -1219,6 +1229,14 @@ virtual ~Command() {} * DevFailed exception specification */ CORBA::Any *insert(Tango::DevEncoded *data); + + /** + * Inserts data into a new CORBA::Any. data is being deleted + * + * @param data data to wrap up in CORBA::Any + * @return data wrapped up in a new CORBA::Any + */ + CORBA::Any *insert(DevPipeBlob *data); //@} protected: @@ -1280,6 +1298,7 @@ virtual ~Command() {} { return ext; } + }; //============================================================================= diff --git a/src/server/command.cpp b/src/server/command.cpp index a9e61dae8..b76e8f171 100644 --- a/src/server/command.cpp +++ b/src/server/command.cpp @@ -55,105 +55,105 @@ namespace Tango //-------------------------------------------------------------------------- Command::Command(const char *s, - Tango::CmdArgType in, - Tango::CmdArgType out) -:name(s),in_type(in),out_type(out),ext(new CommandExt),poll_period(0) + Tango::CmdArgType in, + Tango::CmdArgType out) + : name(s), in_type(in), out_type(out), ext(new CommandExt), poll_period(0) { - cmd_disp_level = Tango::OPERATOR; - lower_name = name; - transform(lower_name.begin(),lower_name.end(),lower_name.begin(),::tolower); + cmd_disp_level = Tango::OPERATOR; + lower_name = name; + transform(lower_name.begin(), lower_name.end(), lower_name.begin(), ::tolower); } Command::Command(string &s, - Tango::CmdArgType in, - Tango::CmdArgType out) -:name(s),in_type(in),out_type(out),ext(new CommandExt),poll_period(0) + Tango::CmdArgType in, + Tango::CmdArgType out) + : name(s), in_type(in), out_type(out), ext(new CommandExt), poll_period(0) { - cmd_disp_level = Tango::OPERATOR; - lower_name = name; - transform(lower_name.begin(),lower_name.end(),lower_name.begin(),::tolower); + cmd_disp_level = Tango::OPERATOR; + lower_name = name; + transform(lower_name.begin(), lower_name.end(), lower_name.begin(), ::tolower); } Command::Command(const char *s, - Tango::CmdArgType in, - Tango::CmdArgType out, - const char *in_desc, - const char *out_desc) -:name(s),in_type(in),out_type(out),ext(new CommandExt),poll_period(0) + Tango::CmdArgType in, + Tango::CmdArgType out, + const char *in_desc, + const char *out_desc) + : name(s), in_type(in), out_type(out), ext(new CommandExt), poll_period(0) { - cmd_disp_level = Tango::OPERATOR; - if (in_desc != NULL) - in_type_desc = in_desc; - if (out_desc != NULL) - out_type_desc = out_desc; - lower_name = name; - transform(lower_name.begin(),lower_name.end(),lower_name.begin(),::tolower); + cmd_disp_level = Tango::OPERATOR; + if (in_desc != NULL) + in_type_desc = in_desc; + if (out_desc != NULL) + out_type_desc = out_desc; + lower_name = name; + transform(lower_name.begin(), lower_name.end(), lower_name.begin(), ::tolower); } Command::Command(string &s, - Tango::CmdArgType in, - Tango::CmdArgType out, - string &in_desc, - string &out_desc) -:name(s),in_type(in),out_type(out), -in_type_desc(in_desc),out_type_desc(out_desc),ext(new CommandExt),poll_period(0) + Tango::CmdArgType in, + Tango::CmdArgType out, + string &in_desc, + string &out_desc) + : name(s), in_type(in), out_type(out), + in_type_desc(in_desc), out_type_desc(out_desc), ext(new CommandExt), poll_period(0) { - cmd_disp_level = Tango::OPERATOR; - lower_name = name; - transform(lower_name.begin(),lower_name.end(),lower_name.begin(),::tolower); + cmd_disp_level = Tango::OPERATOR; + lower_name = name; + transform(lower_name.begin(), lower_name.end(), lower_name.begin(), ::tolower); } Command::Command(const char *s, - Tango::CmdArgType in, - Tango::CmdArgType out, - Tango::DispLevel level) -:name(s),in_type(in),out_type(out),ext(new CommandExt),poll_period(0) + Tango::CmdArgType in, + Tango::CmdArgType out, + Tango::DispLevel level) + : name(s), in_type(in), out_type(out), ext(new CommandExt), poll_period(0) { - cmd_disp_level = level; - lower_name = name; - transform(lower_name.begin(),lower_name.end(),lower_name.begin(),::tolower); + cmd_disp_level = level; + lower_name = name; + transform(lower_name.begin(), lower_name.end(), lower_name.begin(), ::tolower); } Command::Command(string &s, - Tango::CmdArgType in, - Tango::CmdArgType out, - Tango::DispLevel level) -:name(s),in_type(in),out_type(out),ext(new CommandExt),poll_period(0) + Tango::CmdArgType in, + Tango::CmdArgType out, + Tango::DispLevel level) + : name(s), in_type(in), out_type(out), ext(new CommandExt), poll_period(0) { - cmd_disp_level = level; - lower_name = name; - transform(lower_name.begin(),lower_name.end(),lower_name.begin(),::tolower); + cmd_disp_level = level; + lower_name = name; + transform(lower_name.begin(), lower_name.end(), lower_name.begin(), ::tolower); } Command::Command(const char *s, - Tango::CmdArgType in, - Tango::CmdArgType out, - const char *in_desc, - const char *out_desc, - Tango::DispLevel level) -:name(s),in_type(in),out_type(out),ext(new CommandExt),poll_period(0) -{ - cmd_disp_level = level; - if (in_desc != NULL) - in_type_desc = in_desc; - if (out_desc != NULL) - out_type_desc = out_desc; - lower_name = name; - transform(lower_name.begin(),lower_name.end(),lower_name.begin(),::tolower); + Tango::CmdArgType in, + Tango::CmdArgType out, + const char *in_desc, + const char *out_desc, + Tango::DispLevel level) + : name(s), in_type(in), out_type(out), ext(new CommandExt), poll_period(0) +{ + cmd_disp_level = level; + if (in_desc != NULL) + in_type_desc = in_desc; + if (out_desc != NULL) + out_type_desc = out_desc; + lower_name = name; + transform(lower_name.begin(), lower_name.end(), lower_name.begin(), ::tolower); } Command::Command(string &s, - Tango::CmdArgType in, - Tango::CmdArgType out, - string &in_desc, - string &out_desc, - Tango::DispLevel level) -:name(s),in_type(in),out_type(out), -in_type_desc(in_desc),out_type_desc(out_desc),ext(new CommandExt),poll_period(0) + Tango::CmdArgType in, + Tango::CmdArgType out, + string &in_desc, + string &out_desc, + Tango::DispLevel level) + : name(s), in_type(in), out_type(out), + in_type_desc(in_desc), out_type_desc(out_desc), ext(new CommandExt), poll_period(0) { - cmd_disp_level = level; - lower_name = name; - transform(lower_name.begin(),lower_name.end(),lower_name.begin(),::tolower); + cmd_disp_level = level; + lower_name = name; + transform(lower_name.begin(), lower_name.end(), lower_name.begin(), ::tolower); } //+---------------------------------------------------------------------------- @@ -167,162 +167,168 @@ in_type_desc(in_desc),out_type_desc(out_desc),ext(new CommandExt),poll_period(0) void Command::throw_bad_type(const char *type) { - TangoSys_OMemStream o; + TangoSys_OMemStream o; - o << "Incompatible command argument type, expected type is : Tango::" << type << ends; - Except::throw_exception((const char *)API_IncompatibleCmdArgumentType, - o.str(), - (const char *)"Command::extract()"); + o << "Incompatible command argument type, expected type is : Tango::" << type << ends; + Except::throw_exception((const char *) API_IncompatibleCmdArgumentType, + o.str(), + (const char *) "Command::extract()"); } -void Command::extract(const CORBA::Any &in,Tango::DevBoolean &data) +void Command::extract(const CORBA::Any &in, Tango::DevBoolean &data) { - if ((in >>= CORBA::Any::to_boolean(data)) == false) - throw_bad_type("DevBoolean"); + if ((in >>= CORBA::Any::to_boolean(data)) == false) + throw_bad_type("DevBoolean"); } -void Command::extract(const CORBA::Any &in,Tango::DevShort &data) +void Command::extract(const CORBA::Any &in, Tango::DevShort &data) { - if ((in >>= data) == false) - throw_bad_type("DevShort"); + if ((in >>= data) == false) + throw_bad_type("DevShort"); } -void Command::extract(const CORBA::Any &in,Tango::DevLong &data) +void Command::extract(const CORBA::Any &in, Tango::DevLong &data) { - if ((in >>= data) == false) - throw_bad_type("DevLong"); + if ((in >>= data) == false) + throw_bad_type("DevLong"); } -void Command::extract(const CORBA::Any &in,Tango::DevLong64 &data) +void Command::extract(const CORBA::Any &in, Tango::DevLong64 &data) { - if ((in >>= data) == false) - throw_bad_type("DevLong64"); + if ((in >>= data) == false) + throw_bad_type("DevLong64"); } -void Command::extract(const CORBA::Any &in,Tango::DevFloat &data) +void Command::extract(const CORBA::Any &in, Tango::DevFloat &data) { - if ((in >>= data) == false) - throw_bad_type("DevFloat"); + if ((in >>= data) == false) + throw_bad_type("DevFloat"); } -void Command::extract(const CORBA::Any &in,Tango::DevDouble &data) +void Command::extract(const CORBA::Any &in, Tango::DevDouble &data) { - if ((in >>= data) == false) - throw_bad_type("DevDouble"); + if ((in >>= data) == false) + throw_bad_type("DevDouble"); } -void Command::extract(const CORBA::Any &in,Tango::DevUShort &data) +void Command::extract(const CORBA::Any &in, Tango::DevUShort &data) { - if ((in >>= data) == false) - throw_bad_type("DevUShort"); + if ((in >>= data) == false) + throw_bad_type("DevUShort"); } -void Command::extract(const CORBA::Any &in,Tango::DevULong &data) +void Command::extract(const CORBA::Any &in, Tango::DevULong &data) { - if ((in >>= data) == false) - throw_bad_type("DevULong"); + if ((in >>= data) == false) + throw_bad_type("DevULong"); } -void Command::extract(const CORBA::Any &in,Tango::DevULong64 &data) +void Command::extract(const CORBA::Any &in, Tango::DevULong64 &data) { - if ((in >>= data) == false) - throw_bad_type("DevULong64"); + if ((in >>= data) == false) + throw_bad_type("DevULong64"); } -void Command::extract(const CORBA::Any &in,Tango::DevString &data) +void Command::extract(const CORBA::Any &in, Tango::DevString &data) { - if ((in >>= const_cast(data)) == false) - throw_bad_type("DevString"); + if ((in >>= const_cast(data)) == false) + throw_bad_type("DevString"); } -void Command::extract(const CORBA::Any &in,const char *&data) +void Command::extract(const CORBA::Any &in, const char *&data) { - if ((in >>= data) == false) - throw_bad_type("ConstDevString"); + if ((in >>= data) == false) + throw_bad_type("ConstDevString"); } -void Command::extract(const CORBA::Any &in,const Tango::DevVarCharArray *&data) +void Command::extract(const CORBA::Any &in, const Tango::DevVarCharArray *&data) { - if ((in >>= data) == false) - throw_bad_type("DevVarCharArray"); + if ((in >>= data) == false) + throw_bad_type("DevVarCharArray"); } -void Command::extract(const CORBA::Any &in,const Tango::DevVarShortArray *&data) +void Command::extract(const CORBA::Any &in, const Tango::DevVarShortArray *&data) { - if ((in >>= data) == false) - throw_bad_type("DevVarShortArray"); + if ((in >>= data) == false) + throw_bad_type("DevVarShortArray"); } -void Command::extract(const CORBA::Any &in,const Tango::DevVarLongArray *&data) +void Command::extract(const CORBA::Any &in, const Tango::DevVarLongArray *&data) { - if ((in >>= data) == false) - throw_bad_type("DevVarLongArray"); + if ((in >>= data) == false) + throw_bad_type("DevVarLongArray"); } -void Command::extract(const CORBA::Any &in,const Tango::DevVarLong64Array *&data) +void Command::extract(const CORBA::Any &in, const Tango::DevVarLong64Array *&data) { - if ((in >>= data) == false) - throw_bad_type("DevVarLong64Array"); + if ((in >>= data) == false) + throw_bad_type("DevVarLong64Array"); } -void Command::extract(const CORBA::Any &in,const Tango::DevVarFloatArray *&data) +void Command::extract(const CORBA::Any &in, const Tango::DevVarFloatArray *&data) { - if ((in >>= data) == false) - throw_bad_type("DevVarFloatArray"); + if ((in >>= data) == false) + throw_bad_type("DevVarFloatArray"); } -void Command::extract(const CORBA::Any &in,const Tango::DevVarDoubleArray *&data) +void Command::extract(const CORBA::Any &in, const Tango::DevVarDoubleArray *&data) { - if ((in >>= data) == false) - throw_bad_type("DevVarDoubleArray"); + if ((in >>= data) == false) + throw_bad_type("DevVarDoubleArray"); } -void Command::extract(const CORBA::Any &in,const Tango::DevVarUShortArray *&data) +void Command::extract(const CORBA::Any &in, const Tango::DevVarUShortArray *&data) { - if ((in >>= data) == false) - throw_bad_type("DevVarUShortArray"); + if ((in >>= data) == false) + throw_bad_type("DevVarUShortArray"); } -void Command::extract(const CORBA::Any &in,const Tango::DevVarULongArray *&data) +void Command::extract(const CORBA::Any &in, const Tango::DevVarULongArray *&data) { - if ((in >>= data) == false) - throw_bad_type("DevVarULongArray"); + if ((in >>= data) == false) + throw_bad_type("DevVarULongArray"); } -void Command::extract(const CORBA::Any &in,const Tango::DevVarULong64Array *&data) +void Command::extract(const CORBA::Any &in, const Tango::DevVarULong64Array *&data) { - if ((in >>= data) == false) - throw_bad_type("DevVarULong64Array"); + if ((in >>= data) == false) + throw_bad_type("DevVarULong64Array"); } -void Command::extract(const CORBA::Any &in,const Tango::DevVarStringArray *&data) +void Command::extract(const CORBA::Any &in, const Tango::DevVarStringArray *&data) { - if ((in >>= data) == false) - throw_bad_type("DevVarStringArray"); + if ((in >>= data) == false) + throw_bad_type("DevVarStringArray"); } -void Command::extract(const CORBA::Any &in,const Tango::DevVarLongStringArray *&data) +void Command::extract(const CORBA::Any &in, const Tango::DevVarLongStringArray *&data) { - if ((in >>= data) == false) - throw_bad_type("DevVarLongStringArray"); + if ((in >>= data) == false) + throw_bad_type("DevVarLongStringArray"); } -void Command::extract(const CORBA::Any &in,const Tango::DevVarDoubleStringArray *&data) +void Command::extract(const CORBA::Any &in, const Tango::DevVarDoubleStringArray *&data) { - if ((in >>= data) == false) - throw_bad_type("DevVarDoubleStringArray"); + if ((in >>= data) == false) + throw_bad_type("DevVarDoubleStringArray"); } -void Command::extract(const CORBA::Any &in,Tango::DevState &data) +void Command::extract(const CORBA::Any &in, Tango::DevState &data) { - if ((in >>= data) == false) - throw_bad_type("DevState"); + if ((in >>= data) == false) + throw_bad_type("DevState"); } -void Command::extract(const CORBA::Any &in,const Tango::DevEncoded *&data) +void Command::extract(const CORBA::Any &in, const Tango::DevEncoded *&data) { - if ((in >>= data) == false) - throw_bad_type("DevEncoded"); + if ((in >>= data) == false) + throw_bad_type("DevEncoded"); +} + +void Command::extract(const CORBA::Any &in, Tango::DevPipeBlob *&data) +{ + if ((in >>= data) == false) + throw_bad_type("DevPipeBlob"); } //+---------------------------------------------------------------------------- @@ -336,385 +342,396 @@ void Command::extract(const CORBA::Any &in,const Tango::DevEncoded *&data) void Command::alloc_any(CORBA::Any *&any_ptr) { - try - { - any_ptr = new CORBA::Any(); - } - catch (bad_alloc &) - { - Except::throw_exception((const char *)API_MemoryAllocation, - (const char *)"Can't allocate memory in server", - (const char *)"Command::alloc_any()"); - } + try + { + any_ptr = new CORBA::Any(); + } + catch (bad_alloc &) + { + Except::throw_exception((const char *) API_MemoryAllocation, + (const char *) "Can't allocate memory in server", + (const char *) "Command::alloc_any()"); + } } CORBA::Any *Command::insert() { - CORBA::Any *out_any; - alloc_any(out_any); - return out_any; + CORBA::Any *out_any; + alloc_any(out_any); + return out_any; } CORBA::Any *Command::insert(Tango::DevBoolean data) { - CORBA::Any *out_any; - alloc_any(out_any); - CORBA::Any::from_boolean tmp(data); + CORBA::Any *out_any; + alloc_any(out_any); + CORBA::Any::from_boolean tmp(data); - (*out_any) <<= tmp; - return out_any; + (*out_any) <<= tmp; + return out_any; } CORBA::Any *Command::insert(Tango::DevShort data) { - CORBA::Any *out_any; - alloc_any(out_any); + CORBA::Any *out_any; + alloc_any(out_any); - (*out_any) <<= data; - return out_any; + (*out_any) <<= data; + return out_any; } CORBA::Any *Command::insert(Tango::DevLong data) { - CORBA::Any *out_any; - alloc_any(out_any); + CORBA::Any *out_any; + alloc_any(out_any); - (*out_any) <<= data; - return out_any; + (*out_any) <<= data; + return out_any; } CORBA::Any *Command::insert(Tango::DevLong64 data) { - CORBA::Any *out_any; - alloc_any(out_any); + CORBA::Any *out_any; + alloc_any(out_any); - (*out_any) <<= data; - return out_any; + (*out_any) <<= data; + return out_any; } CORBA::Any *Command::insert(Tango::DevFloat data) { - CORBA::Any *out_any; - alloc_any(out_any); + CORBA::Any *out_any; + alloc_any(out_any); - (*out_any) <<= data; - return out_any; + (*out_any) <<= data; + return out_any; } CORBA::Any *Command::insert(Tango::DevDouble data) { - CORBA::Any *out_any; - alloc_any(out_any); + CORBA::Any *out_any; + alloc_any(out_any); - (*out_any) <<= data; - return out_any; + (*out_any) <<= data; + return out_any; } CORBA::Any *Command::insert(Tango::DevUShort data) { - CORBA::Any *out_any; - alloc_any(out_any); + CORBA::Any *out_any; + alloc_any(out_any); - (*out_any) <<= data; - return out_any; + (*out_any) <<= data; + return out_any; } CORBA::Any *Command::insert(Tango::DevULong data) { - CORBA::Any *out_any; - alloc_any(out_any); + CORBA::Any *out_any; + alloc_any(out_any); - (*out_any) <<= data; - return out_any; + (*out_any) <<= data; + return out_any; } CORBA::Any *Command::insert(Tango::DevULong64 data) { - CORBA::Any *out_any; - alloc_any(out_any); + CORBA::Any *out_any; + alloc_any(out_any); - (*out_any) <<= data; - return out_any; + (*out_any) <<= data; + return out_any; } CORBA::Any *Command::insert(Tango::DevString data) { - CORBA::Any *out_any; - alloc_any(out_any); + CORBA::Any *out_any; + alloc_any(out_any); - (*out_any) <<= data; - delete [] data; + (*out_any) <<= data; + delete[] data; - return out_any; + return out_any; } CORBA::Any *Command::insert(const char *data) { - CORBA::Any *out_any; - alloc_any(out_any); + CORBA::Any *out_any; + alloc_any(out_any); - (*out_any) <<= data; - return out_any; + (*out_any) <<= data; + return out_any; } CORBA::Any *Command::insert(Tango::DevVarCharArray &data) { - CORBA::Any *out_any; - alloc_any(out_any); + CORBA::Any *out_any; + alloc_any(out_any); - (*out_any) <<= data; - return out_any; + (*out_any) <<= data; + return out_any; } CORBA::Any *Command::insert(Tango::DevVarCharArray *data) { - CORBA::Any *out_any; - alloc_any(out_any); + CORBA::Any *out_any; + alloc_any(out_any); - (*out_any) <<= (*data); - delete data; + (*out_any) <<= (*data); + delete data; - return out_any; + return out_any; } CORBA::Any *Command::insert(Tango::DevVarShortArray &data) { - CORBA::Any *out_any; - alloc_any(out_any); + CORBA::Any *out_any; + alloc_any(out_any); - (*out_any) <<= data; - return out_any; + (*out_any) <<= data; + return out_any; } CORBA::Any *Command::insert(Tango::DevVarShortArray *data) { - CORBA::Any *out_any; - alloc_any(out_any); + CORBA::Any *out_any; + alloc_any(out_any); - (*out_any) <<= (*data); - delete data; + (*out_any) <<= (*data); + delete data; - return out_any; + return out_any; } CORBA::Any *Command::insert(Tango::DevVarLongArray &data) { - CORBA::Any *out_any; - alloc_any(out_any); + CORBA::Any *out_any; + alloc_any(out_any); - (*out_any) <<= data; - return out_any; + (*out_any) <<= data; + return out_any; } CORBA::Any *Command::insert(Tango::DevVarLongArray *data) { - CORBA::Any *out_any; - alloc_any(out_any); + CORBA::Any *out_any; + alloc_any(out_any); - (*out_any) <<= (*data); - delete data; + (*out_any) <<= (*data); + delete data; - return out_any; + return out_any; } CORBA::Any *Command::insert(Tango::DevVarLong64Array &data) { - CORBA::Any *out_any; - alloc_any(out_any); + CORBA::Any *out_any; + alloc_any(out_any); - (*out_any) <<= data; - return out_any; + (*out_any) <<= data; + return out_any; } CORBA::Any *Command::insert(Tango::DevVarLong64Array *data) { - CORBA::Any *out_any; - alloc_any(out_any); + CORBA::Any *out_any; + alloc_any(out_any); - (*out_any) <<= (*data); - delete data; + (*out_any) <<= (*data); + delete data; - return out_any; + return out_any; } CORBA::Any *Command::insert(Tango::DevVarFloatArray &data) { - CORBA::Any *out_any; - alloc_any(out_any); + CORBA::Any *out_any; + alloc_any(out_any); - (*out_any) <<= data; - return out_any; + (*out_any) <<= data; + return out_any; } CORBA::Any *Command::insert(Tango::DevVarFloatArray *data) { - CORBA::Any *out_any; - alloc_any(out_any); + CORBA::Any *out_any; + alloc_any(out_any); - (*out_any) <<= (*data); - delete data; + (*out_any) <<= (*data); + delete data; - return out_any; + return out_any; } CORBA::Any *Command::insert(Tango::DevVarDoubleArray &data) { - CORBA::Any *out_any; - alloc_any(out_any); + CORBA::Any *out_any; + alloc_any(out_any); - (*out_any) <<= data; - return out_any; + (*out_any) <<= data; + return out_any; } CORBA::Any *Command::insert(Tango::DevVarDoubleArray *data) { - CORBA::Any *out_any; - alloc_any(out_any); + CORBA::Any *out_any; + alloc_any(out_any); - (*out_any) <<= (*data); - delete data; + (*out_any) <<= (*data); + delete data; - return out_any; + return out_any; } CORBA::Any *Command::insert(Tango::DevVarUShortArray &data) { - CORBA::Any *out_any; - alloc_any(out_any); + CORBA::Any *out_any; + alloc_any(out_any); - (*out_any) <<= data; - return out_any; + (*out_any) <<= data; + return out_any; } CORBA::Any *Command::insert(Tango::DevVarUShortArray *data) { - CORBA::Any *out_any; - alloc_any(out_any); + CORBA::Any *out_any; + alloc_any(out_any); - (*out_any) <<= (*data); - delete data; + (*out_any) <<= (*data); + delete data; - return out_any; + return out_any; } CORBA::Any *Command::insert(Tango::DevVarULongArray &data) { - CORBA::Any *out_any; - alloc_any(out_any); + CORBA::Any *out_any; + alloc_any(out_any); - (*out_any) <<= data; - return out_any; + (*out_any) <<= data; + return out_any; } CORBA::Any *Command::insert(Tango::DevVarULongArray *data) { - CORBA::Any *out_any; - alloc_any(out_any); + CORBA::Any *out_any; + alloc_any(out_any); - (*out_any) <<= (*data); - delete data; + (*out_any) <<= (*data); + delete data; - return out_any; + return out_any; } CORBA::Any *Command::insert(Tango::DevVarULong64Array &data) { - CORBA::Any *out_any; - alloc_any(out_any); + CORBA::Any *out_any; + alloc_any(out_any); - (*out_any) <<= data; - return out_any; + (*out_any) <<= data; + return out_any; } CORBA::Any *Command::insert(Tango::DevVarULong64Array *data) { - CORBA::Any *out_any; - alloc_any(out_any); + CORBA::Any *out_any; + alloc_any(out_any); - (*out_any) <<= (*data); - delete data; + (*out_any) <<= (*data); + delete data; - return out_any; + return out_any; } CORBA::Any *Command::insert(Tango::DevVarStringArray &data) { - CORBA::Any *out_any; - alloc_any(out_any); + CORBA::Any *out_any; + alloc_any(out_any); - (*out_any) <<= data; - return out_any; + (*out_any) <<= data; + return out_any; } CORBA::Any *Command::insert(Tango::DevVarStringArray *data) { - CORBA::Any *out_any; - alloc_any(out_any); + CORBA::Any *out_any; + alloc_any(out_any); - (*out_any) <<= (*data); - delete data; + (*out_any) <<= (*data); + delete data; - return out_any; + return out_any; } CORBA::Any *Command::insert(Tango::DevVarLongStringArray &data) { - CORBA::Any *out_any; - alloc_any(out_any); + CORBA::Any *out_any; + alloc_any(out_any); - (*out_any) <<= data; - return out_any; + (*out_any) <<= data; + return out_any; } CORBA::Any *Command::insert(Tango::DevVarLongStringArray *data) { - CORBA::Any *out_any; - alloc_any(out_any); + CORBA::Any *out_any; + alloc_any(out_any); - (*out_any) <<= (*data); - delete data; + (*out_any) <<= (*data); + delete data; - return out_any; + return out_any; } CORBA::Any *Command::insert(Tango::DevVarDoubleStringArray *data) { - CORBA::Any *out_any; - alloc_any(out_any); + CORBA::Any *out_any; + alloc_any(out_any); - (*out_any) <<= (*data); - delete data; + (*out_any) <<= (*data); + delete data; - return out_any; + return out_any; } CORBA::Any *Command::insert(Tango::DevVarDoubleStringArray &data) { - CORBA::Any *out_any; - alloc_any(out_any); + CORBA::Any *out_any; + alloc_any(out_any); - (*out_any) <<= data; - return out_any; + (*out_any) <<= data; + return out_any; } CORBA::Any *Command::insert(Tango::DevState data) { - CORBA::Any *out_any; - alloc_any(out_any); + CORBA::Any *out_any; + alloc_any(out_any); - (*out_any) <<= data; - return out_any; + (*out_any) <<= data; + return out_any; } CORBA::Any *Command::insert(Tango::DevEncoded *data) { - CORBA::Any *out_any; - alloc_any(out_any); + CORBA::Any *out_any; + alloc_any(out_any); - (*out_any) <<= (*data); - delete data; + (*out_any) <<= (*data); + delete data; - return out_any; + return out_any; +} + +CORBA::Any *Command::insert(Tango::DevPipeBlob *data) +{ + CORBA::Any *out_any; + alloc_any(out_any); + + (*out_any) <<= (*data); + delete data; + + return out_any; } //+------------------------------------------------------------------------- @@ -726,132 +743,165 @@ CORBA::Any *Command::insert(Tango::DevEncoded *data) //-------------------------------------------------------------------------- -TemplCommand::TemplCommand(const char *s,void (DeviceImpl::*f)()) -:Command(s,Tango::DEV_VOID,Tango::DEV_VOID),exe_ptr(f),ext(Tango_nullptr) +TemplCommand::TemplCommand(const char *s, void (DeviceImpl::*f)()) + : Command(s, Tango::DEV_VOID, Tango::DEV_VOID), exe_ptr(f), ext(Tango_nullptr) { - allowed_ptr = NULL; + allowed_ptr = NULL; } -TemplCommand::TemplCommand(const char *s,void (DeviceImpl::*f)(),bool (DeviceImpl::*a)(const CORBA::Any &)) -:Command(s,Tango::DEV_VOID,Tango::DEV_VOID),exe_ptr(f),ext(Tango_nullptr),allowed_ptr(a) +TemplCommand::TemplCommand(const char *s, void (DeviceImpl::*f)(), bool (DeviceImpl::*a)(const CORBA::Any &)) + : Command(s, Tango::DEV_VOID, Tango::DEV_VOID), exe_ptr(f), ext(Tango_nullptr), allowed_ptr(a) { } -TemplCommand::TemplCommand(string &s,void (DeviceImpl::*f)()) -:Command(s,Tango::DEV_VOID,Tango::DEV_VOID),exe_ptr(f),ext(Tango_nullptr) +TemplCommand::TemplCommand(string &s, void (DeviceImpl::*f)()) + : Command(s, Tango::DEV_VOID, Tango::DEV_VOID), exe_ptr(f), ext(Tango_nullptr) { - allowed_ptr = NULL; + allowed_ptr = NULL; } -TemplCommand::TemplCommand(string &s,void (DeviceImpl::*f)(),bool (DeviceImpl::*a)(const CORBA::Any &)) -:Command(s,Tango::DEV_VOID,Tango::DEV_VOID),exe_ptr(f),ext(Tango_nullptr),allowed_ptr(a) +TemplCommand::TemplCommand(string &s, void (DeviceImpl::*f)(), bool (DeviceImpl::*a)(const CORBA::Any &)) + : Command(s, Tango::DEV_VOID, Tango::DEV_VOID), exe_ptr(f), ext(Tango_nullptr), allowed_ptr(a) { } -TemplCommand::TemplCommand(const char *s,void (DeviceImpl::*f)(),const char *in_desc,const char *out_desc) -:Command(s,Tango::DEV_VOID,Tango::DEV_VOID,in_desc,out_desc),exe_ptr(f),ext(Tango_nullptr) +TemplCommand::TemplCommand(const char *s, void (DeviceImpl::*f)(), const char *in_desc, const char *out_desc) + : Command(s, Tango::DEV_VOID, Tango::DEV_VOID, in_desc, out_desc), exe_ptr(f), ext(Tango_nullptr) { - allowed_ptr = NULL; + allowed_ptr = NULL; } -TemplCommand::TemplCommand(const char *s,void (DeviceImpl::*f)(),bool (DeviceImpl::*a)(const CORBA::Any &),const char *in_desc,const char *out_desc) -:Command(s,Tango::DEV_VOID,Tango::DEV_VOID,in_desc,out_desc),exe_ptr(f),ext(Tango_nullptr),allowed_ptr(a) +TemplCommand::TemplCommand(const char *s, + void (DeviceImpl::*f)(), + bool (DeviceImpl::*a)(const CORBA::Any &), + const char *in_desc, + const char *out_desc) + : Command(s, Tango::DEV_VOID, Tango::DEV_VOID, in_desc, out_desc), exe_ptr(f), ext(Tango_nullptr), allowed_ptr(a) { } -TemplCommand::TemplCommand(string &s,void (DeviceImpl::*f)(),bool (DeviceImpl::*a)(const CORBA::Any &),string &in_desc,string &out_desc) -:Command(s,Tango::DEV_VOID,Tango::DEV_VOID,in_desc,out_desc),exe_ptr(f),ext(Tango_nullptr),allowed_ptr(a) +TemplCommand::TemplCommand(string &s, + void (DeviceImpl::*f)(), + bool (DeviceImpl::*a)(const CORBA::Any &), + string &in_desc, + string &out_desc) + : Command(s, Tango::DEV_VOID, Tango::DEV_VOID, in_desc, out_desc), exe_ptr(f), ext(Tango_nullptr), allowed_ptr(a) { } -TemplCommand::TemplCommand(string &s,void (DeviceImpl::*f)(),string &in_desc,string &out_desc) -:Command(s,Tango::DEV_VOID,Tango::DEV_VOID,in_desc,out_desc),exe_ptr(f),ext(Tango_nullptr) +TemplCommand::TemplCommand(string &s, void (DeviceImpl::*f)(), string &in_desc, string &out_desc) + : Command(s, Tango::DEV_VOID, Tango::DEV_VOID, in_desc, out_desc), exe_ptr(f), ext(Tango_nullptr) { - allowed_ptr = NULL; + allowed_ptr = NULL; } -TemplCommand::TemplCommand(const char *s,void (DeviceImpl::*f)(),Tango::DispLevel level) -:Command(s,Tango::DEV_VOID,Tango::DEV_VOID,level),exe_ptr(f),ext(Tango_nullptr) +TemplCommand::TemplCommand(const char *s, void (DeviceImpl::*f)(), Tango::DispLevel level) + : Command(s, Tango::DEV_VOID, Tango::DEV_VOID, level), exe_ptr(f), ext(Tango_nullptr) { - allowed_ptr = NULL; + allowed_ptr = NULL; } -TemplCommand::TemplCommand(const char *s,void (DeviceImpl::*f)(),bool (DeviceImpl::*a)(const CORBA::Any &),Tango::DispLevel level) -:Command(s,Tango::DEV_VOID,Tango::DEV_VOID,level),exe_ptr(f),ext(Tango_nullptr),allowed_ptr(a) +TemplCommand::TemplCommand(const char *s, + void (DeviceImpl::*f)(), + bool (DeviceImpl::*a)(const CORBA::Any &), + Tango::DispLevel level) + : Command(s, Tango::DEV_VOID, Tango::DEV_VOID, level), exe_ptr(f), ext(Tango_nullptr), allowed_ptr(a) { } -TemplCommand::TemplCommand(string &s,void (DeviceImpl::*f)(),Tango::DispLevel level) -:Command(s,Tango::DEV_VOID,Tango::DEV_VOID,level),exe_ptr(f),ext(Tango_nullptr) +TemplCommand::TemplCommand(string &s, void (DeviceImpl::*f)(), Tango::DispLevel level) + : Command(s, Tango::DEV_VOID, Tango::DEV_VOID, level), exe_ptr(f), ext(Tango_nullptr) { - allowed_ptr = NULL; + allowed_ptr = NULL; } -TemplCommand::TemplCommand(string &s,void (DeviceImpl::*f)(),bool (DeviceImpl::*a)(const CORBA::Any &),Tango::DispLevel level) -:Command(s,Tango::DEV_VOID,Tango::DEV_VOID,level),exe_ptr(f),ext(Tango_nullptr),allowed_ptr(a) +TemplCommand::TemplCommand(string &s, + void (DeviceImpl::*f)(), + bool (DeviceImpl::*a)(const CORBA::Any &), + Tango::DispLevel level) + : Command(s, Tango::DEV_VOID, Tango::DEV_VOID, level), exe_ptr(f), ext(Tango_nullptr), allowed_ptr(a) { } -TemplCommand::TemplCommand(const char *s,void (DeviceImpl::*f)(),const char *in_desc,const char *out_desc,Tango::DispLevel level) -:Command(s,Tango::DEV_VOID,Tango::DEV_VOID,in_desc,out_desc,level),exe_ptr(f),ext(Tango_nullptr) +TemplCommand::TemplCommand(const char *s, + void (DeviceImpl::*f)(), + const char *in_desc, + const char *out_desc, + Tango::DispLevel level) + : Command(s, Tango::DEV_VOID, Tango::DEV_VOID, in_desc, out_desc, level), exe_ptr(f), ext(Tango_nullptr) { - allowed_ptr = NULL; + allowed_ptr = NULL; } -TemplCommand::TemplCommand(const char *s,void (DeviceImpl::*f)(),bool (DeviceImpl::*a)(const CORBA::Any &),const char *in_desc,const char *out_desc,Tango::DispLevel level) -:Command(s,Tango::DEV_VOID,Tango::DEV_VOID,in_desc,out_desc,level),exe_ptr(f),ext(Tango_nullptr),allowed_ptr(a) +TemplCommand::TemplCommand(const char *s, + void (DeviceImpl::*f)(), + bool (DeviceImpl::*a)(const CORBA::Any &), + const char *in_desc, + const char *out_desc, + Tango::DispLevel level) + : Command(s, Tango::DEV_VOID, Tango::DEV_VOID, in_desc, out_desc, level), exe_ptr(f), ext(Tango_nullptr), + allowed_ptr(a) { } -TemplCommand::TemplCommand(string &s,void (DeviceImpl::*f)(),bool (DeviceImpl::*a)(const CORBA::Any &),string &in_desc,string &out_desc,Tango::DispLevel level) -:Command(s,Tango::DEV_VOID,Tango::DEV_VOID,in_desc,out_desc,level),exe_ptr(f),ext(Tango_nullptr),allowed_ptr(a) +TemplCommand::TemplCommand(string &s, + void (DeviceImpl::*f)(), + bool (DeviceImpl::*a)(const CORBA::Any &), + string &in_desc, + string &out_desc, + Tango::DispLevel level) + : Command(s, Tango::DEV_VOID, Tango::DEV_VOID, in_desc, out_desc, level), exe_ptr(f), ext(Tango_nullptr), + allowed_ptr(a) { } -TemplCommand::TemplCommand(string &s,void (DeviceImpl::*f)(),string &in_desc,string &out_desc,Tango::DispLevel level) -:Command(s,Tango::DEV_VOID,Tango::DEV_VOID,in_desc,out_desc,level),exe_ptr(f),ext(Tango_nullptr) +TemplCommand::TemplCommand(string &s, + void (DeviceImpl::*f)(), + string &in_desc, + string &out_desc, + Tango::DispLevel level) + : Command(s, Tango::DEV_VOID, Tango::DEV_VOID, in_desc, out_desc, level), exe_ptr(f), ext(Tango_nullptr) { - allowed_ptr = NULL; + allowed_ptr = NULL; } TemplCommand::TemplCommand(const char *s) -:Command(s,Tango::DEV_VOID,Tango::DEV_VOID) + : Command(s, Tango::DEV_VOID, Tango::DEV_VOID) { } TemplCommand::TemplCommand(string &s) -:Command(s,Tango::DEV_VOID,Tango::DEV_VOID) + : Command(s, Tango::DEV_VOID, Tango::DEV_VOID) { } -TemplCommand::TemplCommand(const char *s,Tango::DispLevel level) -:Command(s,Tango::DEV_VOID,Tango::DEV_VOID,level) +TemplCommand::TemplCommand(const char *s, Tango::DispLevel level) + : Command(s, Tango::DEV_VOID, Tango::DEV_VOID, level) { } -TemplCommand::TemplCommand(string &s,Tango::DispLevel level) -:Command(s,Tango::DEV_VOID,Tango::DEV_VOID,level) +TemplCommand::TemplCommand(string &s, Tango::DispLevel level) + : Command(s, Tango::DEV_VOID, Tango::DEV_VOID, level) { } -TemplCommand::TemplCommand(const char *s,const char *in_desc,const char *out_desc) -:Command(s,Tango::DEV_VOID,Tango::DEV_VOID,in_desc,out_desc) +TemplCommand::TemplCommand(const char *s, const char *in_desc, const char *out_desc) + : Command(s, Tango::DEV_VOID, Tango::DEV_VOID, in_desc, out_desc) { } -TemplCommand::TemplCommand(string &s,string &in_desc,string &out_desc) -:Command(s,Tango::DEV_VOID,Tango::DEV_VOID,in_desc,out_desc) +TemplCommand::TemplCommand(string &s, string &in_desc, string &out_desc) + : Command(s, Tango::DEV_VOID, Tango::DEV_VOID, in_desc, out_desc) { } - -TemplCommand::TemplCommand(const char *s,const char *in_desc,const char *out_desc,Tango::DispLevel level) -:Command(s,Tango::DEV_VOID,Tango::DEV_VOID,in_desc,out_desc,level) +TemplCommand::TemplCommand(const char *s, const char *in_desc, const char *out_desc, Tango::DispLevel level) + : Command(s, Tango::DEV_VOID, Tango::DEV_VOID, in_desc, out_desc, level) { } -TemplCommand::TemplCommand(string &s,string &in_desc,string &out_desc,DispLevel level) -:Command(s,Tango::DEV_VOID,Tango::DEV_VOID,in_desc,out_desc,level) +TemplCommand::TemplCommand(string &s, string &in_desc, string &out_desc, DispLevel level) + : Command(s, Tango::DEV_VOID, Tango::DEV_VOID, in_desc, out_desc, level) { } @@ -867,161 +917,161 @@ TemplCommand::TemplCommand(string &s,string &in_desc,string &out_desc,DispLevel // //-------------------------------------------------------------------------- -void TemplCommand::set_type(const type_info &data_type,Tango::CmdArgType &type) -{ - if (data_type == typeid(void)) - { - cout4 << "Command : " << name << ", Type is void" << endl; - type = Tango::DEV_VOID; - } - else if (data_type == typeid(Tango::DevBoolean)) - { - cout4 << "Command : " << name << ", Type is a boolean" << endl; - type = Tango::DEV_BOOLEAN; - } - else if (data_type == typeid(Tango::DevShort)) - { - cout4 << "Command : " << name << ", Type is a short" << endl; - type = Tango::DEV_SHORT; - } - else if (data_type == typeid(Tango::DevLong)) - { - cout4 << "Command : " << name << ", Type is a long" << endl; - type = Tango::DEV_LONG; - } - else if (data_type == typeid(Tango::DevLong64)) - { - cout4 << "Command : " << name << ", Type is a long64" << endl; - type = Tango::DEV_LONG64; - } - else if (data_type == typeid(Tango::DevFloat)) - { - cout4 << "Command : " << name << ", Type is a float" << endl; - type = Tango::DEV_FLOAT; - } - else if (data_type == typeid(Tango::DevDouble)) - { - cout4 << "Command : " << name << ", Type is a double" << endl; - type = Tango::DEV_DOUBLE; - } - else if (data_type == typeid(Tango::DevUShort)) - { - cout4 << "Command : " << name << ", Type is an unsigned short" << endl; - type = Tango::DEV_USHORT; - } - else if (data_type == typeid(Tango::DevULong)) - { - cout4 << "Command : " << name << ", Type is an unsigned long" << endl; - type = Tango::DEV_ULONG; - } - else if (data_type == typeid(Tango::DevULong64)) - { - cout4 << "Command : " << name << ", Type is an unsigned long64" << endl; - type = Tango::DEV_ULONG64; - } - else if (data_type == typeid(Tango::DevString)) - { - cout4 << "Command : " << name << ", Type is a string" << endl; - type = Tango::DEV_STRING; - } - else if ((data_type == typeid(Tango::DevVarCharArray)) || - (data_type == typeid(const Tango::DevVarCharArray *)) || - (data_type == typeid(Tango::DevVarCharArray *))) - { - cout4 << "Command : " << name << ", Type is a char array" << endl; - type = Tango::DEVVAR_CHARARRAY; - } - else if ((data_type == typeid(Tango::DevVarShortArray)) || - (data_type == typeid(const Tango::DevVarShortArray *)) || - (data_type == typeid(Tango::DevVarShortArray *))) - { - cout4 << "Command : " << name << ", Type is a short array" << endl; - type = Tango::DEVVAR_SHORTARRAY; - } - else if ((data_type == typeid(Tango::DevVarLongArray)) || - (data_type == typeid(const Tango::DevVarLongArray *)) || - (data_type == typeid(Tango::DevVarLongArray *))) - { - cout4 << "Command : " << name << ", Type is a long array" << endl; - type = Tango::DEVVAR_LONGARRAY; - } - else if ((data_type == typeid(Tango::DevVarLong64Array)) || - (data_type == typeid(const Tango::DevVarLong64Array *)) || - (data_type == typeid(Tango::DevVarLong64Array *))) - { - cout4 << "Command : " << name << ", Type is a long64 array" << endl; - type = Tango::DEVVAR_LONG64ARRAY; - } - else if ((data_type == typeid(Tango::DevVarFloatArray)) || - (data_type == typeid(const Tango::DevVarFloatArray *)) || - (data_type == typeid(Tango::DevVarFloatArray *))) - { - cout4 << "Command : " << name << ", Type is a float array" << endl; - type = Tango::DEVVAR_FLOATARRAY; - } - else if ((data_type == typeid(Tango::DevVarDoubleArray)) || - (data_type == typeid(const Tango::DevVarDoubleArray *)) || - (data_type == typeid(Tango::DevVarDoubleArray *))) - { - cout4 << "Command : " << name << ", Type is a double array" << endl; - type = Tango::DEVVAR_DOUBLEARRAY; - } - else if ((data_type == typeid(Tango::DevVarUShortArray)) || - (data_type == typeid(const Tango::DevVarUShortArray *)) || - (data_type == typeid(Tango::DevVarUShortArray *))) - { - cout4 << "Command : " << name << ", Type is a unsigned short array" << endl; - type = Tango::DEVVAR_USHORTARRAY; - } - else if ((data_type == typeid(Tango::DevVarULongArray)) || - (data_type == typeid(const Tango::DevVarULongArray *)) || - (data_type == typeid(Tango::DevVarULongArray *))) - { - cout4 << "Command : " << name << ", Type is a unsigned long array" << endl; - type = Tango::DEVVAR_ULONGARRAY; - } - else if ((data_type == typeid(Tango::DevVarULong64Array)) || - (data_type == typeid(const Tango::DevVarULong64Array *)) || - (data_type == typeid(Tango::DevVarULong64Array *))) - { - cout4 << "Command : " << name << ", Type is a unsigned long64 array" << endl; - type = Tango::DEVVAR_ULONG64ARRAY; - } - else if ((data_type == typeid(Tango::DevVarStringArray)) || - (data_type == typeid(const Tango::DevVarStringArray *)) || - (data_type == typeid(Tango::DevVarStringArray *))) - { - cout4 << "Command : " << name << ", Type is a string array" << endl; - type = Tango::DEVVAR_STRINGARRAY; - } - else if ((data_type == typeid(Tango::DevVarLongStringArray)) || - (data_type == typeid(const Tango::DevVarLongStringArray *)) || - (data_type == typeid(Tango::DevVarLongStringArray *))) - { - cout4 << "Command : " << name << ", Type is a long + string array" << endl; - type = Tango::DEVVAR_LONGSTRINGARRAY; - } - else if ((data_type == typeid(Tango::DevVarDoubleStringArray)) || - (data_type == typeid(const Tango::DevVarDoubleStringArray *)) || - (data_type == typeid(Tango::DevVarDoubleStringArray *))) - { - cout4 << "Command : " << name << ", Type is a double + string array" << endl; - type = Tango::DEVVAR_DOUBLESTRINGARRAY; - } - else if (data_type == typeid(Tango::DevState)) - { - cout4 << "Command : " << name << ", Type is a DevState" << endl; - type = Tango::DEV_STATE; - } - else - { - cout4 << "Command : " << name << ", Unknown type" << endl; - TangoSys_OMemStream o; - - o << "Command " << name << " defined with an unsupported type" << ends; - Except::throw_exception((const char *)API_CmdArgumentTypeNotSupported, - o.str(),(const char *)"TemplCommand::set_type"); - } +void TemplCommand::set_type(const type_info &data_type, Tango::CmdArgType &type) +{ + if (data_type == typeid(void)) + { + cout4 << "Command : " << name << ", Type is void" << endl; + type = Tango::DEV_VOID; + } + else if (data_type == typeid(Tango::DevBoolean)) + { + cout4 << "Command : " << name << ", Type is a boolean" << endl; + type = Tango::DEV_BOOLEAN; + } + else if (data_type == typeid(Tango::DevShort)) + { + cout4 << "Command : " << name << ", Type is a short" << endl; + type = Tango::DEV_SHORT; + } + else if (data_type == typeid(Tango::DevLong)) + { + cout4 << "Command : " << name << ", Type is a long" << endl; + type = Tango::DEV_LONG; + } + else if (data_type == typeid(Tango::DevLong64)) + { + cout4 << "Command : " << name << ", Type is a long64" << endl; + type = Tango::DEV_LONG64; + } + else if (data_type == typeid(Tango::DevFloat)) + { + cout4 << "Command : " << name << ", Type is a float" << endl; + type = Tango::DEV_FLOAT; + } + else if (data_type == typeid(Tango::DevDouble)) + { + cout4 << "Command : " << name << ", Type is a double" << endl; + type = Tango::DEV_DOUBLE; + } + else if (data_type == typeid(Tango::DevUShort)) + { + cout4 << "Command : " << name << ", Type is an unsigned short" << endl; + type = Tango::DEV_USHORT; + } + else if (data_type == typeid(Tango::DevULong)) + { + cout4 << "Command : " << name << ", Type is an unsigned long" << endl; + type = Tango::DEV_ULONG; + } + else if (data_type == typeid(Tango::DevULong64)) + { + cout4 << "Command : " << name << ", Type is an unsigned long64" << endl; + type = Tango::DEV_ULONG64; + } + else if (data_type == typeid(Tango::DevString)) + { + cout4 << "Command : " << name << ", Type is a string" << endl; + type = Tango::DEV_STRING; + } + else if ((data_type == typeid(Tango::DevVarCharArray)) || + (data_type == typeid(const Tango::DevVarCharArray *)) || + (data_type == typeid(Tango::DevVarCharArray *))) + { + cout4 << "Command : " << name << ", Type is a char array" << endl; + type = Tango::DEVVAR_CHARARRAY; + } + else if ((data_type == typeid(Tango::DevVarShortArray)) || + (data_type == typeid(const Tango::DevVarShortArray *)) || + (data_type == typeid(Tango::DevVarShortArray *))) + { + cout4 << "Command : " << name << ", Type is a short array" << endl; + type = Tango::DEVVAR_SHORTARRAY; + } + else if ((data_type == typeid(Tango::DevVarLongArray)) || + (data_type == typeid(const Tango::DevVarLongArray *)) || + (data_type == typeid(Tango::DevVarLongArray *))) + { + cout4 << "Command : " << name << ", Type is a long array" << endl; + type = Tango::DEVVAR_LONGARRAY; + } + else if ((data_type == typeid(Tango::DevVarLong64Array)) || + (data_type == typeid(const Tango::DevVarLong64Array *)) || + (data_type == typeid(Tango::DevVarLong64Array *))) + { + cout4 << "Command : " << name << ", Type is a long64 array" << endl; + type = Tango::DEVVAR_LONG64ARRAY; + } + else if ((data_type == typeid(Tango::DevVarFloatArray)) || + (data_type == typeid(const Tango::DevVarFloatArray *)) || + (data_type == typeid(Tango::DevVarFloatArray *))) + { + cout4 << "Command : " << name << ", Type is a float array" << endl; + type = Tango::DEVVAR_FLOATARRAY; + } + else if ((data_type == typeid(Tango::DevVarDoubleArray)) || + (data_type == typeid(const Tango::DevVarDoubleArray *)) || + (data_type == typeid(Tango::DevVarDoubleArray *))) + { + cout4 << "Command : " << name << ", Type is a double array" << endl; + type = Tango::DEVVAR_DOUBLEARRAY; + } + else if ((data_type == typeid(Tango::DevVarUShortArray)) || + (data_type == typeid(const Tango::DevVarUShortArray *)) || + (data_type == typeid(Tango::DevVarUShortArray *))) + { + cout4 << "Command : " << name << ", Type is a unsigned short array" << endl; + type = Tango::DEVVAR_USHORTARRAY; + } + else if ((data_type == typeid(Tango::DevVarULongArray)) || + (data_type == typeid(const Tango::DevVarULongArray *)) || + (data_type == typeid(Tango::DevVarULongArray *))) + { + cout4 << "Command : " << name << ", Type is a unsigned long array" << endl; + type = Tango::DEVVAR_ULONGARRAY; + } + else if ((data_type == typeid(Tango::DevVarULong64Array)) || + (data_type == typeid(const Tango::DevVarULong64Array *)) || + (data_type == typeid(Tango::DevVarULong64Array *))) + { + cout4 << "Command : " << name << ", Type is a unsigned long64 array" << endl; + type = Tango::DEVVAR_ULONG64ARRAY; + } + else if ((data_type == typeid(Tango::DevVarStringArray)) || + (data_type == typeid(const Tango::DevVarStringArray *)) || + (data_type == typeid(Tango::DevVarStringArray *))) + { + cout4 << "Command : " << name << ", Type is a string array" << endl; + type = Tango::DEVVAR_STRINGARRAY; + } + else if ((data_type == typeid(Tango::DevVarLongStringArray)) || + (data_type == typeid(const Tango::DevVarLongStringArray *)) || + (data_type == typeid(Tango::DevVarLongStringArray *))) + { + cout4 << "Command : " << name << ", Type is a long + string array" << endl; + type = Tango::DEVVAR_LONGSTRINGARRAY; + } + else if ((data_type == typeid(Tango::DevVarDoubleStringArray)) || + (data_type == typeid(const Tango::DevVarDoubleStringArray *)) || + (data_type == typeid(Tango::DevVarDoubleStringArray *))) + { + cout4 << "Command : " << name << ", Type is a double + string array" << endl; + type = Tango::DEVVAR_DOUBLESTRINGARRAY; + } + else if (data_type == typeid(Tango::DevState)) + { + cout4 << "Command : " << name << ", Type is a DevState" << endl; + type = Tango::DEV_STATE; + } + else + { + cout4 << "Command : " << name << ", Unknown type" << endl; + TangoSys_OMemStream o; + + o << "Command " << name << " defined with an unsupported type" << ends; + Except::throw_exception((const char *) API_CmdArgumentTypeNotSupported, + o.str(), (const char *) "TemplCommand::set_type"); + } } //+------------------------------------------------------------------------- @@ -1041,12 +1091,12 @@ void TemplCommand::set_type(const type_info &data_type,Tango::CmdArgType &type) // //-------------------------------------------------------------------------- -bool TemplCommand::is_allowed(DeviceImpl *dev_ptr,const CORBA::Any &in_any) +bool TemplCommand::is_allowed(DeviceImpl *dev_ptr, const CORBA::Any &in_any) { - if (allowed_ptr == NULL) - return true; - else - return ((dev_ptr->*allowed_ptr)(in_any)); + if (allowed_ptr == NULL) + return true; + else + return ((dev_ptr->*allowed_ptr)(in_any)); } //+------------------------------------------------------------------------- @@ -1065,15 +1115,15 @@ bool TemplCommand::is_allowed(DeviceImpl *dev_ptr,const CORBA::Any &in_any) // //-------------------------------------------------------------------------- -CORBA::Any *TemplCommand::execute(DeviceImpl *dev_ptr,TANGO_UNUSED(const CORBA::Any &in_any)) +CORBA::Any *TemplCommand::execute(DeviceImpl *dev_ptr, TANGO_UNUSED(const CORBA::Any &in_any)) { // // Execute the command associated method // - (dev_ptr->*exe_ptr)(); - return insert(); + (dev_ptr->*exe_ptr)(); + return insert(); } } // End of Tango namespace diff --git a/test/cpp_test_suite/cpp_test_ds/TypeCmds.cpp b/test/cpp_test_suite/cpp_test_ds/TypeCmds.cpp index d7193499e..03b6d3226 100644 --- a/test/cpp_test_suite/cpp_test_ds/TypeCmds.cpp +++ b/test/cpp_test_suite/cpp_test_ds/TypeCmds.cpp @@ -1663,15 +1663,15 @@ bool IOPipeBlob::is_allowed(Tango::DeviceImpl *dev, const CORBA::Any &in_any) } CORBA::Any *IOPipeBlob::execute(Tango::DeviceImpl *dev, const CORBA::Any &in_any) { - Tango::DevPipeBlob *blob = nullptr; - //TODO extract - bool extracted = in_any >>= blob; - if (not(extracted)) throw logic_error{"DevPipeBlob has not been extracted!"}; + Tango::DevPipeBlob *in_blob = nullptr; - //TODO insert - CORBA::Any *out_any = new CORBA::Any(); + extract(in_any, in_blob); - (*out_any) <<= *blob; - return out_any; + Tango::DevPipeBlob *out_blob = new Tango::DevPipeBlob{}; + + out_blob->name = in_blob->name; + out_blob->blob_data = in_blob->blob_data; + + return insert(out_blob); } From 09515a91e0e961110362b73282fbde43e70513af Mon Sep 17 00:00:00 2001 From: ingvord Date: Tue, 25 Jul 2017 16:07:16 +0200 Subject: [PATCH 14/21] Progress #378 DeviceData operators --- include/tango/client/DeviceData.h | 4 ++++ src/client/devapi_data.cpp | 38 +++++++++++++++++++------------ 2 files changed, 28 insertions(+), 14 deletions(-) diff --git a/include/tango/client/DeviceData.h b/include/tango/client/DeviceData.h index 0ac193dd8..d962153e4 100644 --- a/include/tango/client/DeviceData.h +++ b/include/tango/client/DeviceData.h @@ -452,6 +452,8 @@ public : void operator<<(DevEncoded &datum) { (any.inout()) <<= datum; } + void operator<<(DevicePipeBlob &data); + // void insert(vector&, vector&); // void insert(vector&, vector&); @@ -620,6 +622,8 @@ public : bool operator>>(DevEncoded &datum); + bool operator>>(DevicePipeBlob *&datum); + ///@publicsection /**@name Exception and error related methods methods */ diff --git a/src/client/devapi_data.cpp b/src/client/devapi_data.cpp index b0ab385aa..874f035f3 100644 --- a/src/client/devapi_data.cpp +++ b/src/client/devapi_data.cpp @@ -226,7 +226,6 @@ bool DeviceData::any_is_null() return (false); } - //----------------------------------------------------------------------------- // // DeviceData::get_type() - return DeviceData data type @@ -339,23 +338,24 @@ int DeviceData::get_type() } break; - case CORBA::tk_struct: - tc_field = tc->member_type(0); - if(tc_field->kind() == tk_string) + case CORBA::tk_struct: + tc_field = tc->member_type(0); + if (tc_field->kind() == tk_string) { // The first field in a DevPipeBlob structure is a string (name field) data_type = Tango::DEV_PIPE_BLOB; break; - }tc_al = tc_field->content_type(); - switch (tc_al->kind()) - { - case CORBA::tk_sequence: - tc_seq = tc_al->content_type(); - switch (tc_seq->kind()) - { - case CORBA::tk_long: - data_type = Tango::DEVVAR_LONGSTRINGARRAY; - break; + } + tc_al = tc_field->content_type(); + switch (tc_al->kind()) + { + case CORBA::tk_sequence: + tc_seq = tc_al->content_type(); + switch (tc_seq->kind()) + { + case CORBA::tk_long: + data_type = Tango::DEVVAR_LONGSTRINGARRAY; + break; case CORBA::tk_double: data_type = Tango::DEVVAR_DOUBLESTRINGARRAY; @@ -1550,6 +1550,11 @@ bool DeviceData::operator>>(DevEncoded &datum) return ret; } +bool DeviceData::operator>>(DevicePipeBlob *&datum) +{ + return extract(datum); +} + //----------------------------------------------------------------------------- // // DeviceData::operator <<(vector &) - insert a vector into DeviceData @@ -1671,6 +1676,11 @@ void DeviceData::operator<<(vector &datum) any.inout() <<= double_array; } +void DeviceData::operator<<(DevicePipeBlob &data) +{ + insert(data); +} + //----------------------------------------------------------------------------- // From 54cbcf47f7cc8b943192e6e5ff042309b1324026 Mon Sep 17 00:00:00 2001 From: ingvord Date: Tue, 25 Jul 2017 17:15:29 +0200 Subject: [PATCH 15/21] Progress #378 codacy --- src/client/devapi_base.cpp | 6 ++-- src/client/devapi_data.cpp | 3 ++ test/cpp_test_suite/cpp_test_ds/TypeCmds.cpp | 9 ++---- .../new_tests/cxx_cmd_types.cpp | 31 +++++++++---------- 4 files changed, 24 insertions(+), 25 deletions(-) diff --git a/src/client/devapi_base.cpp b/src/client/devapi_base.cpp index 9502074d1..1b4f9a25c 100644 --- a/src/client/devapi_base.cpp +++ b/src/client/devapi_base.cpp @@ -965,7 +965,7 @@ int Connection::get_env_var_from_file(string &f_name, const char *env_var, strin int ret = -1; inFile.open(f_name.c_str()); - if (!inFile) + if (not(inFile)) { return ret; } @@ -974,7 +974,7 @@ int Connection::get_env_var_from_file(string &f_name, const char *env_var, strin string::size_type pos_env, pos_comment; - while (!inFile.eof()) + while (not(inFile.eof())) { getline(inFile, file_line); transform(file_line.begin(), file_line.end(), file_line.begin(), ::tolower); @@ -1066,7 +1066,7 @@ void Connection::get_fqdn(string &the_host) // size_t i; - for (i = 0; i < ip_list.size() && !host_found; i++) + for (i = 0; i < ip_list.size() && not(host_found); i++) { int result = getaddrinfo(ip_list[i].c_str(), NULL, &hints, &info); diff --git a/src/client/devapi_data.cpp b/src/client/devapi_data.cpp index 874f035f3..954f7dd6f 100644 --- a/src/client/devapi_data.cpp +++ b/src/client/devapi_data.cpp @@ -2341,8 +2341,11 @@ void DeviceData::insert(DevicePipeBlob *blob) DevVarPipeDataEltArray *tmp_ptr; tmp_ptr = blob->get_insert_data(); const string &bl_name = blob->get_name(); + //TODO do we really need this if, maybe we can set name no matter what? if (bl_name.size() != 0) + { tmp->name = bl_name.c_str(); + } if (tmp_ptr == Tango_nullptr) { Except::throw_exception(API_PipeNoDataElement, "No data in pipe!", "DeviceData::insert(DevicePipeBlob)"); diff --git a/test/cpp_test_suite/cpp_test_ds/TypeCmds.cpp b/test/cpp_test_suite/cpp_test_ds/TypeCmds.cpp index 03b6d3226..e70ee4c74 100644 --- a/test/cpp_test_suite/cpp_test_ds/TypeCmds.cpp +++ b/test/cpp_test_suite/cpp_test_ds/TypeCmds.cpp @@ -587,18 +587,15 @@ CORBA::Any *IOString::execute(TANGO_UNUSED(Tango::DeviceImpl *device), const COR Tango::DevString theWord; extract(in_any, theWord); - string palindrome; + string firstWord = theWord; string::reverse_iterator currentChar(firstWord.rbegin()); string::reverse_iterator endChar(firstWord.rend()); cout << "[IOString::execute] firstWord = " << firstWord << endl; - for (; currentChar != endChar; currentChar++) - { - cout << "[IOString::execute] currentChar = " << *currentChar << endl; - palindrome += *currentChar; - } + string palindrome{currentChar, endChar}; + cout << "[IOString::execute] palindrome = " << palindrome << endl; return insert(palindrome.c_str()); } diff --git a/test/cpp_test_suite/new_tests/cxx_cmd_types.cpp b/test/cpp_test_suite/new_tests/cxx_cmd_types.cpp index ed9500410..6de35144a 100644 --- a/test/cpp_test_suite/new_tests/cxx_cmd_types.cpp +++ b/test/cpp_test_suite/new_tests/cxx_cmd_types.cpp @@ -642,8 +642,8 @@ class CmdTypesTestSuite: public CxxTest::TestSuite TS_ASSERT_THROWS_NOTHING(dout = device->command_inout("IOStringArray", din)); const DevVarStringArray *received; dout >> received; - TS_ASSERT(!strcmp((*received)[0], "def")); - TS_ASSERT(!strcmp((*received)[1], "abc")); + TS_ASSERT(not(strcmp((*received)[0], "def"))); + TS_ASSERT(not(strcmp((*received)[1], "abc"))); } } @@ -694,8 +694,8 @@ class CmdTypesTestSuite: public CxxTest::TestSuite TS_ASSERT_EQUALS(received->lvalue[0], (111 * 2)); TS_ASSERT_EQUALS(received->lvalue[1], (222 * 2)); - TS_ASSERT(!strcmp(received->svalue[0], "zxc")); - TS_ASSERT(!strcmp(received->svalue[1], "qwe")); + TS_ASSERT(not(strcmp(received->svalue[0], "zxc"))); + TS_ASSERT(not(strcmp(received->svalue[1], "qwe"))); } for (size_t i = 0; i < loop; i++) @@ -716,8 +716,8 @@ class CmdTypesTestSuite: public CxxTest::TestSuite TS_ASSERT_EQUALS(received->lvalue[0], (in.lvalue[0] * 2)); TS_ASSERT_EQUALS(received->lvalue[1], (in.lvalue[1] * 2)); - TS_ASSERT(!strcmp(received->svalue[0], in.svalue[0])); - TS_ASSERT(!strcmp(received->svalue[1], in.svalue[1])); + TS_ASSERT(not(strcmp(received->svalue[0], in.svalue[0]))); + TS_ASSERT(not(strcmp(received->svalue[1], in.svalue[1]))); TS_ASSERT_EQUALS(data_type, Tango::DEVVAR_LONGSTRINGARRAY); } } @@ -772,9 +772,9 @@ class CmdTypesTestSuite: public CxxTest::TestSuite TS_ASSERT_EQUALS(received->dvalue[0], (1.11 * 2)); TS_ASSERT_EQUALS(received->dvalue[1], (22.2 * 2)); - TS_ASSERT(!strcmp(received->svalue[0], "iop")); - TS_ASSERT(!strcmp(received->svalue[1], "jkl")); - TS_ASSERT(!strcmp(received->svalue[2], "bnm")); + TS_ASSERT(not(strcmp(received->svalue[0], "iop"))); + TS_ASSERT(not(strcmp(received->svalue[1], "jkl"))); + TS_ASSERT(not(strcmp(received->svalue[2], "bnm"))); } @@ -796,9 +796,9 @@ class CmdTypesTestSuite: public CxxTest::TestSuite TS_ASSERT_EQUALS(received->dvalue[0], (in.dvalue[0] * 2)); TS_ASSERT_EQUALS(received->dvalue[1], (in.dvalue[1] * 2)); - TS_ASSERT(!strcmp(received->svalue[0], in.svalue[0])); - TS_ASSERT(!strcmp(received->svalue[1], in.svalue[1])); - TS_ASSERT(!strcmp(received->svalue[2], in.svalue[2])); + TS_ASSERT(not(strcmp(received->svalue[0], in.svalue[0]))); + TS_ASSERT(not(strcmp(received->svalue[1], in.svalue[1]))); + TS_ASSERT(not(strcmp(received->svalue[2], in.svalue[2]))); } } @@ -822,7 +822,7 @@ class CmdTypesTestSuite: public CxxTest::TestSuite TS_ASSERT_EQUALS(received->encoded_data.length(), 2); TS_ASSERT_EQUALS(received->encoded_data[0], (11 * 2)); TS_ASSERT_EQUALS(received->encoded_data[1], (22 * 2)); - TS_ASSERT(!strcmp(received->encoded_format, "Returned string")); + TS_ASSERT(not(strcmp(received->encoded_format, "Returned string"))); TS_ASSERT_EQUALS(data_type, Tango::DEV_ENCODED); } @@ -844,14 +844,13 @@ class CmdTypesTestSuite: public CxxTest::TestSuite TS_ASSERT_EQUALS(received.encoded_data.length(), 2); TS_ASSERT_EQUALS(received.encoded_data[0], (15 * 2)); TS_ASSERT_EQUALS(received.encoded_data[1], (25 * 2)); - TS_ASSERT(!strcmp(received.encoded_format, "Returned string")); + TS_ASSERT(not(strcmp(received.encoded_format, "Returned string"))); TS_ASSERT_EQUALS(data_type, Tango::DEV_ENCODED); } for (size_t i = 0; i < loop; i++) { DeviceData din, dout; - string in_str("Sent"); DevVarCharArray in_data; in_data.length(4); @@ -871,7 +870,7 @@ class CmdTypesTestSuite: public CxxTest::TestSuite TS_ASSERT_EQUALS(received.encoded_data[1], (25 * 2)); TS_ASSERT_EQUALS(received.encoded_data[2], (35 * 2)); TS_ASSERT_EQUALS(received.encoded_data[3], (45 * 2)); - TS_ASSERT(!strcmp(received.encoded_format, "Returned string")); + TS_ASSERT(not(strcmp(received.encoded_format, "Returned string"))); TS_ASSERT_EQUALS(data_type, Tango::DEV_ENCODED); } } From 66526b5404c595e99cda7c6503e39dec3bc7de0f Mon Sep 17 00:00:00 2001 From: Reynald Bourtembourg Date: Thu, 10 Aug 2017 14:37:40 +0200 Subject: [PATCH 16/21] More complex DevicePipeBlob test which leads to a crash with the current implementation --- .../new_tests/cxx_cmd_types.cpp | 100 ++++++++++++++---- 1 file changed, 82 insertions(+), 18 deletions(-) diff --git a/test/cpp_test_suite/new_tests/cxx_cmd_types.cpp b/test/cpp_test_suite/new_tests/cxx_cmd_types.cpp index 6de35144a..6e994c93f 100644 --- a/test/cpp_test_suite/new_tests/cxx_cmd_types.cpp +++ b/test/cpp_test_suite/new_tests/cxx_cmd_types.cpp @@ -589,8 +589,8 @@ class CmdTypesTestSuite: public CxxTest::TestSuite TS_ASSERT_THROWS_NOTHING(dout = device->command_inout("IOULongArray", din)); const DevVarULongArray *received; dout >> received; - TS_ASSERT_EQUALS((*received)[0], (111 * 2)); - TS_ASSERT_EQUALS((*received)[1], (222 * 2)); + TS_ASSERT_EQUALS((*received)[0], (DevULong) (111 * 2)); + TS_ASSERT_EQUALS((*received)[1], (DevULong) (222 * 2)); } for (size_t i = 0; i < loop; i++) @@ -819,7 +819,7 @@ class CmdTypesTestSuite: public CxxTest::TestSuite dout >> received; int data_type = dout.get_type(); - TS_ASSERT_EQUALS(received->encoded_data.length(), 2); + TS_ASSERT_EQUALS(received->encoded_data.length(), 2u); TS_ASSERT_EQUALS(received->encoded_data[0], (11 * 2)); TS_ASSERT_EQUALS(received->encoded_data[1], (22 * 2)); TS_ASSERT(not(strcmp(received->encoded_format, "Returned string"))); @@ -841,7 +841,7 @@ class CmdTypesTestSuite: public CxxTest::TestSuite dout >> received; int data_type = dout.get_type(); - TS_ASSERT_EQUALS(received.encoded_data.length(), 2); + TS_ASSERT_EQUALS(received.encoded_data.length(), 2u); TS_ASSERT_EQUALS(received.encoded_data[0], (15 * 2)); TS_ASSERT_EQUALS(received.encoded_data[1], (25 * 2)); TS_ASSERT(not(strcmp(received.encoded_format, "Returned string"))); @@ -865,7 +865,7 @@ class CmdTypesTestSuite: public CxxTest::TestSuite dout >> received; int data_type = dout.get_type(); - TS_ASSERT_EQUALS(received.encoded_data.length(), 4); + TS_ASSERT_EQUALS(received.encoded_data.length(), 4u); TS_ASSERT_EQUALS(received.encoded_data[0], (15 * 2)); TS_ASSERT_EQUALS(received.encoded_data[1], (25 * 2)); TS_ASSERT_EQUALS(received.encoded_data[2], (35 * 2)); @@ -879,24 +879,88 @@ class CmdTypesTestSuite: public CxxTest::TestSuite { for (size_t i = 0; i < loop; i++) { - DeviceData din, dout; DevicePipeBlob in{"TestPipeCmd"}; - vector names{"level0"}; + DeviceData din, dout; + DeviceData din2, dout2; + + vector names{"long", "double", "string", "double array"}; in.set_data_elt_names(names); - DevLong data = 123; - in << data; - din.insert(in); - TS_ASSERT_THROWS_NOTHING(dout = device->command_inout("IOPipeBlob", din)); - DevicePipeBlob received{}; - dout.extract(&received); + DevLong long_data = 123; + TS_ASSERT_THROWS_NOTHING(in["long"] << long_data); + DevDouble double_data = 3.14; + TS_ASSERT_THROWS_NOTHING(in["double"] << double_data); + string data_str = "String value"; + TS_ASSERT_THROWS_NOTHING(in["string"] << data_str); + vector double_array = {0.1, -0.02, 0.003, -0.0004}; + TS_ASSERT_THROWS_NOTHING(in["double array"] << double_array); + TS_ASSERT_THROWS_NOTHING(din << in); - TS_ASSERT_EQUALS(received.get_data_elt_nb(), 1); - TS_ASSERT_EQUALS(received.get_data_elt_name(0), "level0"); - int received_data; - received >> received_data; - TS_ASSERT_EQUALS(received_data, 123); + TS_ASSERT_THROWS_NOTHING(dout = device->command_inout("IOPipeBlob", din)); int data_type = dout.get_type(); TS_ASSERT_EQUALS(data_type, Tango::DEV_PIPE_BLOB); + DevicePipeBlob received{}; + TS_ASSERT_THROWS_NOTHING(dout.extract(&received)); + + TS_ASSERT_EQUALS(received.get_data_elt_nb(), 4u); + TS_ASSERT_EQUALS(received.get_data_elt_name(0), "long"); + TS_ASSERT_EQUALS(received.get_data_elt_name(1), "double"); + TS_ASSERT_EQUALS(received.get_data_elt_name(2), "string"); + TS_ASSERT_EQUALS(received.get_data_elt_name(3), "double array"); + Tango::DevLong received_long_data; + TS_ASSERT_THROWS_NOTHING(received >> received_long_data); + TS_ASSERT_EQUALS(received_long_data, 123); + Tango::DevDouble received_double_data; + TS_ASSERT_THROWS_NOTHING(received >> received_double_data); + TS_ASSERT_EQUALS(received_double_data, 3.14); + string received_string_data; + TS_ASSERT_THROWS_NOTHING(received >> received_string_data); + TS_ASSERT_EQUALS(received_string_data, "String value"); + vector received_double_array; + TS_ASSERT_THROWS_NOTHING(received >> received_double_array); + TS_ASSERT_EQUALS(received_double_array.size(),4u); + TS_ASSERT_EQUALS(received_double_array[0],0.1); + TS_ASSERT_EQUALS(received_double_array[1],-0.02); + TS_ASSERT_EQUALS(received_double_array[2],0.003); + TS_ASSERT_EQUALS(received_double_array[3],-0.0004); + + TS_ASSERT_EQUALS(in.get_data_elt_nb(),4u); + DevLong long_data2 = -456; + TS_ASSERT_THROWS_NOTHING(in["long"] << long_data2); + DevDouble double_data2 = 1407.1789; + TS_ASSERT_THROWS_NOTHING(in["double"] << double_data2); + string data_str2 = "Another string value"; + TS_ASSERT_THROWS_NOTHING(in["string"] << data_str2); + vector double_array2 = {-1.1, -2.2, 3.3, 4.4,5.5}; + TS_ASSERT_THROWS_NOTHING(in["double array"] << double_array2); + TS_ASSERT_THROWS_NOTHING(din2 << in); + TS_ASSERT_THROWS_NOTHING(dout2 = device->command_inout("IOPipeBlob", din2)); + int data_type2 = dout2.get_type(); + TS_ASSERT_EQUALS(data_type2, Tango::DEV_PIPE_BLOB); + DevicePipeBlob received2{}; + TS_ASSERT_THROWS_NOTHING(dout2.extract(&received2)); + + TS_ASSERT_EQUALS(received2.get_data_elt_nb(), 4u); + TS_ASSERT_EQUALS(received2.get_data_elt_name(0), "long"); + TS_ASSERT_EQUALS(received2.get_data_elt_name(1), "double"); + TS_ASSERT_EQUALS(received2.get_data_elt_name(2), "string"); + TS_ASSERT_EQUALS(received2.get_data_elt_name(3), "double array"); + Tango::DevLong received2_long_data; + TS_ASSERT_THROWS_NOTHING(received2 >> received2_long_data); + TS_ASSERT_EQUALS(received2_long_data, -456); + Tango::DevDouble received2_double_data; + TS_ASSERT_THROWS_NOTHING(received2 >> received2_double_data); + TS_ASSERT_EQUALS(received2_double_data, 1407.1789); + string received2_string_data; + TS_ASSERT_THROWS_NOTHING(received2 >> received2_string_data); + TS_ASSERT_EQUALS(received2_string_data, "Another string value"); + vector received_double_array2; + TS_ASSERT_THROWS_NOTHING(received2 >> received_double_array2); + TS_ASSERT_EQUALS(received_double_array2.size(),5u); + TS_ASSERT_EQUALS(received_double_array2[0],-1.1); + TS_ASSERT_EQUALS(received_double_array2[1],-2.2); + TS_ASSERT_EQUALS(received_double_array2[2],3.3); + TS_ASSERT_EQUALS(received_double_array2[3],4.4); + TS_ASSERT_EQUALS(received_double_array2[4],5.5); } } }; From 2e62aa5d3f35cc6bd83507c1ee939ee6b5b0aea1 Mon Sep 17 00:00:00 2001 From: Reynald Bourtembourg Date: Thu, 10 Aug 2017 14:49:09 +0200 Subject: [PATCH 17/21] Update DeviceData::insert(DevicePipeBlob *) method to manage memory as it is done for DevEncoded type which is very similar to DevPipeBlob CORBA type. There is no longer memory ownership transfer when DeviceData::insert is invoked. There is still no copy of the blob data during the insert in this version. --- src/client/devapi_data.cpp | 25 ++++++------------------- 1 file changed, 6 insertions(+), 19 deletions(-) diff --git a/src/client/devapi_data.cpp b/src/client/devapi_data.cpp index 954f7dd6f..21c83e202 100644 --- a/src/client/devapi_data.cpp +++ b/src/client/devapi_data.cpp @@ -2336,29 +2336,16 @@ void DeviceData::insert(DevicePipeBlob &blob) void DeviceData::insert(DevicePipeBlob *blob) { - DevPipeBlob *tmp = new DevPipeBlob(); + DevPipeBlob *the_pipe_blob = new DevPipeBlob(); + the_pipe_blob->name = Tango::string_dup(blob->get_name().c_str()); + DevVarPipeDataEltArray *blob_data_in = blob->get_insert_data(); - DevVarPipeDataEltArray *tmp_ptr; - tmp_ptr = blob->get_insert_data(); - const string &bl_name = blob->get_name(); - //TODO do we really need this if, maybe we can set name no matter what? - if (bl_name.size() != 0) - { - tmp->name = bl_name.c_str(); - } - if (tmp_ptr == Tango_nullptr) + if (blob_data_in == Tango_nullptr) { Except::throw_exception(API_PipeNoDataElement, "No data in pipe!", "DeviceData::insert(DevicePipeBlob)"); } - - DevULong max, len; - max = tmp_ptr->maximum(); - len = tmp_ptr->length(); - tmp->blob_data.replace(max, len, tmp_ptr->get_buffer((DevBoolean) true), true); - - any.inout() <<= tmp; - - delete tmp_ptr; + the_pipe_blob->blob_data.replace(blob_data_in->maximum(),blob_data_in->length(),blob_data_in->get_buffer(),false); + any.inout() <<= the_pipe_blob; } } // End of Tango namepsace From c3a163a83d8e202eee090e12c4e839f589463210 Mon Sep 17 00:00:00 2001 From: ingvord Date: Wed, 18 Oct 2017 13:21:31 +0200 Subject: [PATCH 18/21] Progress #378 fix test --- src/client/devapi_base.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/client/devapi_base.cpp b/src/client/devapi_base.cpp index 1b4f9a25c..8a1b2d98e 100644 --- a/src/client/devapi_base.cpp +++ b/src/client/devapi_base.cpp @@ -5297,7 +5297,8 @@ DevicePipe DeviceProxy::write_read_pipe(DevicePipe &pipe_data) // Prepare data sent to device // - //TODO replace with createDevPipeDatapipe_value_5.name = pipe_data.get_name().c_str(); + //TODO replace with createDevPipeData + pipe_value_5.name = pipe_data.get_name().c_str(); const string &bl_name = pipe_data.get_root_blob().get_name(); if (bl_name.size() != 0) pipe_value_5.data_blob.name = bl_name.c_str(); From 3d686675195a449c4f355953f4b4f92d42f5a3d2 Mon Sep 17 00:00:00 2001 From: ingvord Date: Wed, 18 Oct 2017 14:11:33 +0200 Subject: [PATCH 19/21] adjust version --- CMakeLists.txt | 4 ++-- RELEASE_NOTES | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 57740d536..43bc02e53 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -5,8 +5,8 @@ include(CTest) enable_testing() #need to define the version of the library set(MAJOR_VERSION "10") -set(MINOR_VERSION "0") -set(PATCH_VERSION "2") +set(MINOR_VERSION "1") +set(PATCH_VERSION "1") #convenient versions set(LIBRARY_VERSION "${MAJOR_VERSION}.${MINOR_VERSION}.${PATCH_VERSION}") diff --git a/RELEASE_NOTES b/RELEASE_NOTES index dcd1150aa..262c412b8 100644 --- a/RELEASE_NOTES +++ b/RELEASE_NOTES @@ -1,4 +1,4 @@ -10.0.2 +10.1.1 ====== Support for PipeBlob in commands From 78d6029c4d1f02b0394c7ceadd908b52cb375f60 Mon Sep 17 00:00:00 2001 From: ingvord Date: Wed, 18 Oct 2017 14:12:19 +0200 Subject: [PATCH 20/21] adjust version --- CMakeLists.txt | 2 +- RELEASE_NOTES | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 43bc02e53..063fbd69b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -5,7 +5,7 @@ include(CTest) enable_testing() #need to define the version of the library set(MAJOR_VERSION "10") -set(MINOR_VERSION "1") +set(MINOR_VERSION "2") set(PATCH_VERSION "1") #convenient versions diff --git a/RELEASE_NOTES b/RELEASE_NOTES index 262c412b8..ac846f5d4 100644 --- a/RELEASE_NOTES +++ b/RELEASE_NOTES @@ -1,4 +1,4 @@ -10.1.1 +10.2.1 ====== Support for PipeBlob in commands From d0febb431e51b177da0c23bf4c72cb8edd0c964f Mon Sep 17 00:00:00 2001 From: ingvord Date: Wed, 18 Oct 2017 14:18:13 +0200 Subject: [PATCH 21/21] update release notes --- RELEASE_NOTES | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/RELEASE_NOTES b/RELEASE_NOTES index ac846f5d4..a6cc544fb 100644 --- a/RELEASE_NOTES +++ b/RELEASE_NOTES @@ -2,6 +2,12 @@ ====== Support for PipeBlob in commands +Inserting const C string in DeviceData +Fix DeviceAttribute constructor for short and enum data types +NotifD is no longer supported +Fix shift-negative-value compilation warnings reported by g++ 6.3 +Fix tango_const.h not installed +Fix "unused parameter" warnings 10.0.1 ======