Allow servers to disown their sockets. Allows for closing after a fork()
without unlinking the socket in the filesystem. SVN revision: 19636
This commit is contained in:
parent
6249f12f2f
commit
ea0749e88a
|
@ -151,6 +151,7 @@ extern "C" {
|
|||
EAPI int ecore_con_server_connected_get(Ecore_Con_Server *svr);
|
||||
EAPI int ecore_con_server_send(Ecore_Con_Server *svr, void *data, int size);
|
||||
EAPI void ecore_con_server_client_limit_set(Ecore_Con_Server *svr, int client_limit, char reject_excess_clients);
|
||||
EAPI void ecore_con_server_disown(Ecore_Con_Server *svr);
|
||||
|
||||
EAPI int ecore_con_client_send(Ecore_Con_Client *cl, void *data, int size);
|
||||
EAPI Ecore_Con_Server *ecore_con_client_server_get(Ecore_Con_Client *cl);
|
||||
|
|
|
@ -605,6 +605,26 @@ ecore_con_server_client_limit_set(Ecore_Con_Server *svr, int client_limit, char
|
|||
svr->reject_excess_clients = reject_excess_clients;
|
||||
}
|
||||
|
||||
/**
|
||||
* Flag the server as not owned by this process, important to use after
|
||||
* forking so child processes do not remove a parents socket path.
|
||||
* Beware that if you set this in the parent, stale sockets may be left
|
||||
* around.
|
||||
* @param svr The given server.
|
||||
* @ingroup Ecore_Con_Server_Group
|
||||
*/
|
||||
void
|
||||
ecore_con_server_disown(Ecore_Con_Server *svr)
|
||||
{
|
||||
if (!ECORE_MAGIC_CHECK(svr, ECORE_MAGIC_CON_SERVER))
|
||||
{
|
||||
ECORE_MAGIC_FAIL(svr, ECORE_MAGIC_CON_SERVER,
|
||||
"ecore_con_server_client_limit_set");
|
||||
return;
|
||||
}
|
||||
svr->created = 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* @defgroup Ecore_Con_Client_Group Ecore Connection Client Functions
|
||||
*
|
||||
|
|
|
@ -297,6 +297,7 @@ EAPI unsigned long long _ecore_ipc_swap_64(unsigned long long v);
|
|||
/* FIXME: this needs to become an ipc message */
|
||||
EAPI int ecore_ipc_server_send(Ecore_Ipc_Server *svr, int major, int minor, int ref, int ref_to, int response, void *data, int size);
|
||||
EAPI void ecore_ipc_server_client_limit_set(Ecore_Ipc_Server *svr, int client_limit, char reject_excess_clients);
|
||||
EAPI void ecore_ipc_server_disown(Ecore_Ipc_Server *svr);
|
||||
|
||||
/* FIXME: this needs to become an ipc message */
|
||||
EAPI int ecore_ipc_client_send(Ecore_Ipc_Client *cl, int major, int minor, int ref, int ref_to, int response, void *data, int size);
|
||||
|
|
|
@ -600,6 +600,26 @@ ecore_ipc_server_client_limit_set(Ecore_Ipc_Server *svr, int client_limit, char
|
|||
ecore_con_server_client_limit_set(svr->server, client_limit, reject_excess_clients);
|
||||
}
|
||||
|
||||
/**
|
||||
* Flag the server as not owned by this process, important to use after
|
||||
* forking so child processes do not remove a parents socket path.
|
||||
* Beware that if you set this in the parent, stale sockets may be left
|
||||
* around.
|
||||
* @param svr The given server.
|
||||
* @ingroup Ecore_Ipc_Server_Group
|
||||
*/
|
||||
void
|
||||
ecore_ipc_server_disown(Ecore_Ipc_Server *svr)
|
||||
{
|
||||
if (!ECORE_MAGIC_CHECK(svr, ECORE_MAGIC_IPC_SERVER))
|
||||
{
|
||||
ECORE_MAGIC_FAIL(svr, ECORE_MAGIC_IPC_SERVER,
|
||||
"ecore_ipc_server_client_limit_set");
|
||||
return;
|
||||
}
|
||||
ecore_con_server_disown(svr->server);
|
||||
}
|
||||
|
||||
#define CLENC(_member) \
|
||||
d = _ecore_ipc_dlt_int(msg._member, cl->prev.o._member, &md); \
|
||||
if (md >= DLT_SET) \
|
||||
|
|
Loading…
Reference in New Issue