[comp.protocols.iso.dev-environ] about remote operations

ghatak@CS.UTK.EDU (04/10/91)

 Hello all,
   How does one tell rosy that certain operations will be invoked by the
server (PERFORMER in most cases) and not by the client (the INVOKER in most
cases) withiut marking them as linked operations ?

   Right now rosy thinks that ALL the operations will be invoked by the
INVOKER. Any thoughts on this will be appreciated.

Thanks,
Subhendu Ghatak

shia@dset.UUCP (Dan Shia) (04/12/91)

Subhendu,

>   How does one tell rosy that certain operations will be invoked by the
>server (PERFORMER in most cases) and not by the client (the INVOKER in most
>cases) withiut marking them as linked operations ?
>   Right now rosy thinks that ALL the operations will be invoked by the
>INVOKER. Any thoughts on this will be appreciated.

You are right. You cannot define operations invoked by the server with ROSY.
However, our Distributed Systems Generator (DSG) allows you to do so with ISODE.
If you need further information, please send me your postal address.

Dan

mhs@rufsun6.ffm.fgan.de (X.400) (04/24/91)

Dear Subhendu,

we refer to your question concerning the invocation of operations
by both the initiator and the responder.
Because we have not seen any satisfying answer in the list we want 
to present our solution. Any comments are very welcome.

Our work is based on the responder and the interactive initiator as shown
in the example in chapter 10 (Volume 4 of the ISODE 6.0 user's manual, 
155 pp.). We modified the main programs (lookup.c, lookupd.c in the example), 
the makefile and the rosy routines ryinitiator.c and ryresponder.c. 
In addition we have written a small awk-procedure which transforms the 
file MODULE-ops.h.  We have successfully tested these modifications in an 
implementation of the X.400 P7 protocol.

In both of the main programs we replaced the table "dispatches" by
two tables "ivdispatches" and "pfdispatches". The table "ivdispatches"
has the structure of the old initiator's dispatches table and
"pfdispatches" has the structure of the old responder's dispatches table. 
In the parameter list of ryinitiator and ryresponder the dispatches entry
is replaced by the two entries ivdispatches and pfdispatches. 

The ryinitiator routine must register the operation handler functions
of those operations for which it is the performer (call of RyDispatch).
The ryinitiator routine now has to react upon two types of events:
keyboard input and invocations by the responder (xselect). In case of 
an invocation by the responder the routine RyWait is called with an 
invocation id of zero. This results in performing the operation.

The ryresponder routine invokes operations by calling the routine invoke.

The awk procedure changes the #ifdef-statements in MODULE-ops.c. It replaces
"#ifdef INVOKER" by "#ifdef INITIATOR" or "#ifdef RESPONDER". The actual 
replacement depends on a user-defined table defining which operations are 
invoked by the initiator and which are invoked by the responder.

The makefile was changed according to the above outlined modifications
(e. g. -DRESPONDER instead of -DPERFORMER). 
  
Further information (including the sources) is available.

Norbert Haak
Reinhard Detering