Annotation of 43BSD/contrib/xns/examples/ch/CH2server.c, revision 1.1.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.