* Removed ChannelGroupFactory that causes memory leak
* Added the default constructor for DefaultChannelGroup
This commit is contained in:
parent
e8665ea867
commit
1896c90207
@ -1,65 +0,0 @@
|
|||||||
/*
|
|
||||||
* JBoss, Home of Professional Open Source
|
|
||||||
*
|
|
||||||
* Copyright 2008, Red Hat Middleware LLC, and individual contributors
|
|
||||||
* by the @author tags. See the COPYRIGHT.txt in the distribution for a
|
|
||||||
* full listing of individual contributors.
|
|
||||||
*
|
|
||||||
* This is free software; you can redistribute it and/or modify it
|
|
||||||
* under the terms of the GNU Lesser General Public License as
|
|
||||||
* published by the Free Software Foundation; either version 2.1 of
|
|
||||||
* the License, or (at your option) any later version.
|
|
||||||
*
|
|
||||||
* This software is distributed in the hope that it will be useful,
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
||||||
* Lesser General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU Lesser General Public
|
|
||||||
* License along with this software; if not, write to the Free
|
|
||||||
* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
|
|
||||||
* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
|
|
||||||
*/
|
|
||||||
package org.jboss.netty.channel.group;
|
|
||||||
|
|
||||||
import java.util.concurrent.ConcurrentMap;
|
|
||||||
|
|
||||||
import org.jboss.netty.util.ConcurrentHashMap;
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author The Netty Project (netty-dev@lists.jboss.org)
|
|
||||||
* @author Trustin Lee (tlee@redhat.com)
|
|
||||||
* @version $Rev$, $Date$
|
|
||||||
*
|
|
||||||
* @apiviz.landmark
|
|
||||||
* @apiviz.has org.jboss.netty.channel.group.ChannelGroup oneway - - creates
|
|
||||||
*/
|
|
||||||
public class ChannelGroupFactory {
|
|
||||||
|
|
||||||
// FIXME: Memory leak - use ConcurrentWeakValueHashMap
|
|
||||||
private static final ConcurrentMap<String, ChannelGroup> groups =
|
|
||||||
new ConcurrentHashMap<String, ChannelGroup>();
|
|
||||||
|
|
||||||
public static ChannelGroup getGroup(Class<?> groupType) {
|
|
||||||
return getGroup(groupType.getName());
|
|
||||||
}
|
|
||||||
|
|
||||||
public static ChannelGroup getGroup(String groupName) {
|
|
||||||
ChannelGroup g = groups.get(groupName);
|
|
||||||
if (g != null) {
|
|
||||||
return g;
|
|
||||||
}
|
|
||||||
|
|
||||||
g = new DefaultChannelGroup(groupName);
|
|
||||||
ChannelGroup oldGroup = groups.putIfAbsent(groupName, g);
|
|
||||||
if (oldGroup != null) {
|
|
||||||
g = oldGroup;
|
|
||||||
}
|
|
||||||
return g;
|
|
||||||
}
|
|
||||||
|
|
||||||
private ChannelGroupFactory() {
|
|
||||||
super();
|
|
||||||
}
|
|
||||||
}
|
|
@ -31,6 +31,7 @@ import java.util.Iterator;
|
|||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
import java.util.concurrent.ConcurrentMap;
|
import java.util.concurrent.ConcurrentMap;
|
||||||
|
import java.util.concurrent.atomic.AtomicInteger;
|
||||||
|
|
||||||
import org.jboss.netty.channel.Channel;
|
import org.jboss.netty.channel.Channel;
|
||||||
import org.jboss.netty.channel.ChannelFuture;
|
import org.jboss.netty.channel.ChannelFuture;
|
||||||
@ -46,6 +47,8 @@ import org.jboss.netty.util.ConcurrentHashMap;
|
|||||||
*/
|
*/
|
||||||
public class DefaultChannelGroup extends AbstractSet<Channel> implements ChannelGroup {
|
public class DefaultChannelGroup extends AbstractSet<Channel> implements ChannelGroup {
|
||||||
|
|
||||||
|
private static final AtomicInteger nextId = new AtomicInteger();
|
||||||
|
|
||||||
private final String name;
|
private final String name;
|
||||||
private final ConcurrentMap<UUID, Channel> serverChannels = new ConcurrentHashMap<UUID, Channel>();
|
private final ConcurrentMap<UUID, Channel> serverChannels = new ConcurrentHashMap<UUID, Channel>();
|
||||||
private final ConcurrentMap<UUID, Channel> nonServerChannels = new ConcurrentHashMap<UUID, Channel>();
|
private final ConcurrentMap<UUID, Channel> nonServerChannels = new ConcurrentHashMap<UUID, Channel>();
|
||||||
@ -55,6 +58,10 @@ public class DefaultChannelGroup extends AbstractSet<Channel> implements Channel
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
public DefaultChannelGroup() {
|
||||||
|
this("group-0x" + Integer.toHexString(nextId.incrementAndGet()));
|
||||||
|
}
|
||||||
|
|
||||||
public DefaultChannelGroup(String name) {
|
public DefaultChannelGroup(String name) {
|
||||||
if (name == null) {
|
if (name == null) {
|
||||||
throw new NullPointerException("name");
|
throw new NullPointerException("name");
|
||||||
|
Loading…
x
Reference in New Issue
Block a user