Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Code Block
languagecpp
titleAsyncImpl.hcpp
linenumberstrue
collapsetrue
#include <AsyncImpl.h>
 
AsyncImpl::AsyncImpl(const ACE_CString& name, maci::ContainerServices* containerServices) : acscomponent::ACSComponentImpl(name, containerServices) {
}

AsyncImpl::~AsyncImpl() {
}

void AsyncImpl::delayResult(ACS::uLong delay, ACS::CBuLong cb, ACS::CBDescIn desc) {
    ACSErr::Completion completion; 
    ACS::CBDescOut descOut;


    completion = ACSErrTypeOK::ACSErrOKCompletion()
    cb->working(0, completion, descOut);
    sleep(delay);
    cb->done(delay, completion, descOut);
}


/* --------------- [ MACI DLL support functions ] -----------------*/
#include <maciACSComponentDefines.h>
MACI_DLL_SUPPORT_FUNCTIONS(AsyncImpl)
/* ----------------------------------------------------------------*/

...

Code Block
<e Name="ASYNC"
   Code="asyncImpl"
   Type="IDL:alma/workshop/Async:1.0"
   Container="bilboContainer"
   ImplLang="cpp"
   KeepAliveTime="0"
/>

Python

Code Block
languagepy
titleAsyncClient.py
linenumberstrue
collapsetrue
import ACS
import time


from Acspy.Common.Callbacks import CBuLong
from Acspy.Clients.SimpleClient import PySimpleClient


client = PySimpleClient()
comp = client.getComponent('ASYNC')


cb = CBuLong()
cbObj = client.activateOffShoot(cb)
desc = CBDescIn(0, 0, 0)


print(cb.status)
comp.delayResult(8, cbObj, desc)


print(cb.status)
time.sleep(5)
print(cb.status)
time.sleep(5)
print(cb.status)


print(cb.values)


client.releaseComponent(comp.name)
client.disconnect()

Java

Code Block
languagejava
titleAsyncClient.java
linenumberstrue
collapsetrue
package ...;


import java.util.logging.Logger;


import alma.acs.component.client.ComponentClient;


import alma.ACS.CBDescIn;
import alma.ACS.CBDescOut;
import alma.ACSErr.Completion;


import alma.workshop.Async;
import alma.workshop.AsyncHelper;


import alma.ACS.CBuLong;
import alma.ACS.CBuLongPOA;


public class AsyncClient extends ComponentClient {
    class CBuLongImpl extends CBuLongPOA
    {
        public unsigned long value;
        public String status;
        public MyTestCBvoid(Logger logger) {
            status = "INIT";
            this.value = 0;
        }
        public void working(unsigned long value, Completion completion, CBDescOut desc) {
            status = "WORKING";
            this.value = value;
        }
        public void done(unsigned long value, Completion completion, CBDescOut desc) {
            status = "DONE";
            this.value = value;
        }
        public boolean negotiate(long timeToTransit, CBDescOut desc) {
            return true;
        }
    }


    private Logger m_logger;


    public AsyncClient() {
        String managerLoc = System.getProperty("ACS.manager");
        super(null, managerLoc, clientName);
        m_logger = getContainerServices().getLogger()
    }


    public doStuff() {
        org.omg.CORBA.Object obj = getContainerServices().getComponent("ASYNC");

        Async comp = AsyncHelper.narrow(obj);
        CBuLongImpl cb = new CBuLongImpl(m_logger);
        CBuLong cbObj = alma.ACS.CBuLongHelper.narrow(getContainerServices().activateOffShoot(cb));
        CBDescIn desc = new CBDescIn();

        m_logger.info(cb.status);
        comp.delayResult(8, cbObj, desc);

        m_logger.info(cb.status);
        Thread.sleep(5000);
        m_logger.info(cb.status);
        Thread.sleep(5000);

        m_logger.info(cb.status);
        m_logger.info(cb.value);


    }
    getContainerServices().releaseComponent("ASYNC");
    }

    public static void main(String[] args) {
        AsyncClient client = new AsyncClient();
        client.doStuff();


    }
}

C++

Code Block

Discussion

...