Annotation of 43BSDTahoe/new/xns/examples/ch/CH2server.c, revision 1.1

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: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.