| 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.
 | 
|---|