/* Create a simple stand-alone web server */ int main(int argc, char **argv, char **envp) { Mpr *mpr; MaAppweb *appweb; MaServer *server; int rc; rc = MPR_ERR_CANT_CREATE; if ((mpr = mprCreate(0, NULL, MPR_USER_EVENTS_THREAD)) == 0) { mprError("Cannot create the web server runtime"); return -1; } mprStart(); appweb = maCreateAppweb(mpr); mprAddRoot(appweb); server = maCreateServer(appweb, 0); if (maParseConfig(server, "appweb.conf", 0) < 0) { mprError("Cannot parse the config file %s", "appweb.conf"); return -1; } httpDefineAction("/action/myaction", myaction); if (maStartServer(server) < 0) { mprError("Cannot start the web server"); return -1; } mprServiceEvents(-1, 0); maStopServer(server); mprRemoveRoot(appweb); mprDestroy(MPR_EXIT_DEFAULT); return 0; }
int maStopHttp(MaHttp *http) { MaServer *server; int next; for (next = 0; (server = mprGetNextItem(http->servers, &next)) != 0; ) { maStopServer(server); } return 0; }
int maStopAppweb(MaAppweb *appweb) { MaServer *server; int next; for (next = 0; (server = mprGetNextItem(appweb->servers, &next)) != 0; ) { maStopServer(server); } return 0; }
static void manageServer(MaServer *server, int flags) { if (flags & MPR_MANAGE_MARK) { mprMark(server->name); mprMark(server->appweb); mprMark(server->http); mprMark(server->limits); mprMark(server->endpoints); } else if (flags & MPR_MANAGE_FREE) { maStopServer(server); } }
/* Run a web server not based on a config file. */ int maRunSimpleWebServer(cchar *ip, int port, cchar *home, cchar *documents) { Mpr *mpr; MaServer *server; MaAppweb *appweb; int rc; /* Initialize and start the portable runtime services. */ rc = MPR_ERR_CANT_CREATE; if ((mpr = mprCreate(0, NULL, 0)) == 0) { mprError("Can't create the web server runtime"); } else { if (mprStart(mpr) < 0) { mprError("Can't start the web server runtime"); } else { if ((appweb = maCreateAppweb(mpr)) == 0) { mprError("Can't create the web server http services"); } else { mprAddRoot(appweb); if ((server = maCreateServer(appweb, 0)) == 0) { mprError("Can't create the web server"); } else { if (maConfigureServer(server, 0, home, documents, ip, port) < 0) { mprError("Can't create the web server"); } else { if (maStartServer(server) < 0) { mprError("Can't start the web server"); } else { mprServiceEvents(-1, 0); rc = 0; } maStopServer(server); } } mprRemoveRoot(appweb); } } mprDestroy(MPR_EXIT_DEFAULT); } return rc; }
static int runServer(cchar *configFile, cchar *ip, int port, cchar *home, cchar *documents) { MaAppweb *appweb; MaServer *server; if (mprStart() < 0) { mprLog("error appweb", 0, "Cannot start the web server runtime"); return MPR_ERR_CANT_CREATE; } if ((appweb = maCreateAppweb()) == 0) { mprLog("error appweb", 0, "Cannot create appweb object"); return MPR_ERR_CANT_CREATE; } mprAddRoot(appweb); if ((server = maCreateServer(appweb, 0)) == 0) { mprLog("error appweb", 0, "Cannot create the web server"); mprRemoveRoot(appweb); return MPR_ERR_CANT_CREATE; } if (home) { if (maConfigureServer(server, 0, home, documents, ip, port, 0) < 0) { mprLog("error appweb", 0, "Cannot create the web server"); mprRemoveRoot(appweb); return MPR_ERR_BAD_STATE; } } else { if (maParseConfig(server, configFile, 0) < 0) { mprLog("error appweb", 0, "Cannot parse the config file %s", configFile); mprRemoveRoot(appweb); return MPR_ERR_CANT_READ; } } if (maStartServer(server) < 0) { mprLog("error appweb", 0, "Cannot start the web server"); mprRemoveRoot(appweb); return MPR_ERR_CANT_COMPLETE; } mprServiceEvents(-1, 0); maStopServer(server); mprRemoveRoot(appweb); return 0; }
/* Create a web server described by a config file. */ int maRunWebServer(cchar *configFile) { Mpr *mpr; MaAppweb *appweb; MaServer *server; int rc; rc = MPR_ERR_CANT_CREATE; if ((mpr = mprCreate(0, NULL, 0)) == 0) { mprError("Can't create the web server runtime"); } else { if (mprStart() < 0) { mprError("Can't start the web server runtime"); } else { if ((appweb = maCreateAppweb(mpr)) == 0) { mprError("Can't create appweb object"); } else { mprAddRoot(appweb); if ((server = maCreateServer(appweb, 0)) == 0) { mprError("Can't create the web server"); } else { if (maParseConfig(server, configFile, 0) < 0) { mprError("Can't parse the config file %s", configFile); } else { if (maStartServer(server) < 0) { mprError("Can't start the web server"); } else { mprServiceEvents(-1, 0); rc = 0; } maStopServer(server); } } mprRemoveRoot(appweb); } } } mprDestroy(MPR_EXIT_DEFAULT); return rc; }