Re: ORBit2 and DSI



On Fri, Oct 24, 2003 at 03:05:19PM +0100, Michael Meeks wrote:
> > 	       * the caller must provide any values for out args
> > 	       * before returning (inout argument values may be changed)
> > 	       */
> > 	      void		 arguments(inout NVList nv);
> 
> 	This I guess is the problem; that the spec. says we must fill out inout
> argument_values, before return; so we can't hang around and send the
> reply much later in some more cunning way and be compliant, which is a
> shame.

if i understand the spec correctly, you should be able to get around
that, but i think the real question is about compliance.

the DSI spec is already so vague, and the POA interface so undefined
that compliance isn't really a big issue: you are going to have to
tweak your DSI servant for the ORB. what you want to conserve is the
principle of least surprise (a programmer familar with the spec should
be able to figure out what they need to do relatively painlessly).

so if i wanted to get what i think you're shooting for i'd do the
following: have the orb put a server request object onto a servant
specific queue.  expose the queue via an API

let's say ,
CORBA_ServerRequest * ORBit_get_server_request(DSIServant * s),

then provide another call that queues it back to the orb, 
void ORBit_return_server_request(DSIServant * s, CORBA_ServerRequest * srq);
.

all the operations on the server request object execute in the
caller's context on data packaged in the server request when it's
created.

finally, assume that the two calls bracket the handler invocation, and
keep all the rest of the semantics the same.

hope that makes some sense,
	rob
----
Robert Melby
Georgia Institute of Technology, Atlanta Georgia, 30332
uucp:     ...!{decvax,hplabs,ncar,purdue,rutgers}!gatech!prism!gt4255a
Internet: async@cc.gatech.edu



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]