mirror of https://github.com/yandex/odyssey.git
odissey: peek server from idle pool
This commit is contained in:
parent
216d872956
commit
d82e7ba755
|
@ -129,6 +129,26 @@ od_feauth(odclient_t *client)
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static odserver_t*
|
||||||
|
od_beconnect(odpooler_t *pooler, sobestartup_t *startup)
|
||||||
|
{
|
||||||
|
(void)pooler;
|
||||||
|
(void)startup;
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
static odserver_t*
|
||||||
|
od_bepop(odpooler_t *pooler, sobestartup_t *startup)
|
||||||
|
{
|
||||||
|
odserver_t *server = od_serverpool_pop(&pooler->server_pool);
|
||||||
|
if (server) {
|
||||||
|
od_serverpool_set(&pooler->server_pool, server, OD_SACTIVE);
|
||||||
|
return server;
|
||||||
|
}
|
||||||
|
server = od_beconnect(pooler, startup);
|
||||||
|
return server;
|
||||||
|
}
|
||||||
|
|
||||||
void od_router(void *arg)
|
void od_router(void *arg)
|
||||||
{
|
{
|
||||||
odclient_t *client = arg;
|
odclient_t *client = arg;
|
||||||
|
@ -157,8 +177,14 @@ void od_router(void *arg)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* server = serverpool_pop() */
|
/* get server connection */
|
||||||
/* server = server_connect() */
|
odserver_t *server = od_bepop(pooler, &startup);
|
||||||
|
if (server == NULL) {
|
||||||
|
od_feclose(client);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* link server with client */
|
||||||
|
|
||||||
while (1) {
|
while (1) {
|
||||||
rc = od_read(client->io, &client->stream);
|
rc = od_read(client->io, &client->stream);
|
||||||
|
|
Loading…
Reference in New Issue