예제 #1
0
파일: xr-server.c 프로젝트: zonio/libxr
static gpointer sessions_cleaner_func(xr_server* server)
{
  while (g_socket_service_is_active(G_SOCKET_SERVICE(server->service)))
  {
    server->current_time = time(NULL);
    g_static_rw_lock_writer_lock(&server->sessions_lock);
    g_hash_table_foreach_remove(server->sessions, _maybe_remove_servlet, server);
    g_static_rw_lock_writer_unlock(&server->sessions_lock);

    g_usleep(1000000);
  }

  return NULL;
}
예제 #2
0
/**
 * Register the flare service port
 */
void create_service(gchar *address, uint16_t port, GCallback *callback, gulong *handler_id)
{
    GSocketService *service = g_socket_service_new();
    GInetAddress *inet_address = g_inet_address_new_from_string(address);
    GSocketAddress *socket_address = g_inet_socket_address_new(inet_address, port);

    g_socket_listener_add_address(
        G_SOCKET_LISTENER(service),
        socket_address,
        G_SOCKET_TYPE_STREAM,
        G_SOCKET_PROTOCOL_TCP,
        NULL, NULL, NULL);

    g_object_unref(socket_address);
    g_object_unref(inet_address);

	*handler_id = g_signal_connect(service, "incoming", G_CALLBACK(callback), NULL);

	g_socket_service_start(service);
	g_assert(g_socket_service_is_active(service));
}
예제 #3
0
static VALUE
socketservice_is_active(VALUE self)
{
        return CBOOL2RVAL(g_socket_service_is_active(_SELF(self)));
}