version 1.6.2.1, 2012/03/12 14:53:07
|
version 1.6.2.3, 2012/03/12 15:07:58
|
Line 777 rpc_srv_loopServer(rpc_srv_t * __restrict srv)
|
Line 777 rpc_srv_loopServer(rpc_srv_t * __restrict srv)
|
fd_set fds; |
fd_set fds; |
int ret; |
int ret; |
struct timeval tv = { DEF_RPC_TIMEOUT, 0 }; |
struct timeval tv = { DEF_RPC_TIMEOUT, 0 }; |
|
pthread_attr_t attr; |
|
|
if (!srv) { |
if (!srv) { |
rpc_SetErr(EINVAL, "Error:: Invalid parameter can`t start RPC server ...\n"); |
rpc_SetErr(EINVAL, "Error:: Invalid parameter can`t start RPC server ...\n"); |
return -1; |
return -1; |
} |
} |
|
|
|
tv.tv_sec = srv->srv_session.sess_timeout; |
|
|
/* activate BLOB server worker if srv->srv_blob.state == enable */ |
/* activate BLOB server worker if srv->srv_blob.state == enable */ |
rpc_srv_execBLOBServer(srv); |
rpc_srv_execBLOBServer(srv); |
|
|
Line 791 rpc_srv_loopServer(rpc_srv_t * __restrict srv)
|
Line 794 rpc_srv_loopServer(rpc_srv_t * __restrict srv)
|
return -1; |
return -1; |
} |
} |
|
|
|
pthread_attr_init(&attr); |
|
pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED); |
|
|
|
/* main rpc loop */ |
while (srv->srv_kill != kill) { |
while (srv->srv_kill != kill) { |
for (c = srv->srv_clients, i = 0; i < srv->srv_numcli && c; i++, c++) |
for (c = srv->srv_clients, i = 0; i < srv->srv_numcli && c; i++, c++) |
if (!c->cli_sa.sa.sa_family) |
if (!c->cli_sa.sa.sa_family) |
Line 822 rpc_srv_loopServer(rpc_srv_t * __restrict srv)
|
Line 829 rpc_srv_loopServer(rpc_srv_t * __restrict srv)
|
} else |
} else |
c->cli_parent = srv; |
c->cli_parent = srv; |
|
|
if (pthread_create(&c->cli_tid, NULL, rpc_srv_dispatchCall, c)) { | /* spawn rpc client dispatcher */ |
| if (pthread_create(&c->cli_tid, &attr, rpc_srv_dispatchCall, c)) { |
LOGERR; |
LOGERR; |
continue; |
continue; |
} else | } |
pthread_detach(c->cli_tid); | |
} |
} |
|
|
|
pthread_attr_destroy(&attr); |
return 0; |
return 0; |
} |
} |
|
|