类java.nio.channels.MembershipKey源码实例Demo

下面列出了怎么用java.nio.channels.MembershipKey的API类实例代码及写法,或者点击链接到github查看源代码。

源代码1 项目: Bytecoder   文件: MembershipKeyImpl.java
@Override
public MembershipKey block(InetAddress toBlock)
    throws IOException
{
    if (source != null)
        throw new IllegalStateException("key is source-specific");

    synchronized (stateLock) {
        if ((blockedSet != null) && blockedSet.contains(toBlock)) {
            // already blocked, nothing to do
            return this;
        }

        ((DatagramChannelImpl)ch).block(this, toBlock);

        // created blocked set if required and add source address
        if (blockedSet == null)
            blockedSet = new HashSet<>();
        blockedSet.add(toBlock);
    }
    return this;
}
 
源代码2 项目: netty-4.1.22   文件: NioDatagramChannel.java
@Override
public ChannelFuture leaveGroup(
        InetAddress multicastAddress, NetworkInterface networkInterface, InetAddress source,
        ChannelPromise promise) {
    checkJavaVersion();

    if (multicastAddress == null) {
        throw new NullPointerException("multicastAddress");
    }
    if (networkInterface == null) {
        throw new NullPointerException("networkInterface");
    }

    synchronized (this) {
        if (memberships != null) {
            List<MembershipKey> keys = memberships.get(multicastAddress);
            if (keys != null) {
                Iterator<MembershipKey> keyIt = keys.iterator();

                while (keyIt.hasNext()) {
                    MembershipKey key = keyIt.next();
                    if (networkInterface.equals(key.networkInterface())) {
                       if (source == null && key.sourceAddress() == null ||
                           source != null && source.equals(key.sourceAddress())) {
                           key.drop();
                           keyIt.remove();
                       }
                    }
                }
                if (keys.isEmpty()) {
                    memberships.remove(multicastAddress);
                }
            }
        }
    }

    promise.setSuccess();
    return promise;
}
 
源代码3 项目: netty-4.1.22   文件: NioDatagramChannel.java
/**
 * Block the given sourceToBlock address for the given multicastAddress on the given networkInterface
 */
@Override
public ChannelFuture block(
        InetAddress multicastAddress, NetworkInterface networkInterface,
        InetAddress sourceToBlock, ChannelPromise promise) {
    checkJavaVersion();

    if (multicastAddress == null) {
        throw new NullPointerException("multicastAddress");
    }
    if (sourceToBlock == null) {
        throw new NullPointerException("sourceToBlock");
    }

    if (networkInterface == null) {
        throw new NullPointerException("networkInterface");
    }
    synchronized (this) {
        if (memberships != null) {
            List<MembershipKey> keys = memberships.get(multicastAddress);
            for (MembershipKey key: keys) {
                if (networkInterface.equals(key.networkInterface())) {
                    try {
                        key.block(sourceToBlock);
                    } catch (IOException e) {
                        promise.setFailure(e);
                    }
                }
            }
        }
    }
    promise.setSuccess();
    return promise;
}
 
源代码4 项目: Bytecoder   文件: MembershipRegistry.java
/**
 * Checks registry for membership of the group on the given
 * network interface.
 */
MembershipKey checkMembership(InetAddress group, NetworkInterface interf,
                              InetAddress source)
{
    if (groups != null) {
        List<MembershipKeyImpl> keys = groups.get(group);
        if (keys != null) {
            for (MembershipKeyImpl key: keys) {
                if (key.networkInterface().equals(interf)) {
                    // already a member to receive all packets so return
                    // existing key or detect conflict
                    if (source == null) {
                        if (key.sourceAddress() == null)
                            return key;
                        throw new IllegalStateException("Already a member to receive all packets");
                    }

                    // already have source-specific membership so return key
                    // or detect conflict
                    if (key.sourceAddress() == null)
                        throw new IllegalStateException("Already have source-specific membership");
                    if (source.equals(key.sourceAddress()))
                        return key;
                }
            }
        }
    }
    return null;
}
 
源代码5 项目: Bytecoder   文件: DatagramChannelImpl.java
@Override
public MembershipKey join(InetAddress group,
                          NetworkInterface interf)
    throws IOException
{
    return innerJoin(group, interf, null);
}
 
源代码6 项目: Bytecoder   文件: DatagramChannelImpl.java
@Override
public MembershipKey join(InetAddress group,
                          NetworkInterface interf,
                          InetAddress source)
    throws IOException
{
    Objects.requireNonNull(source);
    return innerJoin(group, interf, source);
}
 
源代码7 项目: Bytecoder   文件: MembershipKeyImpl.java
@Override
public MembershipKey unblock(InetAddress toUnblock) {
    synchronized (stateLock) {
        if ((blockedSet == null) || !blockedSet.contains(toUnblock))
            throw new IllegalStateException("not blocked");

        ((DatagramChannelImpl)ch).unblock(this, toUnblock);

        blockedSet.remove(toUnblock);
    }
    return this;
}
 
