示例#1
0
/**
 * infd_server_pool_add_server:
 * @server_pool: A #InfdServerPool.
 * @server: A #InfdXmlServer.
 *
 * Adds @server to @server_pool. The server pool accepts incoming connections
 * and gives them to its directory which processes incoming requests.
 *
 * It is your responsibility to open @server. It will be automatically removed
 * from the pool when the server is closed. However, you might pass a closed
 * server to this function and open it afterwards.
 **/
void
infd_server_pool_add_server(InfdServerPool* server_pool,
                            InfdXmlServer* server)
{
  InfdServerPoolPrivate* priv;
  InfdServerPoolEntry* entry;

  g_return_if_fail(INFD_IS_SERVER_POOL(server_pool));
  g_return_if_fail(INFD_IS_XML_SERVER(server));

  priv = INFD_SERVER_POOL_PRIVATE(server_pool);
  g_return_if_fail(g_hash_table_lookup(priv->servers, server) == NULL);

  g_signal_connect_after(
    G_OBJECT(server),
    "notify::status",
    G_CALLBACK(infd_server_pool_notify_status_cb),
    server_pool
  );

  g_signal_connect_after(
    G_OBJECT(server),
    "new-connection",
    G_CALLBACK(infd_server_pool_new_connection_cb),
    server_pool
  );

  entry = g_slice_new(InfdServerPoolEntry);
  entry->server = server;
  entry->publishers = NULL;
  g_hash_table_insert(priv->servers, server, entry);

  g_object_ref(G_OBJECT(server));
}
示例#2
0
/**
 * infd_xml_server_close:
 * @server: A #InfdXmlServer.
 *
 * Closes @server.
 **/
void
infd_xml_server_close(InfdXmlServer* server)
{
  InfdXmlServerIface* iface;

  g_return_if_fail(INFD_IS_XML_SERVER(server));

  iface = INFD_XML_SERVER_GET_IFACE(server);
  g_return_if_fail(iface->close);

  iface->close(server);
}
示例#3
0
/**
 * infd_xml_server_new_connection:
 * @server: A #InfdXmlServer.
 * @connection: A #InfXmlConnection.
 *
 * Emits the "new-connection" signal on @server.
 **/
void
infd_xml_server_new_connection(InfdXmlServer* server,
                               InfXmlConnection* connection)
{
  g_return_if_fail(INFD_IS_XML_SERVER(server));
  g_return_if_fail(INF_IS_XML_CONNECTION(connection));

  g_signal_emit(
    G_OBJECT(server),
    server_signals[NEW_CONNECTION],
    0,
    connection
  );
}