odissey: peek server from idle pool

This commit is contained in:
Dmitry Simonenko 2016-11-10 15:10:19 +03:00
parent 216d872956
commit d82e7ba755
1 changed files with 28 additions and 2 deletions

View File

@ -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);