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.
...
Code Block | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
#ifndef _ASYNC_IDL_ #define _ASYNC_IDL_ #pragma prefix "acs" #include <acscommon.idl> #include <acscomponent.idl> module examples { interface MyCallback: ACS::OffShoot { void update(in string text); }; interface Async : ACS::ACSComponent { oneway void delayResultdelayAsync(in ACS::uLong delay, in MyCallback cb); }; interface Async : ACS::ACSComponent { void delay(in ACS::uLong delay); }; }; #endif |
...
Code Block | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
#ifndef _ASYNC_IMPL_H #define _ASYNC_IMPL_H #include <acscomponentImpl.h> #include <AsyncS.h> class AsyncImpl : public virtual acscomponent::ACSComponentImpl, public virtual POA_workshop::Async { public: AsyncImpl(const ACE_CString& name, maci::ContainerServices* containerServices); virtual ~AsyncImpl(); void delayResultdelayAsync(ACS::uLong delay, acs::examples::MyCallback_ptr cb); }; #endif |
Code Block | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
#include <AsyncImpl.h> #include <ACSErrTypeOK.h> AsyncImpl::AsyncImpl(const ACE_CString& name, maci::ContainerServices* containerServices) : acscomponent::ACSComponentImpl(name, containerServices) { } AsyncImpl::~AsyncImpl() { } void AsyncImpl::delayResultdelayAsync(ACS::uLong delay, acs::examples::MyCallback_ptr cb) { cb->update("WorkingWORKING"); sleep(delay); cb->update("DoneDONE"); } /* --------------- [ MACI DLL support functions ] -----------------*/ #include <maciACSComponentDefines.h> MACI_DLL_SUPPORT_FUNCTIONS(AsyncImpl) /* ----------------------------------------------------------------*/ |
...
Code Block | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
<e Name="ASYNC_CPP" Code="AsyncImpl" Type="IDL:alma/workshop/Async:1.0" Container="bilboContainer" ImplLang="cpp" KeepAliveTime="0" /> <e Name="ASYNC_CLIENT_CPP" Code="AsyncClientImpl" Type="IDL:alma/workshop/AsyncClient:1.0" Container="bilboContainer" ImplLang="cpp" KeepAliveTime="0" /> |
Code Block | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
#include <maciSimpleClient.h>
#include <AsyncC.h>
#include <ACSErrTypeCommon.h>
#include <acsutilTimeStamp.h>
using namespace maci;
class MyCBImpl : public virtual POA_examples::MyCallback {
public:
MyCBImpl() {
status=std::string("INIT");
}
virtual ~CBuLongImpl() {}
void update(const char* value) {
status = std::string(value);
}
public:
std::string status;
};
int main(int argc, char *argv[]) {
SimpleClient client;
workshop::Async_var comp;
if (client.init(argc,argv) == 0) {
return -1;
} else {
client.login();
}
try {
comp = client.getComponent<workshop::Async>("ASYNC_CPP", 0, true);
} catch(maciErrType::CannotGetComponentExImpl& _ex) {
_ex.log();
return -1;
}
CBuLongImpl cb;
ACS::CBuLong_var cbObj = cb._this();
ACS_SHORT_LOG((LM_INFO, "%s", cb.status));
comp->delayAsync(8, cbObj.in());
ACS_SHORT_LOG((LM_INFO, "%s", cb.status));
sleep(5);
ACS_SHORT_LOG((LM_INFO, "%s", cb.status));
sleep(5);
ACS_SHORT_LOG((LM_INFO, "%s", cb.status));
ACS_SHORT_LOG((LM_INFO, "%ul", cb.value));
try {
client.releaseComponent("ASYNC_CPP");
} catch(maciErrType::CannotReleaseComponentExImpl &_ex) {
_ex.log();
return -1;
}
client.logout();
ACE_OS::sleep(3);
return 0;
} |
Code Block | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
#ifndef _ASYNC_CLIENT_IMPL_H
#define _ASYNC_CLIENT_IMPL_H
#include <acscomponentImpl.h>
#include <AsyncS.h>
class AsyncClientImpl : public virtual acscomponent::ACSComponentImpl, public virtual POA_workshop::Async
{
public:
AsyncImpl(const ACE_CString& name, maci::ContainerServices* containerServices);
virtual ~AsyncImpl();
void delayAsync(ACS::uLong delay, acs::examples::MyCallback_ptr cb);
};
#endif
|
Code Block | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
#include <AsyncImpl.h>
#include <ACSErrTypeOK.h>
AsyncImpl::AsyncImpl(const ACE_CString& name, maci::ContainerServices* containerServices) : acscomponent::ACSComponentImpl(name, containerServices) {
}
AsyncImpl::~AsyncImpl() {
}
void AsyncImpl::delayAsync(ACS::uLong delay, acs::examples::MyCallback_ptr cb) {
cb->update("WORKING");
sleep(delay);
cb->update("DONE");
}
/* --------------- [ MACI DLL support functions ] -----------------*/
#include <maciACSComponentDefines.h>
MACI_DLL_SUPPORT_FUNCTIONS(AsyncImpl)
/* ----------------------------------------------------------------*/ |