From 5ab993a94e073077a0ecf4e97bbc35d34eb5fbbb Mon Sep 17 00:00:00 2001 From: Manuel Traut Date: Sun, 3 Jun 2012 03:47:30 +0200 Subject: manager: add quick n'dirty register functions - no locking at the moment - no unregister at the moment Signed-off-by: Manuel Traut --- manager/Makefile | 4 +- manager/distrio_manager.cpp | 28 +++++++++----- manager/distrio_manager.h | 93 +++++++++++++++++++++++++++++++++++++++++++++ manager/manager_base.h | 21 ++++++++++ 4 files changed, 134 insertions(+), 12 deletions(-) create mode 100644 manager/distrio_manager.h create mode 100644 manager/manager_base.h diff --git a/manager/Makefile b/manager/Makefile index 41553c3..496f3ad 100644 --- a/manager/Makefile +++ b/manager/Makefile @@ -25,13 +25,13 @@ all: $(OBJ) idl: $(TAO_IDL) -GI -I../interfaces ../interfaces/$(COMPONENT).idl - rm -f $(COMPONENT)I.cpp + rm -f $(COMPONENT)I.cpp $(COMPONENT)I.h idl_clean: rm -f $(IDL_CLEANFILES) clean: idl_clean - rm *.o + rm -f *.o rm -f $(EXEC) install: all diff --git a/manager/distrio_manager.cpp b/manager/distrio_manager.cpp index de707e9..b7671fb 100644 --- a/manager/distrio_manager.cpp +++ b/manager/distrio_manager.cpp @@ -8,7 +8,7 @@ * @licence GPLv2 */ -#include "distrio_managerI.h" +#include "distrio_manager.h" #include @@ -27,37 +27,45 @@ Distrio_Manager_i::~Distrio_Manager_i (void) ::Distrio::Error * Distrio_Manager_i::digital ( ::Distrio::Digital_list_out io_list) { - // Add your implementation here + io_list = &digital_list; } ::Distrio::Error * Distrio_Manager_i::analog ( ::Distrio::Analog_list_out io_list) { - // Add your implementation here + io_list = &analog_list; } ::Distrio::Error * Distrio_Manager_i::device ( ::Distrio::Device_list_out dev_list) { - // Add your implementation here + dev_list = &device_list; } +/* TODO: think about locking!!! */ + ::Distrio::Error * Distrio_Manager_i::register_io_digital ( - ::Distrio::Analog_ptr io_ana) + ::Distrio::Digital_ptr & io_digi) { - // Add your implementation here + io_digi->id (new_id ()); + digital_list.length (digital_list.length () + 1); + digital_list [digital_list.length () - 1] = io_digi; } ::Distrio::Error * Distrio_Manager_i::register_io_analog ( - ::Distrio::Digital_ptr io_dig) + ::Distrio::Analog_ptr & io_ana) { - // Add your implementation here + io_ana->id (new_id ()); + analog_list.length (digital_list.length () + 1); + analog_list [analog_list.length () - 1] = io_ana; } ::Distrio::Error * Distrio_Manager_i::register_io_device ( - ::Distrio::Device_ptr io_dev) + ::Distrio::Device_ptr & io_dev) { - // Add your implementation here + io_dev->id (new_id ()); + device_list.length (device_list.length () + 1); + device_list [device_list.length () - 1] = io_dev; } ::Distrio::Error * Distrio_Manager_i::unregister_io_digital ( diff --git a/manager/distrio_manager.h b/manager/distrio_manager.h new file mode 100644 index 0000000..a2820e6 --- /dev/null +++ b/manager/distrio_manager.h @@ -0,0 +1,93 @@ +// -*- C++ -*- +// $Id$ + +/** + * Code generated by the The ACE ORB (TAO) IDL Compiler v2.1.2 + * TAO and the TAO IDL Compiler have been developed by: + * Center for Distributed Object Computing + * Washington University + * St. Louis, MO + * USA + * http://www.cs.wustl.edu/~schmidt/doc-center.html + * and + * Distributed Object Computing Laboratory + * University of California at Irvine + * Irvine, CA + * USA + * and + * Institute for Software Integrated Systems + * Vanderbilt University + * Nashville, TN + * USA + * http://www.isis.vanderbilt.edu/ + * + * Information about TAO is available at: + * http://www.cs.wustl.edu/~schmidt/TAO.html + **/ + +// TAO_IDL - Generated from +// be/be_codegen.cpp:1616 + +#ifndef DISTRIO_MANAGERI_Z5WXNW_H_ +#define DISTRIO_MANAGERI_Z5WXNW_H_ + +#include "distrio_managerS.h" +#include "manager_base.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +#pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +class Distrio_Manager_i + : public virtual POA_Distrio::Manager, Distrio_manager_base +{ +public: + // Constructor + Distrio_Manager_i (void); + + // Destructor + virtual ~Distrio_Manager_i (void); + + virtual + ::Distrio::Error * digital ( + ::Distrio::Digital_list_out io_list); + + virtual + ::Distrio::Error * analog ( + ::Distrio::Analog_list_out io_list); + + virtual + ::Distrio::Error * device ( + ::Distrio::Device_list_out dev_list); + + virtual + ::Distrio::Error * register_io_digital ( + ::Distrio::Digital_ptr & io_dig); + + virtual + ::Distrio::Error * register_io_analog ( + ::Distrio::Analog_ptr & io_ana); + + virtual + ::Distrio::Error * register_io_device ( + ::Distrio::Device_ptr & io_dev); + + virtual + ::Distrio::Error * unregister_io_digital ( + ::Distrio::Digital_ptr io_dig); + + virtual + ::Distrio::Error * unregister_io_analog ( + ::Distrio::Analog_ptr io_ana); + + virtual + ::Distrio::Error * unregister_io_device ( + ::Distrio::Device_ptr io_dev); + + virtual + void log_error ( + const ::Distrio::Error & error); +}; + + +#endif /* DISTRIO_MANAGERI_H_ */ diff --git a/manager/manager_base.h b/manager/manager_base.h new file mode 100644 index 0000000..790609e --- /dev/null +++ b/manager/manager_base.h @@ -0,0 +1,21 @@ +/** + * used by interface implementation to store private attributes + * + * @author Manuel Traut + * @licence GPLv2 + */ + +#include + +class Distrio_manager_base { + public: + Distrio_manager_base () {id = 0;} + ~Distrio_manager_base () {} + protected: + long id; + Distrio::Device_list device_list; + Distrio::Analog_list analog_list; + Distrio::Digital_list digital_list; + /* TODO: locking */ + long new_id () { return id++; } +}; -- cgit v1.2.3