Changeset 1101
- Timestamp:
- 06/21/08 23:56:21 (3 months ago)
- Files:
-
- trunk/mango/net/http/server/HttpBridge.d (modified) (4 diffs)
- trunk/mango/net/http/server/HttpResponse.d (modified) (4 diffs)
- trunk/mango/net/servlet/Servlet.d (modified) (3 diffs)
- trunk/mango/net/servlet/ServletProvider.d (modified) (5 diffs)
- trunk/mango/net/servlet/ServletResponse.d (modified) (2 diffs)
- trunk/mango/net/servlet/model/IServletResponse.d (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/mango/net/http/server/HttpBridge.d
r1097 r1101 27 27 /****************************************************************************** 28 28 29 Bridges between an ServiceProvider and an IServer, and contains a set of30 data specific to each thread. There is only one instance of server31 and provider, but multiple live instances of HttpBridge (one per32 server-thread).29 Bridges between an ServiceProvider and an IServer, and contains a 30 set of data specific to each thread. There is only one instance of 31 server and provider, but multiple live instances of HttpBridge (one 32 per server-thread). 33 33 34 34 Any additional thread-specific data should probably be contained … … 70 70 **********************************************************************/ 71 71 72 IServer getServer ()72 IServer getServer () 73 73 { 74 74 return server; … … 77 77 /********************************************************************** 78 78 79 Bridge the divide between IServer and ServiceProvider instances. 80 Note that there is one instance of this class per thread. 81 82 Note also that this is probably the right place to implement 83 keep-alive support if that were ever to happen, although the 84 implementation should itself be in a subclass. 79 Bridge the divide between IServer and ServiceProvider 80 instances. Note that there is one instance of this class 81 per thread. 85 82 86 83 **********************************************************************/ … … 94 91 // close and destroy this conduit (socket) 95 92 scope (exit) 96 if (! response.managedConnection) 97 conduit.detach; 93 conduit.detach; 98 94 99 95 do { trunk/mango/net/http/server/HttpResponse.d
r1095 r1101 278 278 **********************************************************************/ 279 279 280 finalvoid keepAlive (bool yes)280 void keepAlive (bool yes) 281 281 { 282 282 if (commited) … … 291 291 **********************************************************************/ 292 292 293 finalbool keepAlive ()293 bool keepAlive () 294 294 { 295 295 return keepalive; … … 303 303 **********************************************************************/ 304 304 305 final void managedConnection(bool yes)305 void managed (bool yes) 306 306 { 307 307 isManaged = yes; … … 315 315 **********************************************************************/ 316 316 317 final bool managedConnection()317 bool managed () 318 318 { 319 319 return isManaged; trunk/mango/net/servlet/Servlet.d
r1100 r1101 109 109 average2 = 0, 110 110 average3 = 0, 111 average4 = 0, 112 average5 = 0, 113 average6 = 0, 114 average7 = 0, 115 average8 = 0; 111 average4 = 0; 116 112 117 113 Metrics failure () … … 128 124 ++bad; 129 125 130 average8 = average7;131 average7 = average6;132 average6 = average5;133 average5 = average4;134 126 average4 = average3; 135 127 average3 = average2; … … 137 129 current = time; 138 130 average = ((current + average2 + 139 average3 + average4 + 140 average5 + average6 + 141 average7 + average8) / 8.0); 131 average3 + average4) / 4.0); 142 132 return *this; 143 133 } trunk/mango/net/servlet/ServletProvider.d
r1100 r1101 318 318 is done, and where optimization efforts should be focused. 319 319 The process itself is straightforward: 320 320 --- 321 321 * we lookup the mapping cache to see if we've processed 322 322 the request before. If not, we create a new mapping … … 326 326 327 327 * lastly, we flush the response 328 328 --- 329 329 All exceptions are caught and logged. 330 330 … … 346 346 path = request.uri.getPath; 347 347 348 // log the request349 if (log.enabled (log.Trace))350 log.trace ("request for path '{}' from uri '{}'", path, request.uri);351 352 348 // lookup servlet for this path 353 349 pm = cast(PathMapping) cache.get (path); … … 361 357 // did we find a matching servlet? 362 358 if (pm is null) 363 // nope; go home ... 364 return response.sendError (HttpResponses.NotFound); 359 { 360 // nope; go home ... 361 log.warn ("No service configured for [{}]", request.uri); 362 return response.sendError (HttpResponses.NotFound); 363 } 365 364 366 365 // add this new URI path to the cache … … 379 378 380 379 // flush output on behalf of servlet ... 381 response.flush; 380 if (! response.managed) 381 response.flush; 382 382 383 383 // processed successfully? add new URI path to cache ... trunk/mango/net/servlet/ServletResponse.d
r1100 r1101 46 46 private FileConduit file; 47 47 48 private alias HttpResponse.managed managed; 49 48 50 /********************************************************************** 49 51 … … 114 116 { 115 117 return super.getOutputBuffer(); 118 } 119 120 /*********************************************************************** 121 122 ***********************************************************************/ 123 124 void managed (bool yes) 125 { 126 super.managed (yes); 116 127 } 117 128 trunk/mango/net/servlet/model/IServletResponse.d
r1087 r1101 64 64 ***********************************************************************/ 65 65 66 void managed (bool); 67 68 /*********************************************************************** 69 70 ***********************************************************************/ 71 66 72 void setContentLength (int len); 67 73
