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