Information
We are currently investigating an issue with the editor of some pages. Please save your work and avoid to create new pages until this banner is gone.
cd ~/workspace getTemplateForDirectory MODROOT_WS cppHelloComp cd cppHelloComp/src touch HelloComponentImpl.cpp touch ../include/HelloComponentImpl.h vim Makefile
We modify the Makefile for this component:
... INCLUDES = HelloComponentImpl.h ... LIBRARIES = HelloComponentImpl HelloComponentImpl_OBJECTS = HelloComponentImpl HelloComponentImpl_LIBS = HelloComponentStubs acscomponent ...
We fill the component code as follows:
vim ../include/HelloComponentImpl.h
#ifndef _HELLO_COMPONENT_IMPL_H #define _HELLO_COMPONENT_IMPL_H #ifndef __cplusplus #error This is a C++ include file and cannot be used from plain C #endif //Base component implementation, including container services and component lifecycle infrastructure #include <acscomponentImpl.h> //Skeleton interface for server implementation #include <HelloComponentS.h> //Error definitions for catching and raising exceptions class HelloComponentImpl : public virtual acscomponent::ACSComponentImpl, public virtual POA_workshop::HelloComponent { public: HelloComponentImpl(const ACE_CString& name, maci::ContainerServices * containerServices); virtual ~HelloComponentImpl(); char* printHello(); }; #endif
vim HelloComponentImpl.cpp
#include <HelloComponentImpl.h> HelloComponentImpl::HelloComponentImpl(const ACE_CString& name, maci::ContainerServices * containerServices) : ACSComponentImpl(name, containerServices) { } HelloComponentImpl::~HelloComponentImpl() { } char* HelloComponentImpl::printHello() { std::cout << "Just printing 'Hello World!'" << std::endl; return CORBA::string_dup("Hello World!"); } /* --------------- [ MACI DLL support functions ] -----------------*/ #include <maciACSComponentDefines.h> MACI_DLL_SUPPORT_FUNCTIONS(HelloComponentImpl) /* ----------------------------------------------------------------*/
make all install
vim $ACS_CDB/CDB/MACI/Components/Components.xml
Add the following item:
<e Name="HelloWorldCPP" Code="HelloComponentImpl" Type="IDL:acsws/workshop/HelloComponent:1.0" Container="bilboContainer" ImplLang="cpp" />
Create client python file:
cd ~/workspace touch client.py vim client.py
We fill it as follow:
from Acspy.Clients.SimpleClient import PySimpleClient client = PySimpleClient() component = client.getComponent("HelloWorldCPP") print(component.printHello())
Run component:
# in one terminal acsStop acsStart # in a different terminal acsStartContainer -cpp bilboContainer # in a different terminal python client.py
... Hello World! ...