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