/******************************************************************
*
* CyberUPnP for Java
*
* Copyright (C) Satoshi Konno 2002-2003
*
* File: HTTPServerList.java
*
* Revision;
*
* 05/11/03
* - first revision.
*
******************************************************************/
package org.cybergarage.upnp.ssdp;
import java.net.InetAddress;
import java.util.*;
import org.cybergarage.net.*;
import org.cybergarage.upnp.*;
public class SSDPNotifySocketList extends Vector<SSDPNotifySocket>
{
////////////////////////////////////////////////
// Constructor
////////////////////////////////////////////////
private InetAddress[] binds = null;
public SSDPNotifySocketList() {
}
/**
*
* @param binds The host to bind the service <tt>null</tt> means to bind to default.
* @since 1.8
*/
public SSDPNotifySocketList(InetAddress[] binds){
this.binds=binds;
}
////////////////////////////////////////////////
// Methods
////////////////////////////////////////////////
public SSDPNotifySocket getSSDPNotifySocket(int n)
{
return (SSDPNotifySocket)get(n);
}
////////////////////////////////////////////////
// ControlPoint
////////////////////////////////////////////////
public void setControlPoint(ControlPoint ctrlPoint)
{
int nSockets = size();
for (int n=0; n<nSockets; n++) {
SSDPNotifySocket sock = getSSDPNotifySocket(n);
sock.setControlPoint(ctrlPoint);
}
}
////////////////////////////////////////////////
// Methods
////////////////////////////////////////////////
public boolean 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);
}
}
for (int i = 0; i < bindAddresses.length; i++) {
if(bindAddresses[i]!=null){
SSDPNotifySocket ssdpNotifySocket = new SSDPNotifySocket(bindAddresses[i]);
add(ssdpNotifySocket);
}
}
return true;
}
public void close()
{
int nSockets = size();
for (int n=0; n<nSockets; n++) {
SSDPNotifySocket sock = getSSDPNotifySocket(n);
sock.close();
}
clear();
}
////////////////////////////////////////////////
// Methods
////////////////////////////////////////////////
public void start()
{
int nSockets = size();
for (int n=0; n<nSockets; n++) {
SSDPNotifySocket sock = getSSDPNotifySocket(n);
sock.start();
}
}
public void stop()
{
int nSockets = size();
for (int n=0; n<nSockets; n++) {
SSDPNotifySocket sock = getSSDPNotifySocket(n);
sock.stop();
}
}
}