From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on polar.synack.me X-Spam-Level: X-Spam-Status: No, score=-1.3 required=5.0 tests=BAYES_00,INVALID_MSGID autolearn=no autolearn_force=no version=3.4.4 X-Google-Language: ENGLISH,ASCII-7-bit X-Google-Thread: 103376,97d2772750ae15ad X-Google-Attributes: gid103376,public X-Google-Thread: f753e,97d2772750ae15ad X-Google-Attributes: gidf753e,public From: SpamSpamSpam Subject: Re: Extended comm loss and TCP/IP Date: 1999/04/15 Message-ID: <3715C3E5.46C5704B@spam.com>#1/1 X-Deja-AN: 466672020 Content-Transfer-Encoding: 7bit References: <37142321.E3B0C8BE@pacbell.net> Content-Type: text/plain; charset=us-ascii Organization: spameater Mime-Version: 1.0 Newsgroups: comp.lang.ada,comp.object.corba Date: 1999-04-15T00:00:00+00:00 List-Id: Hi Mark, Your problem is CORBA specific, though if ORBExpress raised a COMMS_FAILURE exception within the client this would help! Theres a book "CORBA Design Patterns" that you might consider. Its on my list.......... For an Ada view :)... You could make ALL the calls "oneway" and then enter a guarded "select" which accepts a callback with the specified delay period or assumes a comms failure, but this requires alot of extra work for an exceptional condition the ORB should detect and report. It would be better if ORBExpress on the client side "polled" the server while awaiting responses, raising the COMMS_FAILURE exception if the ORB server side failed to respond. After all this is all meant to be invisible to you (including the TCP/IP networking). Alternative - Wrap your calls in tasks, assume comms failure and surprise yourself with a completion exception ! ------------------------------------------------------------------------------------------- with CorbaCallXWrap ; procedure Client is begin -- blar, blar , blar ..... declare CorbaCall : CorbaCallXWrap.Object ; -- kick off call RoughTimeout : constant Duration := 600 ; begin Delay ( RoughTimeout ) ; -- Comms fail code here -- raise COMMS_FAILURE for example exception when CorbaCallXWrap.Finished => null ; end ; -- blar, blar , blar end Client ; --------------------------------------------------------------------------------- package CorbaCallXWrap is task type Object ; Finished : exception ; end CorbaCallXWrap ; ----------------------------------------------------------------------------------- package body CorbaCallXWrap is -- Dummy real would with in procedure CorbaCall is begin null ; end ; task body Object is Finished : exception ; begin CorbaCall ; raise Finished ; end Object ; end CorbaCallXWrap ; Cheers Glen