home *** CD-ROM | disk | FTP | other *** search
/ Collection of Hack-Phreak Scene Programs / cleanhpvac.zip / cleanhpvac / TIERRA40.ZIP / ALMOND / ALCOMM / SRC / TRY.C < prev    next >
C/C++ Source or Header  |  1992-07-06  |  3KB  |  140 lines

  1. /*
  2. * try.c
  3. *
  4. *
  5. * Copyright (c) 1991, 1992 by Marc W. Cygnus and Virtual Life
  6. * All Rights Reserved.
  7. *
  8. */
  9.  
  10.  
  11. #include <stdio.h>
  12. #include <sys/types.h>
  13.  
  14. #include <arpa/inet.h>
  15.  
  16. #include "mlayer.h"
  17. #include "trequest.h"
  18. #include "debug.h"
  19.  
  20.  
  21. void    DummyMessageRoutine P_(( ));
  22.  
  23. void    TGenStatusQuery P_(( ));
  24.  
  25. void    TProcOrganismLifeEvent P_(( ));
  26.  
  27. void    TInitOrgLifeData P_(( ));
  28.  
  29.  
  30. static MtDefaultRoutines    _message_fns[] = {
  31.   { 1,    DummyMessageRoutine }
  32. };
  33.  
  34. static MtDefaultRoutines    _query_fns[] = {
  35.   { TrtGeneralStats,    TGenStatusQuery }
  36. };
  37.  
  38. static MtDefaultRoutines    _dfinit_fns[] = {
  39.   { TrtOrgLifeEvent,    TInitOrgLifeData }
  40. };
  41.  
  42.  
  43.  
  44. int main( argc, argv )
  45.   int        argc;
  46.   char *    argv[];
  47. {
  48.   MtStatus        iRet;
  49.  
  50.  
  51.   puts( "simulating a listener" );
  52.  
  53.   puts( "initialising mlayer" );
  54.   if (( iRet = MInitialise( 0, 0, _message_fns, 1, _query_fns, 1, M_NoFns, 0,
  55.                 _dfinit_fns, 1 )) != MsOK )
  56.     ALGripe( "MInitialise", "error %d\n", iRet ), exit( -1 );
  57.  
  58.   puts( "opening portal 7001" );
  59.   if (( iRet = MOpenPublicPort( 7001 )) != MsOK )
  60.     ALGripe( "MOpenPublicPort", "error %d\n", iRet ), exit( -1 );
  61.  
  62.   while ( 1 ) {
  63.     if (( iRet = MServiceRequests( M_NoWait )) != MsOK )
  64.       ALGripe( "MServiceRequests", "error %d\n", iRet ), exit( -1 );
  65.     putchar( '.' );
  66.     fflush( stdout );
  67.     if ( MIsDFEnabled( TrtOrgLifeEvent ) ) {
  68.       ReportLifeEvent( 'b', 111, 222 );
  69.       puts( "...[sent a BIRTH]" );
  70.     }
  71.     sleep( 1 );
  72.   } /* end while(1) */
  73.  
  74. } /* end main() */
  75.  
  76.  
  77. int ReportLifeEvent( cWhat, iWhere, iLen )
  78. {
  79.   TtOrgEvent    OE;        /* <== changed from TtOrgID 05-17-92 cygnus */
  80.   MtStatus    iRet;
  81.  
  82.   OE.event = cWhat;
  83.   OE.start = iWhere;
  84.   OE.length = iLen;
  85.   if (( iRet = MDistributeDataflow( TrtOrgLifeEvent, (pMtOpaque)&OE,
  86.                     sizeof( OE ) )) != MsOK )
  87.     ALGripe( "ReportLifeEvent", "MDistDF. failed (%d)\n", iRet );
  88.  
  89. } /* end ReportLifeEvent() */
  90.  
  91.  
  92. void DummyMessageRoutine( )
  93. {
  94.  
  95.   printf( "***-msg-*** got a message\n" );
  96.  
  97. } /* end DummyMessageRoutine() */
  98.  
  99.  
  100. void TInitOrgLifeData( ucOp, hLI )
  101.   u_char    ucOp;
  102.   hMtLinkInfo    hLI;
  103. {
  104.   TtOrgEvent        orgev;    /* <== changed from TtOrgID 05-17-92 cygnus */
  105.   int            i;
  106.   int            iRet;
  107.  
  108.   printf( "*** Initialising for dataflow (%d)\n", ucOp );
  109.  
  110.   for ( i = 1; i < 15; i += i ) {
  111.     orgev.event = 'b';
  112.     orgev.start = i * 100;
  113.     orgev.length = 69;
  114.  
  115.     if (( iRet = MGenRequest( 0, MrDataflowEvent, TrtOrgLifeEvent,
  116.                   (pMtOpaque)&orgev, sizeof( orgev ) )
  117.     ) != MsOK )
  118.       ALGripe( "MGenRequest", "error %d\n", iRet );
  119.   }
  120.  
  121. } /* end TInitOrgLifeData() */
  122.  
  123.  
  124. void TGenStatusQuery( ucQ, pData, pPrivate )
  125.   u_char    ucQ;
  126.   pMtOpaque    pData;
  127.   pMtOpaque    pPrivate;
  128. {
  129.   TtGenStats        GS;    /* <== changed from TtGeneralStatus */
  130.   int            iRet;    /*   05-17-92 cygnus */
  131.  
  132.   GS.memsize = 4321;
  133.   if (( iRet = MGenReply( pPrivate, 0, &GS, sizeof( GS ) )) != MsOK )
  134.     ALGripe( "TGenStatusQuery", "MGenReply failed (%d)\n", iRet );
  135.  
  136. } /* end TGenStatusQuery() */
  137.  
  138.  
  139. /* end try.c */
  140.