/****************************************************************** * * CyberUPnP for Java * * Copyright (C) Satoshi Konno 2002-2003 * * File: HTTPServerList.java * * Revision; * * 05/08/03 - first revision. 24/03/06 - Stefano Lenzi:added debug information * as request by Stephen More * ******************************************************************/ package com.guo.duoduo.airplayreceiver.http; import java.net.InetAddress; import java.util.Vector; import com.guo.duoduo.airplayreceiver.utils.HostInterface; public class HTTPServerList extends Vector { //////////////////////////////////////////////// // Constructor //////////////////////////////////////////////// private InetAddress[] binds = null; private int port = 5000; public HTTPServerList() { } public HTTPServerList(InetAddress[] list, int port) { this.binds = list; this.port = port; } //////////////////////////////////////////////// // Methods //////////////////////////////////////////////// public void addRequestListener(HTTPRequestListener listener) { int nServers = size(); for (int n = 0; n < nServers; n++) { HTTPServer server = getHTTPServer(n); server.addRequestListener(listener); } } public HTTPServer getHTTPServer(int n) { return (HTTPServer) get(n); } //////////////////////////////////////////////// // open/close //////////////////////////////////////////////// public void close() { int nServers = size(); for (int n = 0; n < nServers; n++) { HTTPServer server = getHTTPServer(n); server.close(); } } public int open() { InetAddress[] binds = this.binds; String[] bindAddresses; if (binds != null) { bindAddresses = new String[binds.length]; for (int i = 0; i < binds.length; i++) { bindAddresses[i] = binds[i].getHostAddress(); } } else { int nHostAddrs = HostInterface.getNHostAddresses(); bindAddresses = new String[nHostAddrs]; for (int n = 0; n < nHostAddrs; n++) { bindAddresses[n] = HostInterface.getHostAddress(n); } } int j = 0; for (int i = 0; i < bindAddresses.length; i++) { HTTPServer httpServer = new HTTPServer(); if ((bindAddresses[i] == null) || (httpServer.open(bindAddresses[i], port) == false)) { close(); clear(); } else { add(httpServer); j++; } } return j; } public boolean open(int port) { this.port = port; return open() != 0; } //////////////////////////////////////////////// // start/stop //////////////////////////////////////////////// public void start() { int nServers = size(); for (int n = 0; n < nServers; n++) { HTTPServer server = getHTTPServer(n); server.start(); } } public void stop() { int nServers = size(); for (int n = 0; n < nServers; n++) { HTTPServer server = getHTTPServer(n); server.stop(); } } }