/**
*
*/
package vnet.sms.gateway.nettysupport;
import static org.apache.commons.lang.Validate.notNull;
import java.util.Iterator;
import org.jboss.netty.channel.Channel;
import org.jboss.netty.channel.group.ChannelGroup;
/**
* @author obergner
*
*/
public class ChannelStatisticsGroup implements Iterable<ChannelStatistics> {
private final ChannelGroup channels;
/**
* @param channels
*/
public ChannelStatisticsGroup(final ChannelGroup channels) {
notNull(channels, "Argument 'channels' must not be null");
this.channels = channels;
}
/**
* @return
* @see org.jboss.netty.channel.group.ChannelGroup#getName()
*/
public String getName() {
return this.channels.getName();
}
/**
* @param id
* @return
* @see org.jboss.netty.channel.group.ChannelGroup#find(java.lang.Integer)
*/
public Channel find(final Integer id) {
return this.channels.find(id);
}
/**
* @return
* @see java.util.Set#isEmpty()
*/
public boolean isEmpty() {
return this.channels.isEmpty();
}
/**
* @return
* @see java.util.Set#iterator()
*/
@Override
public Iterator<ChannelStatistics> iterator() {
final Iterator<Channel> channelsIterator = this.channels.iterator();
final Iterator<ChannelStatistics> channelStatisticsIterator = new Iterator<ChannelStatistics>() {
@Override
public boolean hasNext() {
return channelsIterator.hasNext();
}
@Override
public ChannelStatistics next() {
return new ChannelPipelineBackedChannelStatistics(
channelsIterator.next());
}
@Override
public void remove() {
throw new UnsupportedOperationException(
"ChannelStatistics instances may not be removed");
}
};
return channelStatisticsIterator;
}
/**
* @return
* @see java.util.Set#size()
*/
public int size() {
return this.channels.size();
}
/**
* @return
* @see java.util.Set#hashCode()
*/
@Override
public int hashCode() {
return this.channels.hashCode();
}
/**
* @param o
* @return
* @see java.util.Set#equals(java.lang.Object)
*/
@Override
public boolean equals(final Object o) {
return this.channels.equals(o);
}
}