<> <> <> <> <> <> <> <> <> DIRECTORY AlpineEnvironment, AlpineImport USING [Handle], AlpineTransMgrRpcControl, BasicTime, RPC; AlpineImportImpl: MONITOR LOCKS s.first USING s: AlpineImport.Handle IMPORTS AlpineTransMgrRpcControl, BasicTime, RPC EXPORTS AlpineImport = BEGIN TransMgrInterfaceCallFailed: PUBLIC ENTRY PROC [ s: AlpineImport.Handle, i: AlpineTransMgrRpcControl.InterfaceRecord] = { IF s.first.local THEN ERROR; IF s.first.transMgrInterface = i THEN { s.first.mostRecentBind _ BasicTime.earliestGMT; s.first.transMgrInterface _ NIL; }; }; NewInterfaces: PUBLIC PROC [s: AlpineImport.Handle] = { <> <> <> IF BasicTime.Period[from: s.first.mostRecentBind, to: BasicTime.Now[]] < importRetryInterval THEN GOTO BindingFailed; BEGIN ENABLE RPC.ImportFailed => SELECT why FROM communications => GOTO BindingFailed; <> badType, badInstance, badVersion => ERROR; <> wrongVersion, unbound, stubProtocol => GOTO BindingFailed; <> ENDCASE => ERROR; s.first.mostRecentBind _ BasicTime.Now[]; IF s.first.transMgrInterface = NIL THEN s.first.transMgrInterface _ AlpineTransMgrRpcControl.ImportNewInterface[ interfaceName: [type: "AlpineTransMgr.alpine", instance: s.first.server]]; END --ENABLE--; EXITS BindingFailed => NULL; }; importRetryInterval: INT = 15; -- seconds -- END.--AlpineImportImpl <> <> <<>>