|
|
1.1 root 1: /*
2: * Server for Clearinghouse.
3: */
4: #include "Clearinghouse2.h"
5: #include <xnscourier/except.h>
6:
7: extern CourierConnection *_serverConnection;
8:
9: extern Clearinghouse2_RetrieveAddressesResults Clearinghouse2_RetrieveAddresses();
10:
11: server_Clearinghouse2_RetrieveAddresses(_buf)
12: register Unspecified *_buf;
13: {
14: register Unspecified *_bp = _buf;
15: register LongCardinal _n;
16: Clearinghouse2_RetrieveAddressesResults _Results;
17:
18: _Results = Clearinghouse2_RetrieveAddresses(_serverConnection, 0);
19: _n = sizeof_Clearinghouse2_RetrieveAddressesResults(&_Results);
20: _bp = Allocate(_n);
21: externalize_Clearinghouse2_RetrieveAddressesResults(&_Results, _bp);
22: SendReturnMessage(_n, _bp);
23: Deallocate(_bp);
24: }
25:
26: Server(skipcount,skippedwords)
27: int skipcount;
28: Unspecified skippedwords[];
29: {
30: Cardinal _procedure;
31: register Unspecified *_buf;
32: LongCardinal programnum;
33: Cardinal versionnum;
34: Cardinal _n;
35:
36: for (;;) {
37: _buf = ReceiveCallMessage(&_procedure, skipcount, skippedwords);
38: DURING switch (_procedure) {
39: case 0:
40: server_Clearinghouse2_RetrieveAddresses(_buf);
41: break;
42: default:
43: NoSuchProcedureValue("Clearinghouse", _procedure);
44: break;
45: } HANDLER {
46: Deallocate(_buf);
47: switch (&Exception.Code) {
48: case Clearinghouse2_WrongServer:
49: _n = sizeof_T_cn2_48((T_cn2_48 *)Exception.Message);
50: _buf = Allocate(_n);
51: (void) externalize_T_cn2_48((T_cn2_48*)Exception.Message, _buf);
52: SendAbortMessage(Exception.Code-ERROR_OFFSET, _n, _buf);
53: break;
54: case Clearinghouse2_UpdateError:
55: _n = sizeof_T_cn2_47((T_cn2_47 *)Exception.Message);
56: _buf = Allocate(_n);
57: (void) externalize_T_cn2_47((T_cn2_47*)Exception.Message, _buf);
58: SendAbortMessage(Exception.Code-ERROR_OFFSET, _n, _buf);
59: break;
60: case Clearinghouse2_PropertyError:
61: _n = sizeof_T_cn2_46((T_cn2_46 *)Exception.Message);
62: _buf = Allocate(_n);
63: (void) externalize_T_cn2_46((T_cn2_46*)Exception.Message, _buf);
64: SendAbortMessage(Exception.Code-ERROR_OFFSET, _n, _buf);
65: break;
66: case Clearinghouse2_CallError:
67: _n = sizeof_T_cn2_45((T_cn2_45 *)Exception.Message);
68: _buf = Allocate(_n);
69: (void) externalize_T_cn2_45((T_cn2_45*)Exception.Message, _buf);
70: SendAbortMessage(Exception.Code-ERROR_OFFSET, _n, _buf);
71: break;
72: case Clearinghouse2_AuthenticationError:
73: _n = sizeof_T_cn2_44((T_cn2_44 *)Exception.Message);
74: _buf = Allocate(_n);
75: (void) externalize_T_cn2_44((T_cn2_44*)Exception.Message, _buf);
76: SendAbortMessage(Exception.Code-ERROR_OFFSET, _n, _buf);
77: break;
78: case Clearinghouse2_ArgumentError:
79: _n = sizeof_T_cn2_43((T_cn2_43 *)Exception.Message);
80: _buf = Allocate(_n);
81: (void) externalize_T_cn2_43((T_cn2_43*)Exception.Message, _buf);
82: SendAbortMessage(Exception.Code-ERROR_OFFSET, _n, _buf);
83: break;
84: default:
85: _buf = Allocate(0);
86: SendRejectMessage(unspecifiedError, 0, _buf);
87: break;
88: }
89: } END_HANDLER;
90: Deallocate(_buf);
91: for (;;) {
92: skipcount = LookAheadCallMsg(&programnum, &versionnum,
93: skippedwords);
94: if (skipcount < 0) return(0); /* timed out */
95: if (programnum != 2 || versionnum != 2)
96: ExecCourierProgram(programnum, versionnum,
97: skipcount, skippedwords);
98: } /* can't exec that program */
99: }
100: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.