/** * 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)); }
/** * 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); }
/** * 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 ); }