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; } } }
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; }
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; }