This is gk_rpcServer.c in view mode; [Download] [Up]
#import "./MiG/Library/gk_rpc_types.h" /* Module gk_rpc */ #define EXPORT_BOOLEAN #include <mach/boolean.h> #include <mach/message.h> #include <mach/mig_errors.h> #ifndef mig_internal #define mig_internal static #endif #ifndef TypeCheck #define TypeCheck 1 #endif #ifndef UseExternRCSId #ifdef hc #define UseExternRCSId 1 #endif #endif #ifndef UseStaticMsgType #if !defined(hc) || defined(__STDC__) #define UseStaticMsgType 1 #endif #endif #define novalue void #define msg_request_port msg_local_port #define msg_reply_port msg_remote_port #include <mach/std_types.h> /* Routine set_gk */ mig_internal novalue _Xset_gk (msg_header_t *InHeadP, msg_header_t *OutHeadP) { typedef struct { msg_header_t Head; msg_type_t aType; int a; } Request; typedef struct { msg_header_t Head; msg_type_t RetCodeType; kern_return_t RetCode; } Reply; register Request *In0P = (Request *) InHeadP; register Reply *OutP = (Reply *) OutHeadP; extern kern_return_t set_gk (port_t server, int a); #if TypeCheck boolean_t msg_simple; #endif TypeCheck unsigned int msg_size; #if UseStaticMsgType static const msg_type_t aCheck = { /* msg_type_name = */ MSG_TYPE_INTEGER_32, /* msg_type_size = */ 32, /* msg_type_number = */ 1, /* msg_type_inline = */ TRUE, /* msg_type_longform = */ FALSE, /* msg_type_deallocate = */ FALSE, /* msg_type_unused = */ 0 }; #endif UseStaticMsgType #if TypeCheck msg_size = In0P->Head.msg_size; msg_simple = In0P->Head.msg_simple; if ((msg_size != 32) || (msg_simple != TRUE)) { OutP->RetCode = MIG_BAD_ARGUMENTS; return; } #endif TypeCheck #if TypeCheck #if UseStaticMsgType if (* (int *) &In0P->aType != * (int *) &aCheck) #else UseStaticMsgType if ((In0P->aType.msg_type_inline != TRUE) || (In0P->aType.msg_type_longform != FALSE) || (In0P->aType.msg_type_name != MSG_TYPE_INTEGER_32) || (In0P->aType.msg_type_number != 1) || (In0P->aType.msg_type_size != 32)) #endif UseStaticMsgType { OutP->RetCode = MIG_BAD_ARGUMENTS; goto punt0; } #define label_punt0 #endif TypeCheck OutP->RetCode = set_gk(In0P->Head.msg_request_port, In0P->a); #ifdef label_punt0 #undef label_punt0 punt0: #endif label_punt0 if (OutP->RetCode != KERN_SUCCESS) return; msg_size = 32; OutP->Head.msg_simple = TRUE; OutP->Head.msg_size = msg_size; } /* SimpleRoutine set_gk_oneway */ mig_internal novalue _Xset_gk_oneway (msg_header_t *InHeadP, msg_header_t *OutHeadP) { typedef struct { msg_header_t Head; msg_type_t aType; int a; } Request; typedef struct { msg_header_t Head; msg_type_t RetCodeType; kern_return_t RetCode; } Reply; register Request *In0P = (Request *) InHeadP; register Reply *OutP = (Reply *) OutHeadP; extern kern_return_t set_gk_oneway (port_t server, int a); #if TypeCheck boolean_t msg_simple; #endif TypeCheck unsigned int msg_size; #if UseStaticMsgType static const msg_type_t aCheck = { /* msg_type_name = */ MSG_TYPE_INTEGER_32, /* msg_type_size = */ 32, /* msg_type_number = */ 1, /* msg_type_inline = */ TRUE, /* msg_type_longform = */ FALSE, /* msg_type_deallocate = */ FALSE, /* msg_type_unused = */ 0 }; #endif UseStaticMsgType #if TypeCheck msg_size = In0P->Head.msg_size; msg_simple = In0P->Head.msg_simple; if ((msg_size != 32) || (msg_simple != TRUE)) { OutP->RetCode = MIG_BAD_ARGUMENTS; return; } #endif TypeCheck #if TypeCheck #if UseStaticMsgType if (* (int *) &In0P->aType != * (int *) &aCheck) #else UseStaticMsgType if ((In0P->aType.msg_type_inline != TRUE) || (In0P->aType.msg_type_longform != FALSE) || (In0P->aType.msg_type_name != MSG_TYPE_INTEGER_32) || (In0P->aType.msg_type_number != 1) || (In0P->aType.msg_type_size != 32)) #endif UseStaticMsgType { OutP->RetCode = MIG_BAD_ARGUMENTS; goto punt0; } #define label_punt0 #endif TypeCheck (void) set_gk_oneway(In0P->Head.msg_request_port, In0P->a); OutP->RetCode = MIG_NO_REPLY; #ifdef label_punt0 #undef label_punt0 punt0: #endif label_punt0 ; } /* Routine send_string */ mig_internal novalue _Xsend_string (msg_header_t *InHeadP, msg_header_t *OutHeadP) { typedef struct { msg_header_t Head; msg_type_long_t aType; gk_cstring a; } Request; typedef struct { msg_header_t Head; msg_type_t RetCodeType; kern_return_t RetCode; } Reply; register Request *In0P = (Request *) InHeadP; register Reply *OutP = (Reply *) OutHeadP; extern kern_return_t send_string (port_t server, gk_cstring a); #if TypeCheck boolean_t msg_simple; #endif TypeCheck unsigned int msg_size; #if TypeCheck msg_size = In0P->Head.msg_size; msg_simple = In0P->Head.msg_simple; if ((msg_size != 116) || (msg_simple != TRUE)) { OutP->RetCode = MIG_BAD_ARGUMENTS; return; } #endif TypeCheck #if TypeCheck if ((In0P->aType.msg_type_header.msg_type_inline != TRUE) || (In0P->aType.msg_type_header.msg_type_longform != TRUE) || (In0P->aType.msg_type_long_name != MSG_TYPE_STRING) || (In0P->aType.msg_type_long_number != 1) || (In0P->aType.msg_type_long_size != 640)) { OutP->RetCode = MIG_BAD_ARGUMENTS; goto punt0; } #define label_punt0 #endif TypeCheck OutP->RetCode = send_string(In0P->Head.msg_request_port, In0P->a); #ifdef label_punt0 #undef label_punt0 punt0: #endif label_punt0 if (OutP->RetCode != KERN_SUCCESS) return; msg_size = 32; OutP->Head.msg_simple = TRUE; OutP->Head.msg_size = msg_size; } /* Routine send_dce_speed */ mig_internal novalue _Xsend_dce_speed (msg_header_t *InHeadP, msg_header_t *OutHeadP) { typedef struct { msg_header_t Head; msg_type_long_t aType; gk_cstring a; } Request; typedef struct { msg_header_t Head; msg_type_t RetCodeType; kern_return_t RetCode; } Reply; register Request *In0P = (Request *) InHeadP; register Reply *OutP = (Reply *) OutHeadP; extern kern_return_t send_dce_speed (port_t server, gk_cstring a); #if TypeCheck boolean_t msg_simple; #endif TypeCheck unsigned int msg_size; #if TypeCheck msg_size = In0P->Head.msg_size; msg_simple = In0P->Head.msg_simple; if ((msg_size != 116) || (msg_simple != TRUE)) { OutP->RetCode = MIG_BAD_ARGUMENTS; return; } #endif TypeCheck #if TypeCheck if ((In0P->aType.msg_type_header.msg_type_inline != TRUE) || (In0P->aType.msg_type_header.msg_type_longform != TRUE) || (In0P->aType.msg_type_long_name != MSG_TYPE_STRING) || (In0P->aType.msg_type_long_number != 1) || (In0P->aType.msg_type_long_size != 640)) { OutP->RetCode = MIG_BAD_ARGUMENTS; goto punt0; } #define label_punt0 #endif TypeCheck OutP->RetCode = send_dce_speed(In0P->Head.msg_request_port, In0P->a); #ifdef label_punt0 #undef label_punt0 punt0: #endif label_punt0 if (OutP->RetCode != KERN_SUCCESS) return; msg_size = 32; OutP->Head.msg_simple = TRUE; OutP->Head.msg_size = msg_size; } boolean_t gk_rpc_server (msg_header_t *InHeadP, msg_header_t *OutHeadP) { register msg_header_t *InP = InHeadP; register death_pill_t *OutP = (death_pill_t *) OutHeadP; #if UseStaticMsgType static const msg_type_t RetCodeType = { /* msg_type_name = */ MSG_TYPE_INTEGER_32, /* msg_type_size = */ 32, /* msg_type_number = */ 1, /* msg_type_inline = */ TRUE, /* msg_type_longform = */ FALSE, /* msg_type_deallocate = */ FALSE, /* msg_type_unused = */ 0, }; #endif UseStaticMsgType OutP->Head.msg_simple = TRUE; OutP->Head.msg_size = sizeof *OutP; OutP->Head.msg_type = InP->msg_type; OutP->Head.msg_local_port = PORT_NULL; OutP->Head.msg_remote_port = InP->msg_reply_port; OutP->Head.msg_id = InP->msg_id + 100; #if UseStaticMsgType OutP->RetCodeType = RetCodeType; #else UseStaticMsgType OutP->RetCodeType.msg_type_name = MSG_TYPE_INTEGER_32; OutP->RetCodeType.msg_type_size = 32; OutP->RetCodeType.msg_type_number = 1; OutP->RetCodeType.msg_type_inline = TRUE; OutP->RetCodeType.msg_type_longform = FALSE; OutP->RetCodeType.msg_type_deallocate = FALSE; #endif UseStaticMsgType OutP->RetCode = MIG_BAD_ID; if ((InP->msg_id > 103) || (InP->msg_id < 100)) return FALSE; else { typedef novalue (*SERVER_STUB_PROC) (msg_header_t *, msg_header_t *); static const SERVER_STUB_PROC routines[] = { _Xset_gk, _Xset_gk_oneway, _Xsend_string, _Xsend_dce_speed, }; if (routines[InP->msg_id - 100]) (routines[InP->msg_id - 100]) (InP, &OutP->Head); else return FALSE; } return TRUE; }
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.