static void *Outputter(void *arg) { lpel_stream_desc_t *in = LpelStreamOpen((lpel_stream_t*)arg, 'r'); char *item; int term = 0; printf("Outputter START\n"); while (!term) { item = LpelStreamRead(in); assert( item != NULL ); printf("\n\n*************************************\nOut: %s\n*************************************\n", item ); if ( 0 == strcmp( item, "T\n")) { term = 1; } //free( item); SCCFreePtr(item); } // end while LpelStreamClose( in, 1); printf("Outputter TERM\n"); LpelStop(); return NULL; }
void *Relay(void *inarg) { channels_t *ch = (channels_t *)inarg; int term = 0; int id = ch->id; char *item; lpel_stream_desc_t *in, *out; in = LpelStreamOpen(ch->in, 'r'); out = LpelStreamOpen(ch->out, 'w'); printf("Relay %d START\n", id); while (!term) { item = LpelStreamRead( in); assert( item != NULL ); //printf("Relay %d: %s", id, item ); if ( 0 == strcmp( item, "T\n")) { term = 1; } LpelStreamWrite( out, item); } // end while LpelStreamClose( in, 1); LpelStreamClose( out, 0); //free(ch); SCCFreePtr(ch); printf("Relay %d TERM\n", id); return NULL; }
void *initP(void *hnd, c4snet_data_t *spt, c4snet_data_t *skey, int size) { char *pt = (char *) C4SNetGetData(spt); char *key = (char *) C4SNetGetData(skey); char *K = (char *) SCCMallocPtr(size * 7); char *D = (char *) SCCMallocPtr(size * 8); int i; for (i = 0; i < size; i++) { Permute( &K[i * 7], key, KeyPermuteMap, 7 ); Permute( &D[i * 8], pt, InitialPermuteMap, 8 ); } C4SNetOut(hnd, 1, C4SNetCreate(CTYPE_char, 8 * size, &D[0]), C4SNetCreate(CTYPE_char, 7 * size, &K[0]), 0, size); C4SNetFree(spt); C4SNetFree(skey); SCCFreePtr (K); SCCFreePtr (D); return hnd; }
void SNetMemFree( void *ptr) { SCCFreePtr(ptr); }