void check_the_q(int next_customer){
	int i, flag_hot_seat = OCCUPIED, flag_wait_seat = OCCUPIED, max ;
	
	flag_hot_seat = check_if_free() ;
	
	if( flag_hot_seat == FREE ){
		flag_wait_seat = check_customer_q();
	
		if( flag_wait_seat == OCCUPIED ){
			pos = get_position();
			sleep(2);
			if( customer[pos].value != 0 )
			printf("\n\t\t\t\t\t^^^^^customer %d removed from queue and put in hot seat, cutting time = %d^^^^\n", customer[pos].pos, customer[pos].value);
			wake_up_barber(customer[pos].value);
			customer[pos].time = 0;
			customer[pos].value = 0;
			customer[pos].pos = 0;
		}
		if( next_customer != 0 && flag_hot_seat == FREE ){
			flag_wait_seat = check_customer_q();
	
			if( flag_wait_seat == FREE )
				wake_up_barber(next_customer);
	
			else{
				pos = get_free_position();
				if( pos >= 0 ){
					sleep(2);
					if( next_customer != 0 )
					printf("\t\t----customer %d moved to queue , cutting time = %d----\n", timer, next_customer);
					customer[pos].value = next_customer;	
					customer[pos].time = 1 ;
					customer[pos].pos = timer;	
				}
			}
		}
	}
	
	else if( flag_hot_seat != FREE ){
		pos = get_free_position();
		if( pos >= 0 ){
			sleep(2);
			if( next_customer != 0 )
			printf("\t\t----customer %d moved to queue , cutting time = %d----\n", timer, next_customer);
			customer[pos].value = next_customer;
			customer[pos].time = 1 ;
			customer[pos].pos = timer;
		}
	}
	
	else{
		sleep(2);
		printf("\n\t\t--------->customer %d left, cutting time = %d\n",timer,next_customer);
	}
}		
int start_loading(struct opt_s *opt, struct buffer_entity *be,
                  struct sender_tracking *st)
{
  long nuf;
  int err;

  skip_missing(opt, st, SKIP_LOADED);
  D("Packets loaded is %lu, packet probed %ld", st->packets_loaded,
    st->n_packets_probed);
  if (st->files_loaded == st->n_files_probed)
    {
      D("Loaded up to n_files!");
      return DONTRYLOADNOMORE;
    }

  err = afi_start_loading(opt->fi, st->files_loaded, st->files_in_loading > 0);
  if (err)
    {
      if (err == 1)
        {
          return DONTRYLOADNOMORE;
        }
      return err;
    }

  afi_update_metadata(opt->fi, &st->n_files_probed,
                       &st->n_packets_probed, &st->status_probed);

  nuf =
    MIN((st->n_packets_probed - st->packets_loaded),
        ((unsigned long)opt->buf_num_elems));
  if (nuf == 0)
    {
      E("Metadata error on recording %s. Cant load 0 packets", opt->filename);
      return DONTRYLOADNOMORE;
    }
  /* TODO: Not checking if FH_ONDISK is set */
  D("Requested a load start on file %lu", st->files_loaded);
  if (be == NULL)
    {
      if (check_if_free(opt->membranch) != 0)
        {
          D("No more free buffers");
          if (st->files_in_loading != 0)
            {
              D("wont loadup since no more free buffers and we have files in loading");
              return DONTRYLOADNOMORE;
            }
        }
      be =
        get_free(opt->membranch, opt, (void *)(&(st->files_loaded)), NULL, 1);
      st->allocated_to_load--;
    }
  /* Reacquiring just updates the file number we want */
  else
    {
      be->acquire((void *)be, opt, &(st->files_loaded));
    }
  CHECK_AND_EXIT(be);

  st->files_in_loading++;
  D("Setting seqnum %lu to load %lu packets", st->files_loaded, nuf);

  LOCK(be->headlock);
  unsigned long *inc;
  be->simple_get_writebuf(be, &inc);
  *inc = nuf * (opt->packet_size);

  be->set_ready(be, 1);
  pthread_cond_signal(be->iosignal);
  UNLOCK(be->headlock);
  D("Loading request complete for id %lu", st->files_loaded);

  st->packets_loaded += nuf;
  st->files_loaded++;
  return 0;
}