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