main() { FILE *in; int rtn,i; in = fopen ("/Users/laurenceschenk/mini-src/mySrc/Coldipozzo/type_1_sort","r"); if (in == NULL) { perror ("Unable to open type_1_sort\n"); exit (1); } rtn = shared_memory_attach(); clear_shm(); while (1) { rtn = fscanf(in,"%d\t%s\t%s\t%d",&etime,name,days,&action); if (rtn == EOF) break; printf ("Data read: name %s time %d days %s action %d\n",name,etime,days,action); //write_to_shm(); rtn = get_name_index(name); if (( rtn > -1) && (rtn < NUM_DEVICES)) { write_to_shm(rtn); } else { printf ("**********FAILURE to find %s\n",name); printf ("\n\n*****************program abort....\n"); shared_memory_detach(); exit(5); } } fclose(in); shared_memory_detach(); printf("shm_type_1:main written %d records\n",ptr); exit(0); }
void* thread_func(void* arg) { int socket_desc = (int) arg, proc_id, flag = 0; float left, right, result; char operation, message[100]; Calculation msg = CALCULATION__INIT; Result res = RESULT__INIT; uint8_t calc_buf[1024], result_buf[1024]; ssize_t len, result_len; len = recv(socket_desc, calc_buf, 1024, 0); deserialize_input(&msg, len, calc_buf, &left, &right, &operation, &proc_id); add_to_online(proc_id); while ((len = recv(socket_desc, calc_buf, 1024, 0))) { deserialize_input(&msg, len, calc_buf, &left, &right, &operation, &proc_id); result = calculate(left, right, operation); serialize_result(result_buf, &res, result, &result_len); sprintf(message, "Client %d calculated %f %c %f = %f\n", proc_id, left, operation, right, result); write_to_shm(message); send(socket_desc, result_buf, result_len, 0); } sprintf(message, "Client %d has disconnected\n", proc_id); remove_from_online(proc_id); notify(0, proc_id); close(socket_desc); active_connections--; printf("Active connections are: %d\n", active_connections); return NULL; }