示例#1
0
文件: server.c 项目: gamman/appweb-3
/*
 *  Create a new server. There is typically only one server with one or more (virtual) hosts.
 */
MaServer *maCreateServer(MaHttp *http, cchar *name, cchar *root, cchar *ipAddr, int port)
{
    MaServer        *server;
    MaHostAddress   *hostAddress;
    MaListen        *listen;
    static int      staticModulesLoaded = 0;

    mprAssert(http);
    mprAssert(name && *name);

    server = mprAllocObjZeroed(http, MaServer);
    if (server == 0) {
        return 0;
    }

    server->hosts = mprCreateList(server);
    server->listens = mprCreateList(server);
    server->hostAddresses = mprCreateList(server);
    server->name = mprStrdup(server, name);
    server->http = http;

    maAddServer(http, server);
    maSetServerRoot(server, root);

    if (ipAddr && port > 0) {
        listen = maCreateListen(server, ipAddr, port, 0);
        maAddListen(server, listen);

        hostAddress = maCreateHostAddress(server, ipAddr, port);
        mprAddItem(server->hostAddresses, hostAddress);
    }
    maSetDefaultServer(http, server);
    if (!staticModulesLoaded) {
        staticModulesLoaded = 1;
        maLoadStaticModules(http);
    }
    return server;
}
示例#2
0
文件: server.c 项目: gamman/appweb-4
/*  
    Create a new server. A server may manage may multiple servers and virtual hosts. 
    If ip/port endpoint is supplied, this call will create a Server on that endpoint. Otherwise, 
    maConfigureServer should be called later. A default route is created with the document root set to "."
 */
MaServer *maCreateServer(MaAppweb *appweb, cchar *name)
{
    MaServer    *server;

    mprAssert(appweb);

    if ((server = mprAllocObj(MaServer, manageServer)) == NULL) {
        return 0;
    }
    if (name == 0 || *name == '\0') {
        name = "default";
    }
    server->name = sclone(name);
    server->endpoints = mprCreateList(-1, 0);
    server->limits = httpCreateLimits(1);
    server->appweb = appweb;
    server->http = appweb->http;
    maAddServer(appweb, server);
    if (appweb->defaultServer == 0) {
        maSetDefaultServer(appweb, server);
    }
    return server;
}
示例#3
0
文件: server.c 项目: doghell/appweb-4
/*  
    Create a new server. A server may manage may multiple servers and virtual hosts. 
    If ip/port endpoint is supplied, this call will create a Server on that endpoint. Otherwise, 
    maConfigureServer should be called later. A default route is created with the document root set to "."
 */
PUBLIC MaServer *maCreateServer(MaAppweb *appweb, cchar *name)
{
    MaServer    *server;
    HttpHost    *host;
    HttpRoute   *route;

    assert(appweb);

    if ((server = mprAllocObj(MaServer, manageServer)) == NULL) {
        return 0;
    }
    if (name == 0 || *name == '\0') {
        name = "default";
    }
    server->name = sclone(name);
    server->endpoints = mprCreateList(-1, 0);
    server->limits = httpCreateLimits(1);
    server->appweb = appweb;
    server->http = appweb->http;

    server->defaultHost = host = httpCreateHost(NULL);
    if (!httpGetDefaultHost()) {
        httpSetDefaultHost(host);
    }
    route = httpCreateRoute(host);
    httpSetRouteName(route, "default");
    //UNUSED httpSetRoutePrefix(route, "");
    httpSetHostDefaultRoute(host, route);
    route->limits = server->limits;

    maAddServer(appweb, server);
    if (appweb->defaultServer == 0) {
        maSetDefaultServer(appweb, server);
    }
    return server;
}