Path: utzoo!utgpu!news-server.csri.toronto.edu!cs.utexas.edu!sdd.hp.com!mips!apple!agate!ucbvax!rufsun6.ffm.fgan.de!mhs From: mhs@rufsun6.ffm.fgan.de (X.400) Newsgroups: comp.protocols.iso.dev-environ Subject: RE: about remote operations Message-ID: <9104240829.AA10358@rufsun6.ffm.fgan.de> Date: 24 Apr 91 08:29:51 GMT Sender: daemon@ucbvax.BERKELEY.EDU Distribution: inet Organization: The Internet Lines: 43 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