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 47 (Jun. 17, 2008))
|
---|
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.
|
---|