cleaned up code a little bit

This commit is contained in:
hyung-hwan 2013-01-03 14:58:22 +00:00
parent 8ed69e7152
commit 02831b01a0
2 changed files with 32 additions and 20 deletions

View File

@ -49,6 +49,7 @@ enum qse_httpd_errnum_t
QSE_HTTPD_EPIPE, QSE_HTTPD_EPIPE,
QSE_HTTPD_EAGAIN, QSE_HTTPD_EAGAIN,
QSE_HTTPD_ENOSVR, /* no active servers */
QSE_HTTPD_ECONN, QSE_HTTPD_ECONN,
QSE_HTTPD_ENOBUF, /* no buffer available */ QSE_HTTPD_ENOBUF, /* no buffer available */
QSE_HTTPD_EDISCON, /* client disconnnected */ QSE_HTTPD_EDISCON, /* client disconnnected */
@ -231,6 +232,8 @@ struct qse_httpd_rcb_t
qse_httpd_t* httpd, qse_httpd_client_t* client, qse_httpd_t* httpd, qse_httpd_client_t* client,
const qse_mchar_t* qpath, const qse_httpd_dirent_t* dirent, const qse_mchar_t* qpath, const qse_httpd_dirent_t* dirent,
qse_mchar_t* buf, int bufsz); qse_mchar_t* buf, int bufsz);
int (*log) (qse_httpd_t* httpd, int level, const qse_char_t* message);
}; };
/* -------------------------------------------------------------------------- */ /* -------------------------------------------------------------------------- */

View File

@ -499,16 +499,27 @@ static int activate_servers (qse_httpd_t* httpd)
if (httpd->scb->server.open (httpd, server) <= -1) if (httpd->scb->server.open (httpd, server) <= -1)
{ {
qse_char_t buf[64]; qse_char_t buf[64];
qse_nwadtostr (&server->nwad, buf, QSE_COUNTOF(buf), QSE_NWADTOSTR_ALL); qse_nwadtostr (&server->nwad,
qse_printf (QSE_T("FAILED TO ACTIVATE SERVER....[%s]\n"), buf); buf, QSE_COUNTOF(buf), QSE_NWADTOSTR_ALL);
/*
httpd->rcb->log (httpd, 0,
QSE_T("cannot activate %s"), buf);
*/
continue; continue;
} }
qse_printf (QSE_T("MUX ADDHND SERVER %d\n"), server->handle.i);
if (httpd->scb->mux.addhnd ( if (httpd->scb->mux.addhnd (
httpd, httpd->mux, server->handle, QSE_HTTPD_MUX_READ, server) <= -1) httpd, httpd->mux, server->handle, QSE_HTTPD_MUX_READ, server) <= -1)
{ {
qse_printf (QSE_T("FAILED TO ADD SERVER HANDLE TO MUX....\n")); qse_char_t buf[64];
qse_nwadtostr (&server->nwad,
buf, QSE_COUNTOF(buf), QSE_NWADTOSTR_ALL);
/*
httpd->rcb->log (httpd, 0,
QSE_T("cannot activate %s - "), buf);
*/
httpd->scb->server.close (httpd, server); httpd->scb->server.close (httpd, server);
continue; continue;
} }
@ -802,7 +813,6 @@ qse_printf (QSE_T("task returend %d\n"), n);
if (client->status & CLIENT_MUTE) if (client->status & CLIENT_MUTE)
{ {
qse_printf (QSE_T("REMOVING XXXXX FROM READING....\n"));
mux_mask &= ~QSE_HTTPD_MUX_READ; mux_mask &= ~QSE_HTTPD_MUX_READ;
mux_status &= ~CLIENT_HANDLE_READ_IN_MUX; mux_status &= ~CLIENT_HANDLE_READ_IN_MUX;
} }
@ -813,7 +823,6 @@ qse_printf (QSE_T("REMOVING XXXXX FROM READING....\n"));
{ {
/* no more task. but this client /* no more task. but this client
* has closed connection previously */ * has closed connection previously */
qse_printf (QSE_T("REMOVING XXXXX FROM READING NO MORE TASK....\n"));
return -1; return -1;
} }
} }
@ -1092,8 +1101,12 @@ static int dispatch_mux (
perform_client_task (httpd, mux, handle, mask, cbarg); perform_client_task (httpd, mux, handle, mask, cbarg);
} }
int qse_httpd_loop (qse_httpd_t* httpd, qse_httpd_scb_t* scb, qse_httpd_rcb_t* rcb, const qse_ntime_t* tmout) int qse_httpd_loop (
qse_httpd_t* httpd, qse_httpd_scb_t* scb,
qse_httpd_rcb_t* rcb, const qse_ntime_t* tmout)
{ {
int xret;
QSE_ASSERTX (httpd->server.list.head != QSE_NULL, QSE_ASSERTX (httpd->server.list.head != QSE_NULL,
"Add listeners before calling qse_httpd_loop()"); "Add listeners before calling qse_httpd_loop()");
@ -1114,11 +1127,7 @@ int qse_httpd_loop (qse_httpd_t* httpd, qse_httpd_scb_t* scb, qse_httpd_rcb_t* r
QSE_ASSERT (httpd->server.navail > 0); QSE_ASSERT (httpd->server.navail > 0);
httpd->mux = httpd->scb->mux.open (httpd, dispatch_mux); httpd->mux = httpd->scb->mux.open (httpd, dispatch_mux);
if (httpd->mux == QSE_NULL) if (httpd->mux == QSE_NULL) return -1;
{
qse_printf (QSE_T("can't open mux....\n"));
return -1;
}
if (activate_servers (httpd) <= -1) if (activate_servers (httpd) <= -1)
{ {
@ -1127,11 +1136,13 @@ qse_printf (QSE_T("can't open mux....\n"));
} }
if (httpd->server.nactive <= 0) if (httpd->server.nactive <= 0)
{ {
qse_printf (QSE_T("no servers are active....\n")); httpd->errnum = QSE_HTTPD_ENOSVR;
httpd->scb->mux.close (httpd, httpd->mux); httpd->scb->mux.close (httpd, httpd->mux);
return -1; return -1;
} }
xret = 0;
while (!httpd->stopreq) while (!httpd->stopreq)
{ {
int count; int count;
@ -1139,10 +1150,8 @@ qse_printf (QSE_T("no servers are active....\n"));
count = httpd->scb->mux.poll (httpd, httpd->mux, tmout); count = httpd->scb->mux.poll (httpd, httpd->mux, tmout);
if (count <= -1) if (count <= -1)
{ {
/* TODO: call user callback for this multiplexer error */ xret = -1;
/*if (errno == EINTR) continue;*/ break;
qse_fprintf (QSE_STDERR, QSE_T("Error: mux returned failure %d\n"), (int)httpd->errnum);
/* break; */
} }
purge_bad_clients (httpd); purge_bad_clients (httpd);
@ -1152,7 +1161,7 @@ qse_fprintf (QSE_STDERR, QSE_T("Error: mux returned failure %d\n"), (int)httpd->
purge_client_list (httpd); purge_client_list (httpd);
deactivate_servers (httpd); deactivate_servers (httpd);
httpd->scb->mux.close (httpd, httpd->mux); httpd->scb->mux.close (httpd, httpd->mux);
return 0; return xret;
} }
/* --------------------------------------------------- */ /* --------------------------------------------------- */