コード例 #1
0
ファイル: amshello.c プロジェクト: brnrc/ion-dtn
static int	runPitcher()
{
	AmsModule	me;
	AmsEvent	evt;
	AmsStateType	state;
	AmsChangeType	change;
	int		zn, nn, rn, dcn, dzn, sn, pr, textlen;
	unsigned char	fl;
	AmsSequence	sequence;
	AmsDiligence	diligence;
	char		buffer[80];

	isprintf(buffer, sizeof buffer, "Hello from %d.", (int) getpid());
	textlen = strlen(buffer) + 1;
	oK(ams_register(NULL, NULL, "amsdemo", "test", "", "pitch", &me));
	while (1)
	{
		if (ams_get_event(me, AMS_BLOCKING, &evt) < 0) return 0;
		ams_parse_notice(evt, &state, &change, &zn, &nn, &rn, &dcn,
				&dzn, &sn, &pr, &fl, &sequence, &diligence);
		ams_recycle_event(evt);
		if (state == AmsInvitationState && sn == 1)
		{
			printf("%d sending  '%s'.\n", (int) getpid(), buffer);
			fflush(stdout);
			ams_send(me, -1, zn, nn, 1, 0, 0, textlen, buffer, 0);
			ams_unregister(me); return 0;
		}
	}
}
コード例 #2
0
ファイル: traceit.c プロジェクト: astrobuff/starlink
int main()
{
   int outmsg_status;
   int outmsg_function;
   int outmsg_context;
   int outmsg_length;
   char outmsg_name[32];
   char outmsg_value[MSG_VAL_LEN];
   int inmsg_status;
   int inmsg_context;
   int inmsg_length;
   char inmsg_name[32];
   char inmsg_value[MSG_VAL_LEN];
   int status;
   int path;
   int messid;
   int j;

   int pos;         /* position of first non-matching character - if no
                       non-matching characters, return as -1
                       (returned) */

   status = 0;
   outmsg_status = SAI__OK;
   outmsg_function = MESSYS__MESSAGE;
   outmsg_context = OBEY;
   outmsg_length = 16;

   strcpy ( outmsg_name, "trace" );
   strcpy ( outmsg_value, "adam_user:global" );

   ams_init ( "master", &status );
   if ( status != SAI__OK )
   {
      printf ( "master - bad status after ams_init\n" );
   }
/*   ams_path ( "cosaxp0.roe.ac.uk!!slave", &path, &status ); */
/*   ams_path ( "resun06!!slave", &path, &status ); */
   ams_path ( "revaxi!!trace", &path, &status );
   if ( status != SAI__OK )
   {
      printf ( "master - bad status after ams_path\n" );
   }
   else
   {
      printf ( "master - got path ok = %d\n", path );
   }

   for ( j=0; j<1; j++ )
   {
      ams_send ( path, outmsg_function, outmsg_status, outmsg_context,
        outmsg_name, outmsg_length, outmsg_value, &messid, &status );
      if ( status != SAI__OK )
      {
         printf ( "master: bad status after send\n" );
      }
      else
      {
      printf ( "master - sent message ok\n" );
      }
      ams_getreply ( MESSYS__INFINITE, path, messid, 32, MSG_VAL_LEN,
        &inmsg_status, &inmsg_context, inmsg_name, &inmsg_length,
        inmsg_value, &status );
      if ( status != SAI__OK )
      {
         printf ( "master: bad status on first getreply = %d\n", status );
      }
      else
      {
      c_tcr_trim ( ' ', inmsg_value, &pos, &status );
      inmsg_value[pos] = '\0';
      printf ( "master - got first message ok\n" );
      printf ( "master - first string = %s\n", inmsg_value );
      printf ( "master - first in status = %d\n", inmsg_status );
      }
      for ( ; ; )
      {
         ams_getreply ( MESSYS__INFINITE, path, messid, 32, MSG_VAL_LEN,
           &inmsg_status, &inmsg_context, inmsg_name, &inmsg_length,
           inmsg_value, &status );
         if ( inmsg_status != MESSYS__INFORM )
         {
            break;
         }
         else
         {
            if ( inmsg_length < MSG_VAL_LEN )
            {
               inmsg_value[inmsg_length] = '\0';
            }
            else
            {
               inmsg_value[MSG_VAL_LEN-1] = '\0';
            }
            c_tcr_trim ( ' ', inmsg_value, &pos, &status );
            inmsg_value[pos] = '\0';
            printf ( "%s\n", inmsg_value );
         }
      }
   }
   if ( status != 0 )
   {
      printf ( "master: bad status = %d\n", status );
   }
   else
   {
      c_tcr_trim ( ' ', inmsg_value, &pos, &status );
      inmsg_value[pos] = '\0';
      printf ( "master: received - %s\n", inmsg_value );
   }

   status = SAI__OK;
/*   ams_receive ( MESSYS__INFINITE, 32, MSG_VAL_LEN, &inmsg_status,
     &inmsg_context, inmsg_name, &inmsg_length, inmsg_value, &path,
     &messid, &status ); */
   kill ( getpid(), SIGINT );
   return 0;
}
コード例 #3
0
ファイル: amsmaster.c プロジェクト: astrobuff/starlink
int main()
{
   int outmsg_status;
   int outmsg_function;
   int outmsg_context;
   int outmsg_length;
   char outmsg_name[32];
   char outmsg_value[MSG_VAL_LEN];
   int inmsg_status;
   int inmsg_context;
   int inmsg_length;
   char inmsg_name[32];
   char inmsg_value[MSG_VAL_LEN];
   int status;
   int path;
   int messid;
   int j;

   status = 0;
   outmsg_status = SAI__OK;
   outmsg_function = MESSYS__MESSAGE;
   outmsg_context = OBEY;
   outmsg_length = 16;

   strcpy ( outmsg_name, "junk" );
   strcpy ( outmsg_value, "master calling" );

   ams_init ( "master", &status );
   if ( status != SAI__OK )
   {
      printf ( "master - bad status after ams_init\n" );
   }
   ams_path ( "slave", &path, &status );
   if ( status != SAI__OK )
   {
      printf ( "master - bad status after ams_path\n" );
   }
   else
   {
      printf ( "master - path set up ok\n" );
   }

   for ( j=0; j<100; j++ )
   {
      ams_send ( path, outmsg_function, outmsg_status, outmsg_context,
        outmsg_name, outmsg_length, outmsg_value, &messid, &status );
      ams_getreply ( MESSYS__INFINITE, path, messid, 32, MSG_VAL_LEN,
        &inmsg_status, &inmsg_context, inmsg_name, &inmsg_length,
        inmsg_value, &status );
      ams_getreply ( MESSYS__INFINITE, path, messid, 32, MSG_VAL_LEN,
        &inmsg_status, &inmsg_context, inmsg_name, &inmsg_length,
        inmsg_value, &status );
   }
   if ( status != 0 )
   {
      printf ( "master: bad status = %d\n", status );
   }
   else
   {
      printf ( "master: received - %s\n", inmsg_value );
   }

   /* Removed to stop signal failing "make check" */
   /*kill ( getpid(), SIGINT );*/
   return 0;
}