| [453] | 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.
 | 
|---|