Esempio n. 1
0
void		run_loop(t_serveur *serveur)
{
  fd_set	read_set;
  fd_set	write_set;
  int		bigger;

  while (1)
    {
      bigger = build_set(serveur, &read_set);
      build_set(serveur, &write_set);
      if (select(bigger + 1, &read_set, &write_set, 0, 0) < 0)
	continue;
      if (FD_ISSET(0, &read_set))
	serveur_command(serveur);
      if (FD_ISSET(serveur->fd, &read_set))
	connect_client(serveur);
      loop_clients(serveur, &read_set, &write_set);
    }
}
Esempio n. 2
0
ptrdiff_t tree_set_store::find_set(ptrdiff_t child_l,ptrdiff_t child_r)
{
  ptrdiff_t hc = hash(child_l,child_r,hashmask);
  for (ptrdiff_t i=hashtable[hc]; i!=EMPTY_LIST; i=buckets[i].next)
  {
    if (buckets[i].child_l==child_l && buckets[i].child_r==child_r)
    {
      return i;
    }
  }
  return build_set(child_l,child_r);
}