Пример #1
0
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));
}
Пример #2
0
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;
}