public DatagramChannel newChannel(final ChannelPipeline pipeline) { return new NioDatagramChannel(this, pipeline, sink, sink.nextWorker(), family); }
/** * Block the given sourceToBlock address for the given multicastAddress * */ public ChannelFuture block(InetAddress multicastAddress, InetAddress sourceToBlock) { try { block(multicastAddress, NetworkInterface.getByInetAddress(getLocalAddress().getAddress()), sourceToBlock); } catch (SocketException e) { return failedFuture(this, e); } return succeededFuture(this); }
final NioDatagramChannel channel = (NioDatagramChannel) key.attachment(); ReceiveBufferSizePredictor predictor = channel.getConfig().getReceiveBufferSizePredictor(); final ChannelBufferFactory bufferFactory = channel.getConfig().getBufferFactory(); final DatagramChannel nioChannel = (DatagramChannel) key.channel(); final int predictedRecvBufSize = predictor.nextReceiveBufferSize();
public ChannelFuture joinGroup(InetAddress multicastAddress) { try { return joinGroup( multicastAddress, NetworkInterface.getByInetAddress(getLocalAddress().getAddress()), null); } catch (SocketException e) { return failedFuture(this, e); } }
public ChannelFuture leaveGroup(InetAddress multicastAddress) { try { return leaveGroup( multicastAddress, NetworkInterface.getByInetAddress(getLocalAddress().getAddress()), null); } catch (SocketException e) { return failedFuture(this, e); } }
final SocketAddress localAddress = channel.getLocalAddress(); final SocketAddress remoteAddress = channel.getRemoteAddress(); if (localAddress == null) { if (future != null) { channel.getDatagramChannel().register( selector, channel.getInternalInterestOps(), channel);
InetSocketAddress remoteAddress) { boolean bound = channel.isBound(); boolean connected = false; boolean workerStarted = false; channel.getDatagramChannel().connect(remoteAddress); connected = true; fireChannelBound(channel, channel.getLocalAddress()); fireChannelConnected(channel, channel.getRemoteAddress());
private static void close(NioDatagramChannel channel, ChannelFuture future) { try { channel.getDatagramChannel().socket().close(); if (channel.setClosed()) { future.setSuccess(); if (channel.isBound()) { fireChannelUnbound(channel); } fireChannelClosed(channel); } else { future.setSuccess(); } } catch (final Throwable t) { future.setFailure(t); fireExceptionCaught(channel, t); } }
final SocketAddress localAddress = channel.getLocalAddress(); if (localAddress == null) { if (future != null) { channel.getDatagramChannel().register( selector, channel.getInternalInterestOps(), channel);
InetSocketAddress remoteAddress) { boolean bound = channel.isBound(); boolean connected = false; boolean workerStarted = false; channel.getDatagramChannel().connect(remoteAddress); connected = true; fireChannelBound(channel, channel.getLocalAddress());
static void disconnect(NioDatagramChannel channel, ChannelFuture future) { boolean connected = channel.isConnected(); boolean iothread = isIoThread(channel); try { channel.getDatagramChannel().disconnect(); future.setSuccess(); if (connected) { if (iothread) { fireChannelDisconnected(channel); } else { fireChannelDisconnectedLater(channel); } } } catch (Throwable t) { future.setFailure(t); if (iothread) { fireExceptionCaught(channel, t); } else { fireExceptionCaughtLater(channel, t); } } }
/** * Will bind the DatagramSocket to the passed-in address. * Every call bind will spawn a new thread using the that basically in turn */ private static void bind(final NioDatagramChannel channel, final ChannelFuture future, final InetSocketAddress address) { boolean bound = false; boolean started = false; try { // First bind the DatagramSocket the specified port. channel.getDatagramChannel().socket().bind(address); bound = true; future.setSuccess(); fireChannelBound(channel, address); channel.worker.register(channel, null); started = true; } catch (final Throwable t) { future.setFailure(t); fireExceptionCaught(channel, t); } finally { if (!started && bound) { close(channel, future); } } }
@Override public ChannelFuture write(Object message, SocketAddress remoteAddress) { if (remoteAddress == null || remoteAddress.equals(getRemoteAddress())) { return super.write(message, null); } else { return super.write(message, remoteAddress); } } }
public boolean isBound() { return isOpen() && channel.socket().isBound(); }
final SocketAddress localAddress = channel.getLocalAddress(); final SocketAddress remoteAddress = channel.getRemoteAddress(); if (localAddress == null) { if (future != null) { channel.getDatagramChannel().register( selector, channel.getInternalInterestOps(), new UdpReadDispatcher(channel));
private static void close(NioDatagramChannel channel, ChannelFuture future) { try { channel.getDatagramChannel().socket().close(); if (channel.setClosed()) { future.setSuccess(); if (channel.isBound()) { fireChannelUnbound(channel); } fireChannelClosed(channel); } else { future.setSuccess(); } } catch (final Throwable t) { future.setFailure(t); fireExceptionCaught(channel, t); } }
public ChannelFuture joinGroup(InetAddress multicastAddress) { try { return joinGroup( multicastAddress, NetworkInterface.getByInetAddress(getLocalAddress().getAddress()), null); } catch (SocketException e) { return failedFuture(this, e); } }
public ChannelFuture leaveGroup(InetAddress multicastAddress) { try { return leaveGroup( multicastAddress, NetworkInterface.getByInetAddress(getLocalAddress().getAddress()), null); } catch (SocketException e) { return failedFuture(this, e); } }
static void disconnect(NioDatagramChannel channel, ChannelFuture future) { boolean connected = channel.isConnected(); boolean iothread = isIoThread(channel); try { channel.getDatagramChannel().disconnect(); future.setSuccess(); if (connected) { if (iothread) { fireChannelDisconnected(channel); } else { fireChannelDisconnectedLater(channel); } } } catch (Throwable t) { future.setFailure(t); if (iothread) { fireExceptionCaught(channel, t); } else { fireExceptionCaughtLater(channel, t); } } }
final DatagramChannel ch = ((NioDatagramChannel) channel).getDatagramChannel(); final WriteRequestQueue writeBuffer = channel.writeBufferQueue; final int writeSpinCount = channel.getConfig().getWriteSpinCount();