Changeset 1119

Show
Ignore:
Timestamp:
08/23/08 20:56:37 (3 months ago)
Author:
kris
Message:

added keep-alive and read-timeout configuration

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/mango/net/http/server/HttpBridge.d

    r1113 r1119  
    4949        private HttpRequest     request; 
    5050        private HttpResponse    response; 
    51          
     51        private uint            keepAlive; 
     52 
    5253        /********************************************************************** 
    5354 
     
    5859        **********************************************************************/ 
    5960 
    60         this (IServer server, ServiceProvider provider, HttpThread thread
     61        this (IServer server, ServiceProvider provider, HttpThread thread, uint keepAlive
    6162        { 
    6263                this.server = server; 
    6364                this.thread = thread; 
    6465                this.provider = provider; 
     66                this.keepAlive = keepAlive; 
    6567 
    6668                request = provider.createRequest (this); 
     
    112114                   // check for Connection:close 
    113115                   auto headers = request.getInputHeaders; 
    114                    if (++count < 32 && "close" != headers.get(HttpHeader.Connection)) 
     116                   if (++count <= keepAlive && "close" != headers.get(HttpHeader.Connection)) 
    115117                      { 
    116118                      response.keepAlive = true; 
  • trunk/mango/net/http/server/HttpServer.d

    r1109 r1119  
    4040{ 
    4141        private ServiceProvider provider; 
     42        private uint            requests = 1; 
     43        private double          timeout = 10.0; 
    4244 
    4345        /********************************************************************** 
     
    7274                super (bind, threads, backlog, log); 
    7375                this.provider = provider; 
     76        } 
     77 
     78        /********************************************************************** 
     79         
     80                Set the maximum number of requests each thread will  
     81                service before closing the requesting socket (default 
     82                is one) 
     83 
     84        **********************************************************************/ 
     85 
     86        HttpServer keepAlive (uint count) 
     87        { 
     88                requests = count; 
     89                return this; 
     90        } 
     91 
     92        /********************************************************************** 
     93 
     94                Set the read timeout on an incoming request (default is  
     95                ten seconds) 
     96 
     97        **********************************************************************/ 
     98 
     99        HttpServer readTimeout (double timeout) 
     100        { 
     101                this.timeout = timeout; 
     102                return this; 
    74103        } 
    75104 
     
    108137                auto server = new ServerSocket (bind, backlog, reuse); 
    109138 
    110                 // set a default read timeout? 
    111                 server.setTimeout (10.0); 
     139                // set a default read timeout 
     140                server.setTimeout (this.timeout); 
    112141                return server; 
    113142        } 
     
    146175                   // create a new instance if it's the first service  
    147176                   // request on this particular thread 
    148                    bridge = new HttpBridge (this, provider, thread); 
     177                   bridge = new HttpBridge (this, provider, thread, requests); 
    149178                   thread.setBridge (bridge); 
    150179                   }