home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / queue1.zip / SERVER.C < prev   
C/C++ Source or Header  |  1988-06-08  |  2KB  |  52 lines

  1. /*
  2. ** Server Process
  3. */
  4.  
  5. #define INCL_DOSMEMMGR
  6. #define INCL_DOSQUEUES
  7. #define INCL_DOSPROCESS
  8. #define INCL_DOSERRORS
  9. #include <dos.h>
  10. #include <os2def.h>
  11. #include <bse.h>            /* MS OS/2 function declarations     */
  12.  
  13. #define FIFO            0
  14. #define FIRSTELEMENT    0                 /* First element in queue */
  15. #define DUMMYPARAM      (long) 0          /* Dummy for DosQueueRead */
  16.  
  17. char ServerName[] = "\\QUEUES\\SERVER.QUE";
  18.  
  19. void main (int argc, char *argv[], char *envp[])
  20. {
  21.    USHORT   rc;                 /* a return code                */
  22.    HQUEUE   QueueServer;        /* handle to the server's queue */
  23.    USHORT   DataLength;         /* length of element received   */
  24.    ULONG    DataAddress;    /* long to store address of queue info*/
  25.    UCHAR    ElemPriority;       /* priority of element in queue */
  26.    SEL        SegSel;
  27.    int i;
  28.    struct   {
  29.       PID   pidProcess;         /* Process ID                   */
  30.       USHORT usEventCode;       /* I don't know                 */
  31.    } PID_RequestID;
  32.    printf( "server: Starting server process\n" );
  33.    rc = DosCreateQueue( &QueueServer, FIFO, ServerName );
  34.    printf( "rc from DosCreateQueue: %d\n", rc );
  35.  
  36.    /* Wait for shared segment to be created */
  37.    while(DosGetShrSeg("\\SHAREMEM\\MYSEG",&SegSel))
  38.    ;
  39.  
  40.    /* Read server data */
  41.    rc = DosReadQueue( QueueServer, (PULONG) &PID_RequestID, &DataLength,
  42.               (PULONG) &DataAddress, FIRSTELEMENT, DCWW_WAIT,
  43.               &ElemPriority, (HSEM) DUMMYPARAM );
  44.    printf( "rc from DosReadQueue: %d\n", rc );
  45.    printf( "DosReadQueue data length: %d\n", DataLength );
  46.    printf( "DosReadQueue data: %s\n",  (char far *)DataAddress);
  47.  
  48.    printf( "Quitting server process\n" );
  49.    DosFreeSeg(SegSel);
  50.    DosCloseQueue( QueueServer );
  51. }
  52.