| [476] | 1 | { ************************************************************** | 
|---|
|  | 2 | Package: XWB - Kernel RPCBroker | 
|---|
|  | 3 | Date Created: Sept 18, 1997 (Version 1.1) | 
|---|
|  | 4 | Site Name: Oakland, OI Field Office, Dept of Veteran Affairs | 
|---|
|  | 5 | Developers: Danila Manapsal, Don Craven, Joel Ivey | 
|---|
|  | 6 | Description: Error handling for TRPCBroker. | 
|---|
|  | 7 | Current Release: Version 1.1 Patch 40 (January 7, 2005)) | 
|---|
|  | 8 | *************************************************************** } | 
|---|
|  | 9 |  | 
|---|
|  | 10 | unit Rpcberr; | 
|---|
|  | 11 |  | 
|---|
|  | 12 | interface | 
|---|
|  | 13 |  | 
|---|
|  | 14 | uses | 
|---|
|  | 15 | TRPCB, Winsock, Classes, Forms, SysUtils, Controls, | 
|---|
|  | 16 | StdCtrls, Buttons, ExtCtrls, Graphics, WinProcs; | 
|---|
|  | 17 |  | 
|---|
|  | 18 | type | 
|---|
|  | 19 | TfrmRpcbError = class(TForm) | 
|---|
|  | 20 | BitBtn1: TBitBtn; | 
|---|
|  | 21 | BitBtn3: TBitBtn; | 
|---|
|  | 22 | Label1: TLabel; | 
|---|
|  | 23 | Bevel1: TBevel; | 
|---|
|  | 24 | Symbol: TImage; | 
|---|
|  | 25 | Label2: TLabel; | 
|---|
|  | 26 | Label3: TLabel; | 
|---|
|  | 27 | lblAction: TLabel; | 
|---|
|  | 28 | lblCode: TLabel; | 
|---|
|  | 29 | lblMessage: TLabel; | 
|---|
|  | 30 | procedure FormCreate(Sender: TObject); | 
|---|
|  | 31 | end; | 
|---|
|  | 32 |  | 
|---|
|  | 33 | var | 
|---|
|  | 34 | frmRpcbError: TfrmRpcbError; | 
|---|
|  | 35 |  | 
|---|
|  | 36 | procedure ShowBrokerError(BrokerError: EBrokerError); | 
|---|
|  | 37 | procedure NetError(Action: string; ErrType: integer); | 
|---|
|  | 38 |  | 
|---|
|  | 39 | const | 
|---|
|  | 40 | XWBBASEERR = {WSABASEERR + 1} 20000; | 
|---|
|  | 41 |  | 
|---|
|  | 42 | {Broker Application Error Constants} | 
|---|
|  | 43 | XWB_NO_HEAP = XWBBASEERR + 1; | 
|---|
|  | 44 | XWB_M_REJECT = XWBBASEERR + 2; | 
|---|
|  | 45 | XWB_BadSignOn = XWBBASEERR + 4; | 
|---|
|  | 46 | XWB_BldConnectList = XWBBASEERR + 5; | 
|---|
|  | 47 | XWB_NullRpcVer = XWBBASEERR + 6; | 
|---|
|  | 48 | XWB_ExeNoMem = XWBBASEERR + 100; | 
|---|
|  | 49 | XWB_ExeNoFile = XWB_ExeNoMem +  2; | 
|---|
|  | 50 | XWB_ExeNoPath = XWB_ExeNoMem +  3; | 
|---|
|  | 51 | XWB_ExeShare = XWB_ExeNoMem +  5; | 
|---|
|  | 52 | XWB_ExeSepSeg = XWB_ExeNoMem +  6; | 
|---|
|  | 53 | XWB_ExeLoMem = XWB_ExeNoMem +  8; | 
|---|
|  | 54 | XWB_ExeWinVer = XWB_ExeNoMem + 10; | 
|---|
|  | 55 | XWB_ExeBadExe = XWB_ExeNoMem + 11; | 
|---|
|  | 56 | XWB_ExeDifOS = XWB_ExeNoMem + 12; | 
|---|
|  | 57 | XWB_RpcNotReg = XWBBASEERR + 201; | 
|---|
|  | 58 | implementation | 
|---|
|  | 59 | uses wsockc; | 
|---|
|  | 60 | {$R *.DFM} | 
|---|
|  | 61 |  | 
|---|
|  | 62 |  | 
|---|
|  | 63 | procedure ShowBrokerError(BrokerError: EBrokerError); | 
|---|
|  | 64 | begin | 
|---|
|  | 65 | try | 
|---|
|  | 66 | Application.CreateForm(TfrmRpcbError, frmRpcbError); | 
|---|
|  | 67 | with frmRpcbError do begin | 
|---|
|  | 68 | lblAction.Caption := BrokerError.Action; | 
|---|
|  | 69 | lblCode.Caption := IntToStr(BrokerError.Code); | 
|---|
|  | 70 | lblMessage.Caption := BrokerError.Mnemonic; | 
|---|
|  | 71 | ShowModal; | 
|---|
|  | 72 | end | 
|---|
|  | 73 | finally | 
|---|
|  | 74 | frmRpcbError.Release; | 
|---|
|  | 75 | end; | 
|---|
|  | 76 | end; | 
|---|
|  | 77 |  | 
|---|
|  | 78 |  | 
|---|
|  | 79 | procedure TfrmRpcbError.FormCreate(Sender: TObject); | 
|---|
|  | 80 | var | 
|---|
|  | 81 | FIcon: TIcon; | 
|---|
|  | 82 | begin | 
|---|
|  | 83 | FIcon := TIcon.Create; | 
|---|
|  | 84 | try | 
|---|
|  | 85 | FIcon.Handle := LoadIcon(0, IDI_HAND); | 
|---|
|  | 86 | Symbol.Picture.Graphic := FIcon; | 
|---|
|  | 87 | Symbol.BoundsRect := Bounds(Symbol.Left, Symbol.Top, FIcon.Width, FIcon.Height); | 
|---|
|  | 88 | finally | 
|---|
|  | 89 | FIcon.Free; | 
|---|
|  | 90 | end; | 
|---|
|  | 91 | end; | 
|---|
|  | 92 |  | 
|---|
|  | 93 | procedure NetError(Action : String; ErrType: integer); | 
|---|
|  | 94 | var | 
|---|
|  | 95 | x,s: string; | 
|---|
|  | 96 | r: integer; | 
|---|
|  | 97 | BrokerError: EBrokerError; | 
|---|
|  | 98 | begin | 
|---|
|  | 99 | Screen.Cursor := crDefault; | 
|---|
|  | 100 | r := 0; | 
|---|
|  | 101 | if ErrType > 0 then r := ErrType; | 
|---|
|  | 102 | if ErrType = 0 then | 
|---|
|  | 103 | begin | 
|---|
|  | 104 | r := WSAGetLastError; | 
|---|
|  | 105 | //        if r = WSAEINTR then xFlush := True; | 
|---|
|  | 106 | //        if WSAIsBlocking = True then WSACancelBlockingCall; | 
|---|
|  | 107 | end; | 
|---|
|  | 108 | Case r of | 
|---|
|  | 109 | WSAEINTR           : x := 'WSAEINTR'; | 
|---|
|  | 110 | WSAEBADF           : x := 'WSAEINTR'; | 
|---|
|  | 111 | WSAEFAULT          : x := 'WSAEFAULT'; | 
|---|
|  | 112 | WSAEINVAL          : x := 'WSAEINVAL'; | 
|---|
|  | 113 | WSAEMFILE          : x := 'WSAEMFILE'; | 
|---|
|  | 114 | WSAEWOULDBLOCK     : x := 'WSAEWOULDBLOCK'; | 
|---|
|  | 115 | WSAEINPROGRESS     : x := 'WSAEINPROGRESS'; | 
|---|
|  | 116 | WSAEALREADY        : x := 'WSAEALREADY'; | 
|---|
|  | 117 | WSAENOTSOCK        : x := 'WSAENOTSOCK'; | 
|---|
|  | 118 | WSAEDESTADDRREQ    : x := 'WSAEDESTADDRREQ'; | 
|---|
|  | 119 | WSAEMSGSIZE        : x := 'WSAEMSGSIZE'; | 
|---|
|  | 120 | WSAEPROTOTYPE      : x := 'WSAEPROTOTYPE'; | 
|---|
|  | 121 | WSAENOPROTOOPT     : x := 'WSAENOPROTOOPT'; | 
|---|
|  | 122 | WSAEPROTONOSUPPORT : x := 'WSAEPROTONOSUPPORT'; | 
|---|
|  | 123 | WSAESOCKTNOSUPPORT : x := 'WSAESOCKTNOSUPPORT'; | 
|---|
|  | 124 | WSAEOPNOTSUPP      : x := 'WSAEOPNOTSUPP'; | 
|---|
|  | 125 | WSAEPFNOSUPPORT    : x := 'WSAEPFNOSUPPORT'; | 
|---|
|  | 126 | WSAEAFNOSUPPORT    : x := 'WSAEAFNOSUPPORT'; | 
|---|
|  | 127 | WSAEADDRINUSE      : x := 'WSAEADDRINUSE'; | 
|---|
|  | 128 | WSAEADDRNOTAVAIL   : x := 'WSAEADDRNOTAVAIL'; | 
|---|
|  | 129 | WSAENETDOWN        : x := 'WSAENETDOWN'; | 
|---|
|  | 130 | WSAENETUNREACH     : x := 'WSAENETUNREACH'; | 
|---|
|  | 131 | WSAENETRESET       : x := 'WSAENETRESET'; | 
|---|
|  | 132 | WSAECONNABORTED    : x := 'WSAECONNABORTED'; | 
|---|
|  | 133 | WSAECONNRESET      : x := 'WSAECONNRESET'; | 
|---|
|  | 134 | WSAENOBUFS         : x := 'WSAENOBUFS'; | 
|---|
|  | 135 | WSAEISCONN         : x := 'WSAEISCONN'; | 
|---|
|  | 136 | WSAENOTCONN        : x := 'WSAENOTCONN'; | 
|---|
|  | 137 | WSAESHUTDOWN       : x := 'WSAESHUTDOWN'; | 
|---|
|  | 138 | WSAETOOMANYREFS    : x := 'WSAETOOMANYREFS'; | 
|---|
|  | 139 | WSAETIMEDOUT       : x := 'WSAETIMEDOUT'; | 
|---|
|  | 140 | WSAECONNREFUSED    : x := 'WSAECONNREFUSED'; | 
|---|
|  | 141 | WSAELOOP           : x := 'WSAELOOP'; | 
|---|
|  | 142 | WSAENAMETOOLONG    : x := 'WSAENAMETOOLONG'; | 
|---|
|  | 143 | WSAEHOSTDOWN       : x := 'WSAEHOSTDOWN'; | 
|---|
|  | 144 | WSAEHOSTUNREACH    : x := 'WSAEHOSTUNREACH'; | 
|---|
|  | 145 | WSAENOTEMPTY       : x := 'WSAENOTEMPTY'; | 
|---|
|  | 146 | WSAEPROCLIM        : x := 'WSAEPROCLIM'; | 
|---|
|  | 147 | WSAEUSERS          : x := 'WSAEUSERS'; | 
|---|
|  | 148 | WSAEDQUOT          : x := 'WSAEDQUOT'; | 
|---|
|  | 149 | WSAESTALE          : x := 'WSAESTALE'; | 
|---|
|  | 150 | WSAEREMOTE         : x := 'WSAEREMOTE'; | 
|---|
|  | 151 | WSASYSNOTREADY     : x := 'WSASYSNOTREADY'; | 
|---|
|  | 152 | WSAVERNOTSUPPORTED : x := 'WSAVERNOTSUPPORTED'; | 
|---|
|  | 153 | WSANOTINITIALISED  : x := 'WSANOTINITIALISED'; | 
|---|
|  | 154 | WSAHOST_NOT_FOUND  : x := 'WSAHOST_NOT_FOUND'; | 
|---|
|  | 155 | WSATRY_AGAIN       : x := 'WSATRY_AGAIN'; | 
|---|
|  | 156 | WSANO_RECOVERY     : x := 'WSANO_RECOVERY'; | 
|---|
|  | 157 | WSANO_DATA         : x := 'WSANO_DATA'; | 
|---|
|  | 158 |  | 
|---|
|  | 159 | XWB_NO_HEAP        : x := 'Insufficient Heap'; | 
|---|
|  | 160 | XWB_M_REJECT       : x := 'M Error - Use ^XTER'; | 
|---|
|  | 161 | XWB_BadSignOn      : x := 'Sign-on was not completed.'; | 
|---|
|  | 162 | XWB_ExeNoMem       : x := 'System was out of memory, executable file was corrupt, or relocations were invalid.'; | 
|---|
|  | 163 | XWB_ExeNoFile      : x := 'File was not found.'; | 
|---|
|  | 164 | XWB_ExeNoPath      : x := 'Path was not found.'; | 
|---|
|  | 165 | XWB_ExeShare       : x := 'Attempt was made to dynamically link to a task,' + | 
|---|
|  | 166 | ' or there was a sharing or network-protection error.'; | 
|---|
|  | 167 | XWB_ExeSepSeg      : x := 'Library required separate data segments for each task.'; | 
|---|
|  | 168 | XWB_ExeLoMem       : x := 'There was insufficient memory to start the application.'; | 
|---|
|  | 169 | XWB_ExeWinVer      : x := 'Windows version was incorrect.'; | 
|---|
|  | 170 | XWB_ExeBadExe      : x := 'Executable file was invalid.' + | 
|---|
|  | 171 | ' Either it was not a Windows application or there was an error in the .EXE image.'; | 
|---|
|  | 172 | XWB_ExeDifOS       : x := 'Application was designed for a different operating system.'; | 
|---|
|  | 173 | XWB_RpcNotReg      : X := 'Remote procedure not registered to application.'; | 
|---|
|  | 174 | XWB_BldConnectList : x := 'BrokerConnections list could not be created'; | 
|---|
|  | 175 | XWB_NullRpcVer     : x := 'RpcVersion cannot be empty.' + #13 + 'Default is 0 (zero).'; | 
|---|
|  | 176 | else x := IntToStr(r); | 
|---|
|  | 177 | end; | 
|---|
|  | 178 | s := 'Error encountered.' + chr(13)+chr(10) + 'Function was: ' + Action + chr(13)+chr(10) + 'Error was: ' + x; | 
|---|
|  | 179 | BrokerError := EBrokerError.Create(s); | 
|---|
|  | 180 | BrokerError.Action := Action; | 
|---|
|  | 181 | BrokerError.Code := r; | 
|---|
|  | 182 | BrokerError.Mnemonic := x; | 
|---|
|  | 183 | raise BrokerError; | 
|---|
|  | 184 | end; | 
|---|
|  | 185 |  | 
|---|
|  | 186 | end. | 
|---|