Archived

This forum has been archived. Please start a new discussion on GitHub.

Collocation

My image acquisition (IMAQ) service has '["ami"] int startAcquire()' - the server will acquire an image from a camera via a framegrabber, and return an image ID when the acquistion is complete. The acquisition may wait many seconds for a trigger to come in, so I want this to be an asynchronous invocation (and possibly an asynchronous dispatch, too).

Section 29.17 states that "Asynchronous method invocation (AMI) and asynchronous method dispatch(AMD) cannot be used with collocated invocations". This implies that my interface would not behave the same if I collocated my IMAQ service and a client.

How should I handle an issue like this to produce a consistent interface with the semantics I require?

Thanks,
Mark

Comments

  • mes
    mes California
    Hi Mark,

    The documentation needs to be clarified. You can make asynchronous invocations on collocated servants, but those invocations will not use collocated optimization. In other words, asynchronous invocations on a collocated servant will still be marshaled and sent over the local network stack, just like if the servant was in a separate process or on another host.

    So the semantics are preserved, but the invocation is more expensive than a synchronous invocation that could take advantage of collocation optimization.

    We will fix the manual.

    Take care,
    - Mark