⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ch2server.c

📁 早期freebsd实现
💻 C
字号:
/* * Server for Clearinghouse. */#include "Clearinghouse2.h"#include <xnscourier/except.h>extern CourierConnection *_serverConnection;extern Clearinghouse2_RetrieveAddressesResults Clearinghouse2_RetrieveAddresses();server_Clearinghouse2_RetrieveAddresses(_buf)	register Unspecified *_buf;{	register Unspecified *_bp = _buf;	register LongCardinal _n;	Clearinghouse2_RetrieveAddressesResults _Results;	_Results = Clearinghouse2_RetrieveAddresses(_serverConnection, 0);	_n = sizeof_Clearinghouse2_RetrieveAddressesResults(&_Results);	_bp = Allocate(_n);	externalize_Clearinghouse2_RetrieveAddressesResults(&_Results, _bp);	SendReturnMessage(_n, _bp);	Deallocate(_bp);}Server(skipcount,skippedwords)	int skipcount;	Unspecified skippedwords[];{	Cardinal _procedure;	register Unspecified *_buf;	LongCardinal programnum;	Cardinal versionnum;	Cardinal _n;	for (;;) {		_buf = ReceiveCallMessage(&_procedure, skipcount, skippedwords);		DURING switch (_procedure) {		case 0:			server_Clearinghouse2_RetrieveAddresses(_buf);			break;		default:			NoSuchProcedureValue("Clearinghouse", _procedure);			break;		} HANDLER {		    Deallocate(_buf);		    switch (&Exception.Code) {		    case Clearinghouse2_WrongServer:			_n = sizeof_T_cn2_48((T_cn2_48 *)Exception.Message);			_buf = Allocate(_n);			(void) externalize_T_cn2_48((T_cn2_48*)Exception.Message, _buf);			SendAbortMessage(Exception.Code-ERROR_OFFSET, _n, _buf);			break;		    case Clearinghouse2_UpdateError:			_n = sizeof_T_cn2_47((T_cn2_47 *)Exception.Message);			_buf = Allocate(_n);			(void) externalize_T_cn2_47((T_cn2_47*)Exception.Message, _buf);			SendAbortMessage(Exception.Code-ERROR_OFFSET, _n, _buf);			break;		    case Clearinghouse2_PropertyError:			_n = sizeof_T_cn2_46((T_cn2_46 *)Exception.Message);			_buf = Allocate(_n);			(void) externalize_T_cn2_46((T_cn2_46*)Exception.Message, _buf);			SendAbortMessage(Exception.Code-ERROR_OFFSET, _n, _buf);			break;		    case Clearinghouse2_CallError:			_n = sizeof_T_cn2_45((T_cn2_45 *)Exception.Message);			_buf = Allocate(_n);			(void) externalize_T_cn2_45((T_cn2_45*)Exception.Message, _buf);			SendAbortMessage(Exception.Code-ERROR_OFFSET, _n, _buf);			break;		    case Clearinghouse2_AuthenticationError:			_n = sizeof_T_cn2_44((T_cn2_44 *)Exception.Message);			_buf = Allocate(_n);			(void) externalize_T_cn2_44((T_cn2_44*)Exception.Message, _buf);			SendAbortMessage(Exception.Code-ERROR_OFFSET, _n, _buf);			break;		    case Clearinghouse2_ArgumentError:			_n = sizeof_T_cn2_43((T_cn2_43 *)Exception.Message);			_buf = Allocate(_n);			(void) externalize_T_cn2_43((T_cn2_43*)Exception.Message, _buf);			SendAbortMessage(Exception.Code-ERROR_OFFSET, _n, _buf);			break;		    default:			_buf = Allocate(0);			SendRejectMessage(unspecifiedError, 0, _buf);			break;		    }		} END_HANDLER;		Deallocate(_buf);		for (;;) {			skipcount = LookAheadCallMsg(&programnum, &versionnum,						     skippedwords);			if (skipcount < 0) return(0);	/* timed out */			if (programnum != 2 || versionnum != 2)				ExecCourierProgram(programnum, versionnum,						   skipcount, skippedwords);		}  /* can't exec that program */	}}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -