English: If send_slow fails, the routine send as a whole should fail, causing the caller to get an exception. send (m: MESSAGE) is -- Send m through fast link, if possible, otherwise through slow link. local tried_fast, tried_slow: BOOLEAN do if tried_fast then tried_slow := True send_slow (m) else tried_fast := True send_fast (m) end rescue if not tried_slow then retry end end The boolean local variables are initialized to False at the start.
Telugu: దీనిలో ఒక రొటీన్ send_fast అనేది సాధారణంగా ఒక సందేశాన్ని పంపడానికి ఉత్తమమైన విధానం, కాని ఇది విఫలమై, ఒక అసాధారణ పరిస్థితిని ఏర్పర్చవచ్చు. ఇలా జరిగితే, ఆల్గారిథమ్ తర్వాతసారి చాలా అరుదుగా విఫలమై send_slowను ఉపయోగిస్తుంది. send_slow కూడా విఫలమైనట్లయితే, రొటీన్ పంపడంలో పూర్తిగా విఫలమవుతుంది, దీని వలన కాలర్ ఒక అసాధారణ పరిస్థితిని ఎదుర్కొంటుంది. send (m: MESSAGE) is—Send m through fast link if possible, otherwise through slow link. local tried_fast, tried_slow: BOOLEAN do if tried_fast then tried_slow := True send_slow (m) else tried_fast := True send_fast (m) end rescue if not tried_slow then retry end end బూలియన్ స్థానిక చరరాశులు ప్రారంభంలో తప్పుగా సెట్ చేయబడతాయి. send_fast విఫలమైనట్లయితే, ప్రధాన భాగం (do క్లాజ్) మళ్లీ అమలు అవుతుంది, send_slowను అమలు చేస్తుంది. send_slow అమలు కూడా విఫలమైనట్లయితే, పునఃప్రయత్నం లేకుండా ముగించడానికి రిస్క్ క్లాజ్ అమలు అవుతుంది (ఆఖరి if లో else క్లాజ్ ఉండదు), దీని వలన మొత్తం రొటీన్ విఫలమవుతుంది.