home *** CD-ROM | disk | FTP | other *** search
/ InfoMagic Source Code 1993 July / THE_SOURCE_CODE_CD_ROM.iso / mach / doc / unpublished / examples / server.c.Z / server.c
Encoding:
C/C++ Source or Header  |  1989-12-07  |  1.5 KB  |  65 lines

  1. /***************************************************
  2.  *   Main program for random server
  3.  **************************************************/
  4.  
  5. #include <stdio.h>
  6. #include <mach.h>
  7. #include <mach_error.h>
  8. #include <mach/message.h>
  9. #include <servers/netname.h>
  10.  
  11. extern boolean_t random_server();    /* from randomServer.c */
  12. extern msg_return_t mig_server();    /* from mig_server.c */
  13.  
  14. main()
  15. {
  16.     port_name_t server_port;
  17.     port_name_t port_set;
  18.     kern_return_t kr;
  19.  
  20.     /* allocate a service port for receiving request messages */
  21.  
  22.     kr = port_allocate(task_self(), &server_port);
  23.     if (kr != KERN_SUCCESS) {
  24.         mach_error("port_allocate", kr);
  25.         exit(1);
  26.     }
  27.  
  28.     /* allocate a port set to hold the service port and notify port */
  29.  
  30.     kr = port_set_allocate(task_self(), &port_set);
  31.     if (kr != KERN_SUCCESS) {
  32.         mach_error("port_set_allocate", kr);
  33.         exit(1);
  34.     }
  35.  
  36.     /* put the service port and notify port into the port set */
  37.  
  38.     kr = port_set_add(task_self(), port_set, server_port);
  39.     if (kr != KERN_SUCCESS) {
  40.         mach_error("port_set_add", kr);
  41.         exit(1);
  42.     }
  43.  
  44.     kr = port_set_add(task_self(), port_set, task_notify());
  45.     if (kr != KERN_SUCCESS) {
  46.         mach_error("port_set_add", kr);
  47.         exit(1);
  48.     }
  49.  
  50.     /* check service port into the name service so clients can find it */
  51.  
  52.     kr = netname_check_in(name_server_port, "RandomServerPort",
  53.                   PORT_NULL, server_port);
  54.     if (kr != KERN_SUCCESS) {
  55.         mach_error("netname_check_in", kr);
  56.         exit(1);
  57.     }
  58.  
  59.     /* call the standard service loop; should never return */
  60.  
  61.     kr = mig_server(port_set, random_server);
  62.     mach_error("mig_server", kr);
  63.     exit(2);
  64. }
  65.