forked from enlightenment/efl
- maintain a list of connected clients and use that for clients_get
SVN revision: 21601
This commit is contained in:
parent
d6cd4313bd
commit
214f4563a7
|
@ -355,6 +355,8 @@ ecore_ipc_server_add(Ecore_Ipc_Type compl_type, const char *name, int port, cons
|
||||||
}
|
}
|
||||||
svr->max_buf_size = 32 * 1024;
|
svr->max_buf_size = 32 * 1024;
|
||||||
svr->data = (void *)data;
|
svr->data = (void *)data;
|
||||||
|
svr->client_list = ecore_list_new();
|
||||||
|
ecore_list_init(svr->client_list);
|
||||||
servers = _ecore_list2_append(servers, svr);
|
servers = _ecore_list2_append(servers, svr);
|
||||||
ECORE_MAGIC_SET(svr, ECORE_MAGIC_IPC_SERVER);
|
ECORE_MAGIC_SET(svr, ECORE_MAGIC_IPC_SERVER);
|
||||||
return svr;
|
return svr;
|
||||||
|
@ -438,15 +440,14 @@ ecore_ipc_server_del(Ecore_Ipc_Server *svr)
|
||||||
if (svr->event_count > 0)
|
if (svr->event_count > 0)
|
||||||
svr->delete_me = 1;
|
svr->delete_me = 1;
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Ecore_List2 *l;
|
|
||||||
|
|
||||||
ECORE_MAGIC_SET(svr, ECORE_MAGIC_NONE);
|
ECORE_MAGIC_SET(svr, ECORE_MAGIC_NONE);
|
||||||
while (svr->clients)
|
while (svr->clients)
|
||||||
ecore_ipc_client_del((Ecore_Ipc_Client *)svr->clients);
|
ecore_ipc_client_del((Ecore_Ipc_Client *)svr->clients);
|
||||||
ecore_con_server_del(svr->server);
|
ecore_con_server_del(svr->server);
|
||||||
servers = _ecore_list2_remove(servers, svr);
|
servers = _ecore_list2_remove(servers, svr);
|
||||||
if (svr->buf) free(svr->buf);
|
if (svr->buf) free(svr->buf);
|
||||||
|
ecore_list_destroy(svr->client_list);
|
||||||
free(svr);
|
free(svr);
|
||||||
}
|
}
|
||||||
return data;
|
return data;
|
||||||
|
@ -503,7 +504,7 @@ ecore_ipc_server_clients_get(Ecore_Ipc_Server *svr)
|
||||||
"ecore_ipc_server_clients_get");
|
"ecore_ipc_server_clients_get");
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
return svr->clients;
|
return svr->client_list;
|
||||||
}
|
}
|
||||||
|
|
||||||
#define SVENC(_member) \
|
#define SVENC(_member) \
|
||||||
|
@ -971,6 +972,7 @@ _ecore_ipc_event_client_add(void *data __UNUSED__, int ev_type __UNUSED__, void
|
||||||
cl->max_buf_size = 32 * 1024;
|
cl->max_buf_size = 32 * 1024;
|
||||||
ecore_con_client_data_set(cl->client, (void *)cl);
|
ecore_con_client_data_set(cl->client, (void *)cl);
|
||||||
svr->clients = _ecore_list2_append(svr->clients, cl);
|
svr->clients = _ecore_list2_append(svr->clients, cl);
|
||||||
|
ecore_list_append(svr->client_list, cl);
|
||||||
{
|
{
|
||||||
Ecore_Ipc_Event_Client_Add *e2;
|
Ecore_Ipc_Event_Client_Add *e2;
|
||||||
|
|
||||||
|
@ -1001,7 +1003,12 @@ _ecore_ipc_event_client_del(void *data __UNUSED__, int ev_type __UNUSED__, void
|
||||||
cl = ecore_con_client_data_get(e->client);
|
cl = ecore_con_client_data_get(e->client);
|
||||||
{
|
{
|
||||||
Ecore_Ipc_Event_Client_Del *e2;
|
Ecore_Ipc_Event_Client_Del *e2;
|
||||||
|
Ecore_Ipc_Server *svr;
|
||||||
|
|
||||||
|
svr = ecore_con_server_data_get(ecore_con_client_server_get(e->client));
|
||||||
|
ecore_list_goto(svr->client_list, cl);
|
||||||
|
ecore_list_remove(svr->client_list);
|
||||||
|
ecore_list_goto_first(svr->client_list);
|
||||||
e2 = calloc(1, sizeof(Ecore_Ipc_Event_Client_Del));
|
e2 = calloc(1, sizeof(Ecore_Ipc_Event_Client_Del));
|
||||||
if (e2)
|
if (e2)
|
||||||
{
|
{
|
||||||
|
|
|
@ -59,6 +59,7 @@ struct _Ecore_Ipc_Server
|
||||||
ECORE_MAGIC;
|
ECORE_MAGIC;
|
||||||
Ecore_Con_Server *server;
|
Ecore_Con_Server *server;
|
||||||
Ecore_Ipc_Client *clients;
|
Ecore_Ipc_Client *clients;
|
||||||
|
Ecore_List *client_list;
|
||||||
void *data;
|
void *data;
|
||||||
unsigned char *buf;
|
unsigned char *buf;
|
||||||
int buf_size;
|
int buf_size;
|
||||||
|
|
Loading…
Reference in New Issue