Archived

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

Blobject

When ice_invoke is invoked on a Blobject, is any demarshalling done to obtain the operation name, or is the operation name just part of the message request?

Comments

  • Yes, the operation name is unmarshaled, just like for any other operation. Only the operation parameters are not unmarshaled, but instead provided as a blob (sequence of bytes).

    Note that you should never invoke ice_invoke() on a blobject. ice_invoke() is invoked by the object adapter. Your code should implement ice_invoke() on a blobject, but never call it (in contrast to ice_invoke() on a proxy, where it is just reversed).
  • If a forwarder such as Glacier2 or IceStorm calls proxy->ice_invoke, the message request is remarshalled by proxy->ice_invoke, correct?
  • Not the message body (parameters, return values, etc.), because these are never unmarshaled. Only the message header (which includes identity, operation name, context, etc.) is remarshaled. Being able to forward requests without touching the message body is one of the big advantages of Blobjects, and allows to have fast request forwarding.