源代码8 项目: netty4.0.27Learn   文件: NioDatagramChannel.java
@Override
public ChannelFuture leaveGroup(
        InetAddress multicastAddress, NetworkInterface networkInterface, InetAddress source,
        ChannelPromise promise) {
    checkJavaVersion();

    if (multicastAddress == null) {
        throw new NullPointerException("multicastAddress");
    }
    if (networkInterface == null) {
        throw new NullPointerException("networkInterface");
    }

    synchronized (this) {
        if (memberships != null) {
            List<MembershipKey> keys = memberships.get(multicastAddress);
            if (keys != null) {
                Iterator<MembershipKey> keyIt = keys.iterator();

                while (keyIt.hasNext()) {
                    MembershipKey key = keyIt.next();
                    if (networkInterface.equals(key.networkInterface())) {
                       if (source == null && key.sourceAddress() == null ||
                           source != null && source.equals(key.sourceAddress())) {
                           key.drop();
                           keyIt.remove();
                       }
                    }
                }
                if (keys.isEmpty()) {
                    memberships.remove(multicastAddress);
                }
            }
        }
    }

    promise.setSuccess();
    return promise;
}
 
源代码9 项目: netty4.0.27Learn   文件: NioDatagramChannel.java
/**
 * Block the given sourceToBlock address for the given multicastAddress on the given networkInterface
 */
@Override
public ChannelFuture block(
        InetAddress multicastAddress, NetworkInterface networkInterface,
        InetAddress sourceToBlock, ChannelPromise promise) {
    checkJavaVersion();

    if (multicastAddress == null) {
        throw new NullPointerException("multicastAddress");
    }
    if (sourceToBlock == null) {
        throw new NullPointerException("sourceToBlock");
    }

    if (networkInterface == null) {
        throw new NullPointerException("networkInterface");
    }
    synchronized (this) {
        if (memberships != null) {
            List<MembershipKey> keys = memberships.get(multicastAddress);
            for (MembershipKey key: keys) {
                if (networkInterface.equals(key.networkInterface())) {
                    try {
                        key.block(sourceToBlock);
                    } catch (IOException e) {
                        promise.setFailure(e);
                    }
                }
            }
        }
    }
    promise.setSuccess();
    return promise;
}
 
源代码10 项目: netty-4.1.22   文件: NioDatagramChannel.java
@Override
public ChannelFuture joinGroup(
        InetAddress multicastAddress, NetworkInterface networkInterface,
        InetAddress source, ChannelPromise promise) {

    checkJavaVersion();

    if (multicastAddress == null) {
        throw new NullPointerException("multicastAddress");
    }

    if (networkInterface == null) {
        throw new NullPointerException("networkInterface");
    }

    try {
        MembershipKey key;
        if (source == null) {
            key = javaChannel().join(multicastAddress, networkInterface);
        } else {
            key = javaChannel().join(multicastAddress, networkInterface, source);
        }

        synchronized (this) {
            List<MembershipKey> keys = null;
            if (memberships == null) {
                memberships = new HashMap<InetAddress, List<MembershipKey>>();
            } else {
                keys = memberships.get(multicastAddress);
            }
            if (keys == null) {
                keys = new ArrayList<MembershipKey>();
                memberships.put(multicastAddress, keys);
            }
            keys.add(key);
        }

        promise.setSuccess();
    } catch (Throwable e) {
        promise.setFailure(e);
    }

    return promise;
}
 
源代码11 项目: netty4.0.27Learn   文件: NioDatagramChannel.java
@Override
public ChannelFuture joinGroup(
        InetAddress multicastAddress, NetworkInterface networkInterface,
        InetAddress source, ChannelPromise promise) {

    checkJavaVersion();

    if (multicastAddress == null) {
        throw new NullPointerException("multicastAddress");
    }

    if (networkInterface == null) {
        throw new NullPointerException("networkInterface");
    }

    try {
        MembershipKey key;
        if (source == null) {
            key = javaChannel().join(multicastAddress, networkInterface);
        } else {
            key = javaChannel().join(multicastAddress, networkInterface, source);
        }

        synchronized (this) {
            List<MembershipKey> keys = null;
            if (memberships == null) {
                memberships = new HashMap<InetAddress, List<MembershipKey>>();
            } else {
                keys = memberships.get(multicastAddress);
            }
            if (keys == null) {
                keys = new ArrayList<MembershipKey>();
                memberships.put(multicastAddress, keys);
            }
            keys.add(key);
        }

        promise.setSuccess();
    } catch (Throwable e) {
        promise.setFailure(e);
    }

    return promise;
}
 
@Override
public MembershipKey join(InetAddress inetAddress, NetworkInterface networkInterface) throws IOException {
    return channel.join(inetAddress, networkInterface);
}
 
@Override
public MembershipKey join(InetAddress inetAddress, NetworkInterface networkInterface, InetAddress inetAddress1) throws IOException {
    return channel.join(inetAddress, networkInterface, inetAddress1);
}
 
源代码14 项目: jmeter-plugins   文件: DatagramChannelEmul.java
@Override
public MembershipKey join(InetAddress inetAddress, NetworkInterface networkInterface) throws IOException {
    throw new UnsupportedOperationException("Not supported yet.");
}
 
源代码15 项目: jmeter-plugins   文件: DatagramChannelEmul.java
@Override
public MembershipKey join(InetAddress inetAddress, NetworkInterface networkInterface, InetAddress inetAddress1) throws IOException {
    throw new UnsupportedOperationException("Not supported yet.");
}