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