g_set_wait_obj(tbus obj)
{
#ifdef _WIN32
  if (obj == 0)
  {
    return 0;
  }
  SetEvent((HANDLE)obj);
  return 0;
#else
  socklen_t sa_size;
  int s;
  struct sockaddr_un sa;

  if (obj == 0)
  {
    return 0;
  }
  if (g_tcp_can_recv((int)obj, 0))
  {
    /* already signalled */
    return 0;
  }
  sa_size = sizeof(sa);
  if (getsockname((int)obj, (struct sockaddr*)&sa, &sa_size) < 0)
  {
    return 1;
  }
  s = socket(PF_UNIX, SOCK_DGRAM, 0);
  if (s < 0)
  {
    return 1;
  }
  sendto(s, "sig", 4, 0, (struct sockaddr*)&sa, sa_size);
  close(s);
  return 0;
#endif
}
g_set_wait_obj(tbus obj)
{
#ifdef _WIN32
  if (obj == 0)
  {
    return 0;
  }
  SetEvent((HANDLE)obj);
  return 0;
#else
  socklen_t sa_size;
  int s;
  struct sockaddr_un sa;

  if (obj == 0)
  {
    return 0;
  }
  if (g_tcp_can_recv((int)obj, 0))
  {
     
    return 0;
  }
  sa_size = sizeof(sa);
  if (getsockname((int)obj, (struct sockaddr*)&sa, &sa_size) < 0)
  {
    return 1;
  }
  s = socket(PF_UNIX, SOCK_DGRAM, 0);
  if (s < 0)
  {
    return 1;
  }
  sendto(s, "sig", 4, 0, (struct sockaddr*)&sa, sa_size);
  close(s);
  return 0;
#endif
}