1 jls.loader.provide('jls.net.http.ServerMgr');
  2 
  3 jls.loader.require('jls.net.InetSocketAddress');
  4 jls.loader.require('jls.net.URL');
  5 jls.loader.require('jls.net.http.HttpServer');
  6 
  7 /**
  8  * @class A manager for the HTTP servers.
  9  */
 10 jls.net.http.ServerMgr = jls.lang.Class.create(/** @lends jls.net.http.ServerMgr.prototype */
 11 {
 12     initialize : function() {
 13 		this._servers = {}; // HttpServers
 14     },
 15     /**
 16      * Creates a context at the given address.
 17      * 
 18      * @param {String} address The address of the context.
 19      * @returns {jls.net.http.HttpContext} the created context.
 20      */
 21     createContext : function(address) {
 22 		var url = new jls.net.URL(address);
 23 		var port = url.getPort();
 24 		if (port == -1) {
 25 			port = url.getDefaultPort();
 26 		}
 27 		var addr = new jls.net.InetSocketAddress(url.getHost(), port);
 28 		var addressId = addr.toString();
 29 		var server;
 30 		if (addressId in this._servers) {
 31 			server = this._servers[addressId];
 32 		} else {
 33 			server = jls.net.http.HttpServer.create(addr, 5);
 34 			server.start();
 35             this._servers[addressId] = server;
 36 		}
 37 		return server.createContext(url.getPath());
 38     },
 39     shutdown : function() {
 40 		for (var id in this._servers) {
 41 			this._servers[id].stop();
 42 		}
 43     }
 44 });
 45 
 46 Object.extend(jls.net.http.ServerMgr, /** @lends jls.net.http.ServerMgr */
 47 {
 48 	_instance : new jls.net.http.ServerMgr(),
 49     /**
 50      * Get the instance of the manager.
 51      * 
 52      * @returns {jls.net.http.ServerMgr} the instance.
 53      */
 54     getInstance : function() {
 55 		return jls.net.http.ServerMgr._instance;
 56     }
 57 });
 58 
 59