From da8eeabec353e94a067de5cb0200bb6680da53de Mon Sep 17 00:00:00 2001 From: Manuel Traut Date: Sun, 3 Jun 2012 15:41:47 +0200 Subject: manager: split into bin and lib - bin is distrio_manager application - lib is for components using the distrio_manager interface Signed-off-by: Manuel Traut --- manager/Makefile | 47 +++--------- manager/bin/Makefile | 41 ++++++++++ manager/bin/distrio_manager.cpp | 160 ++++++++++++++++++++++++++++++++++++++++ manager/bin/distrio_manager.h | 93 +++++++++++++++++++++++ manager/bin/manager_base.h | 21 ++++++ manager/bin/run.sh | 22 ++++++ manager/distrio_manager.cpp | 160 ---------------------------------------- manager/distrio_manager.h | 93 ----------------------- manager/lib/Makefile | 43 +++++++++++ manager/manager_base.h | 21 ------ manager/run.sh | 22 ------ 11 files changed, 389 insertions(+), 334 deletions(-) create mode 100644 manager/bin/Makefile create mode 100644 manager/bin/distrio_manager.cpp create mode 100644 manager/bin/distrio_manager.h create mode 100644 manager/bin/manager_base.h create mode 100755 manager/bin/run.sh delete mode 100644 manager/distrio_manager.cpp delete mode 100644 manager/distrio_manager.h create mode 100644 manager/lib/Makefile delete mode 100644 manager/manager_base.h delete mode 100755 manager/run.sh diff --git a/manager/Makefile b/manager/Makefile index 496f3ad..3f45ac7 100644 --- a/manager/Makefile +++ b/manager/Makefile @@ -1,41 +1,12 @@ -CC := $(CROSS_COMPILE)gcc -CXX := $(CROSS_COMPILE)g++ -LD := $(CROSS_COMPILE)g++ +MAKE_DIRECTORIES = bin lib -DISTRIO_COMMON := ../common -DISTRIO_IO := ../io +.PHONY: all +idl: $(MAKE_DIRECTORIES) +all: $(MAKE_DIRECTORIES) -LDFLAGS += -L$(DISTRIO_COMMON) -ldistrio_common -L$(DISTRIO_IO) -ldistrio_io \ - -lACE -lTAO -lTAO_AnyTypeCode -lTAO_CosNaming -lTAO_PortableServer -CFLAGS += -fPIC -I$(DISTRIO_COMMON) -I$(DISTRIO_IO) -CXXFLAGS += $(CFLAGS) +.PHONY: $(MAKE_DIRECTORIES) +$(MAKE_DIRECTORIES): + @$(MAKE) --keep-going --directory=$@ $(MAKECMDGOALS) -TAO_IDL := tao_idl - -DESTDIR := /usr - -COMPONENT = distrio_manager -EXEC = $(COMPONENT) -OBJ = $(COMPONENT)C.o $(COMPONENT)S.o $(COMPONENT).o -IDL_CLEANFILES = $(COMPONENT)C.cpp $(COMPONENT)C.h $(COMPONENT)I.h \ - $(COMPONENT)S.cpp $(COMPONENT)S.h $(COMPONENT)C.inl - -all: $(OBJ) - $(LD) $(LDFLAGS) -o $(EXEC) $(OBJ) - -idl: - $(TAO_IDL) -GI -I../interfaces ../interfaces/$(COMPONENT).idl - rm -f $(COMPONENT)I.cpp $(COMPONENT)I.h - -idl_clean: - rm -f $(IDL_CLEANFILES) - -clean: idl_clean - rm -f *.o - rm -f $(EXEC) - -install: all - cp -a $(EXEC) $(DESTDIR)/bin - -uninstall: - rm -f $(DESTDIR)/bin/$(EXEC) +.PHONY: $(MAKECMDGOALS) +$(MAKECMDGOALS): $(MAKE_DIRECTORIES) diff --git a/manager/bin/Makefile b/manager/bin/Makefile new file mode 100644 index 0000000..05c14d7 --- /dev/null +++ b/manager/bin/Makefile @@ -0,0 +1,41 @@ +CC := $(CROSS_COMPILE)gcc +CXX := $(CROSS_COMPILE)g++ +LD := $(CROSS_COMPILE)g++ + +DISTRIO_COMMON := ../../common +DISTRIO_IO := ../../io + +LDFLAGS += -L$(DISTRIO_COMMON) -ldistrio_common -L$(DISTRIO_IO) -ldistrio_io \ + -lACE -lTAO -lTAO_AnyTypeCode -lTAO_CosNaming -lTAO_PortableServer +CFLAGS += -fPIC -I$(DISTRIO_COMMON) -I$(DISTRIO_IO) +CXXFLAGS += $(CFLAGS) + +TAO_IDL := tao_idl + +DESTDIR := /usr + +COMPONENT = distrio_manager +EXEC = $(COMPONENT) +OBJ = $(COMPONENT)C.o $(COMPONENT)S.o $(COMPONENT).o +IDL_CLEANFILES = $(COMPONENT)C.cpp $(COMPONENT)C.h $(COMPONENT)I.h \ + $(COMPONENT)S.cpp $(COMPONENT)S.h $(COMPONENT)C.inl + +all: $(OBJ) + $(LD) $(LDFLAGS) -o $(EXEC) $(OBJ) + +idl: + $(TAO_IDL) -GI -I../../interfaces ../../interfaces/$(COMPONENT).idl + rm -f $(COMPONENT)I.cpp $(COMPONENT)I.h + +idl_clean: + rm -f $(IDL_CLEANFILES) + +clean: idl_clean + rm -f *.o + rm -f $(EXEC) + +install: all + cp -a $(EXEC) $(DESTDIR)/bin + +uninstall: + rm -f $(DESTDIR)/bin/$(EXEC) diff --git a/manager/bin/distrio_manager.cpp b/manager/bin/distrio_manager.cpp new file mode 100644 index 0000000..b7671fb --- /dev/null +++ b/manager/bin/distrio_manager.cpp @@ -0,0 +1,160 @@ +/** + * distrio manager implementation + * + * - instances a manager object + * - registers the manager object at the NamingService + * + * @author Manuel Traut + * @licence GPLv2 + */ + +#include "distrio_manager.h" + +#include + +#include + +// Implementation skeleton constructor +Distrio_Manager_i::Distrio_Manager_i (void) +{ +} + +// Implementation skeleton destructor +Distrio_Manager_i::~Distrio_Manager_i (void) +{ +} + +::Distrio::Error * Distrio_Manager_i::digital ( + ::Distrio::Digital_list_out io_list) +{ + io_list = &digital_list; +} + +::Distrio::Error * Distrio_Manager_i::analog ( + ::Distrio::Analog_list_out io_list) +{ + io_list = &analog_list; +} + +::Distrio::Error * Distrio_Manager_i::device ( + ::Distrio::Device_list_out dev_list) +{ + dev_list = &device_list; +} + +/* TODO: think about locking!!! */ + +::Distrio::Error * Distrio_Manager_i::register_io_digital ( + ::Distrio::Digital_ptr & io_digi) +{ + 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::Analog_ptr & io_ana) +{ + 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) +{ + 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 ( + ::Distrio::Digital_ptr io_dig) +{ + // Add your implementation here +} + +::Distrio::Error * Distrio_Manager_i::unregister_io_analog ( + ::Distrio::Analog_ptr io_ana) +{ + // Add your implementation here +} + +::Distrio::Error * Distrio_Manager_i::unregister_io_device ( + ::Distrio::Device_ptr io_dev) +{ + // Add your implementation here +} + +void Distrio_Manager_i::log_error ( + const ::Distrio::Error & error) +{ + // Add your implementation here +} + +ACE_TMAIN (int argc, ACE_TCHAR *argv[]) +{ + std::cout << __FILE__ << " build " << __DATE__ << " " << __TIME__ <resolve_initial_references ("RootPOA"); + poa = PortableServer::POA::_narrow (root_poa.in ()); + distrio_manager_oid = poa->activate_object (distrio_manager); + distrio_manager_obj = distrio_manager->_this (); + + std::cout << "get context of NameService" << std::endl; + naming_service = orb->resolve_initial_references ("NameService"); + if (CORBA::is_nil (naming_service)) { + std::cerr << "can't resolve NameService" << std::endl; + ret = -EINVAL; + goto out; + } + nc = CosNaming::NamingContext::_narrow (naming_service.in ()); + if (CORBA::is_nil (nc)) { + std::cerr << "resolved invalid NameService object" << std::endl; + ret = -EINVAL; + goto out; + } + + std::cout << "bind manager object at NameService" << std::endl; + /* TODO: find out how to build a tree @ the nameservice "distrio/manager" */ + name.length (1); + name[0].id = CORBA::string_dup ("distrio_manager"); + nc->rebind (name, distrio_manager_obj.in ()); + + std::cout << "activate POA Manager" << std::endl; + poa_mgr = poa->the_POAManager (); + poa_mgr->activate (); + + std::cout << "distrio_manager ready" << std::endl; + orb->run (); + orb->destroy (); + } catch (CORBA::SystemException &e) { + std::cerr << "CORBA initialization failed: " << e << std::endl; + ret = -EINVAL; + goto out; + } catch(CORBA::Exception &e) { + std::cerr << "CORBA initialization failed: " << e << std::endl; + ret = -EINVAL; + goto out; + } + +out: + free (distrio_manager); + return ret; +} diff --git a/manager/bin/distrio_manager.h b/manager/bin/distrio_manager.h new file mode 100644 index 0000000..a2820e6 --- /dev/null +++ b/manager/bin/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/bin/manager_base.h b/manager/bin/manager_base.h new file mode 100644 index 0000000..790609e --- /dev/null +++ b/manager/bin/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++; } +}; diff --git a/manager/bin/run.sh b/manager/bin/run.sh new file mode 100755 index 0000000..8162204 --- /dev/null +++ b/manager/bin/run.sh @@ -0,0 +1,22 @@ +#!/bin/bash +# +# startup script for distrio manager +# +# checks if a naming service is running +# if not; a newone is started before distrio_manager +# +# author: Manuel Traut + +NS_PORT=12345 + +NS=`ps aux | grep tao_cosnaming | grep $NS_PORT` + +if [ -z "$NS" ]; then + echo start naming service + tao_cosnaming -ORBEndPoint iiop://localhost:$NS_PORT & + sleep 1 +fi + +LD_LIBRARY_PATH=../io:../common ./distrio_manager \ + -ORBInitRef NameService=corbaloc:iiop:localhost:12345/NameService \ + $@ diff --git a/manager/distrio_manager.cpp b/manager/distrio_manager.cpp deleted file mode 100644 index b7671fb..0000000 --- a/manager/distrio_manager.cpp +++ /dev/null @@ -1,160 +0,0 @@ -/** - * distrio manager implementation - * - * - instances a manager object - * - registers the manager object at the NamingService - * - * @author Manuel Traut - * @licence GPLv2 - */ - -#include "distrio_manager.h" - -#include - -#include - -// Implementation skeleton constructor -Distrio_Manager_i::Distrio_Manager_i (void) -{ -} - -// Implementation skeleton destructor -Distrio_Manager_i::~Distrio_Manager_i (void) -{ -} - -::Distrio::Error * Distrio_Manager_i::digital ( - ::Distrio::Digital_list_out io_list) -{ - io_list = &digital_list; -} - -::Distrio::Error * Distrio_Manager_i::analog ( - ::Distrio::Analog_list_out io_list) -{ - io_list = &analog_list; -} - -::Distrio::Error * Distrio_Manager_i::device ( - ::Distrio::Device_list_out dev_list) -{ - dev_list = &device_list; -} - -/* TODO: think about locking!!! */ - -::Distrio::Error * Distrio_Manager_i::register_io_digital ( - ::Distrio::Digital_ptr & io_digi) -{ - 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::Analog_ptr & io_ana) -{ - 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) -{ - 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 ( - ::Distrio::Digital_ptr io_dig) -{ - // Add your implementation here -} - -::Distrio::Error * Distrio_Manager_i::unregister_io_analog ( - ::Distrio::Analog_ptr io_ana) -{ - // Add your implementation here -} - -::Distrio::Error * Distrio_Manager_i::unregister_io_device ( - ::Distrio::Device_ptr io_dev) -{ - // Add your implementation here -} - -void Distrio_Manager_i::log_error ( - const ::Distrio::Error & error) -{ - // Add your implementation here -} - -ACE_TMAIN (int argc, ACE_TCHAR *argv[]) -{ - std::cout << __FILE__ << " build " << __DATE__ << " " << __TIME__ <resolve_initial_references ("RootPOA"); - poa = PortableServer::POA::_narrow (root_poa.in ()); - distrio_manager_oid = poa->activate_object (distrio_manager); - distrio_manager_obj = distrio_manager->_this (); - - std::cout << "get context of NameService" << std::endl; - naming_service = orb->resolve_initial_references ("NameService"); - if (CORBA::is_nil (naming_service)) { - std::cerr << "can't resolve NameService" << std::endl; - ret = -EINVAL; - goto out; - } - nc = CosNaming::NamingContext::_narrow (naming_service.in ()); - if (CORBA::is_nil (nc)) { - std::cerr << "resolved invalid NameService object" << std::endl; - ret = -EINVAL; - goto out; - } - - std::cout << "bind manager object at NameService" << std::endl; - /* TODO: find out how to build a tree @ the nameservice "distrio/manager" */ - name.length (1); - name[0].id = CORBA::string_dup ("distrio_manager"); - nc->rebind (name, distrio_manager_obj.in ()); - - std::cout << "activate POA Manager" << std::endl; - poa_mgr = poa->the_POAManager (); - poa_mgr->activate (); - - std::cout << "distrio_manager ready" << std::endl; - orb->run (); - orb->destroy (); - } catch (CORBA::SystemException &e) { - std::cerr << "CORBA initialization failed: " << e << std::endl; - ret = -EINVAL; - goto out; - } catch(CORBA::Exception &e) { - std::cerr << "CORBA initialization failed: " << e << std::endl; - ret = -EINVAL; - goto out; - } - -out: - free (distrio_manager); - return ret; -} diff --git a/manager/distrio_manager.h b/manager/distrio_manager.h deleted file mode 100644 index a2820e6..0000000 --- a/manager/distrio_manager.h +++ /dev/null @@ -1,93 +0,0 @@ -// -*- 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/lib/Makefile b/manager/lib/Makefile new file mode 100644 index 0000000..fa5d771 --- /dev/null +++ b/manager/lib/Makefile @@ -0,0 +1,43 @@ +CC := $(CROSS_COMPILE)gcc +CXX := $(CROSS_COMPILE)g++ +LD := $(CROSS_COMPILE)g++ + +DISTRIO_COMMON := ../../common +DISTRIO_IO := ../../io + +CFLAGS += -fPIC -I$(DISTRIO_COMMON) -I$(DISTRIO_IO) +CXXFLAGS += $(CFLAGS) + +TAO_IDL := tao_idl + +DESTDIR := /usr + +COMPONENT = distrio_manager +LIB = lib$(COMPONENT).so +OBJ = $(COMPONENT)C.o $(COMPONENT)S.o + +IDL_CLEANFILES = $(COMPONENT)C.cpp $(COMPONENT)C.inl $(COMPONENT)I.h \ + $(COMPONENT)S.h $(COMPONENT)C.h $(COMPONENT)S.cpp + +all: $(OBJ) + $(LD) -shared -o $(LIB) $(OBJ) + +.PHONY: idl +idl: + $(TAO_IDL) -GI -I../../interfaces ../../interfaces/$(COMPONENT).idl + rm -f $(COMPONENT)I.cpp + +.PHONY: idl_clean +idl_clean: + rm -f $(IDL_CLEANFILES) + +.PHONY: clean +clean: idl_clean + rm -f *.o + rm -f $(LIB) + +install: all + cp -a $(LIB) $(DESTDIR)/lib + +uninstall: + rm -f $(DESTDIR)/lib/$(LIB) diff --git a/manager/manager_base.h b/manager/manager_base.h deleted file mode 100644 index 790609e..0000000 --- a/manager/manager_base.h +++ /dev/null @@ -1,21 +0,0 @@ -/** - * 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++; } -}; diff --git a/manager/run.sh b/manager/run.sh deleted file mode 100755 index 8162204..0000000 --- a/manager/run.sh +++ /dev/null @@ -1,22 +0,0 @@ -#!/bin/bash -# -# startup script for distrio manager -# -# checks if a naming service is running -# if not; a newone is started before distrio_manager -# -# author: Manuel Traut - -NS_PORT=12345 - -NS=`ps aux | grep tao_cosnaming | grep $NS_PORT` - -if [ -z "$NS" ]; then - echo start naming service - tao_cosnaming -ORBEndPoint iiop://localhost:$NS_PORT & - sleep 1 -fi - -LD_LIBRARY_PATH=../io:../common ./distrio_manager \ - -ORBInitRef NameService=corbaloc:iiop:localhost:12345/NameService \ - $@ -- cgit v1.2.3