static int accept_new_client(t_srv_socket sockets[], int s_sockfd) { struct sockaddr_in cl_sockaddr; socklen_t cl_sockaddr_size; int cl_sockfd; bool const is_connected = true; cl_sockaddr_size = sizeof(cl_sockaddr); if ((cl_sockfd = accept(s_sockfd, (struct sockaddr *)&cl_sockaddr, &cl_sockaddr_size)) == SYSERR) return (-print_error_errno("accept")); if (!sockets) { if (close(cl_sockfd) == SYSERR) return (print_error_errno("close")); return (EXIT_SUCCESS); } write(cl_sockfd, &is_connected, sizeof(bool)); return (srv_init_socket(sockets, CLIENT, cl_sockfd, &cl_sockaddr)); }
int main(int argc, char **argv) { sthread_t threads[NUM_TC]; sthread_t prodthr; int i; available_reqs = 0; // initialize sthread lib sthread_init(); //initialize filesystem snfs_init(argc, argv); // initialize SNFS layer struct sockaddr_un servaddr; // initialize communications srv_init_socket(&servaddr); // initialize monitor mon = sthread_monitor_init(); // create thread_consumer threads for(i = 0; i < NUM_TC; i++) { threads[i] = sthread_create(thread_consumer, (void*) NULL,1); if (threads[i] == NULL) { printf("Error while creating threads. Terminating...\n"); exit(-1); } } // create producer thread prodthr = sthread_create(thread_producer, (void*) NULL,1); sthread_join(prodthr, (void**)NULL); for(i = 0; i < NUM_TC; i++) sthread_join(threads[i], (void **)NULL); return 0; }