/** * {@inheritDoc} */ @Override public UDPNIOServerConnection bind(SocketAddress socketAddress) throws IOException { return bind(socketAddress, 4096); }
@Override protected NIOTransport create(final String name) { return new UDPNIOTransport(name); } }
protected UDPNIOConnectorHandler(UDPNIOTransport transport) { super(transport); connectionTimeoutMillis = transport.getConnectionTimeout(); isReuseAddress = transport.isReuseAddress(); }
nioTransport.getSelectorProvider().openDatagramChannel(); nioTransport.getChannelConfigurator().preConfigure( nioTransport, datagramChannel); newConnection = nioTransport.obtainNIOConnection(datagramChannel); if (reuseAddr != nioTransport.isReuseAddress()) { socket.setReuseAddress(reuseAddr); nioTransport.getChannelConfigurator().postConfigure( nioTransport, datagramChannel); nioTransport.getNIOChannelDistributor();
UDPNIOServerConnection serverConnection = null; final Lock lock = udpTransport.getState().getStateLocker().writeLock(); lock.lock(); try { udpTransport.getChannelConfigurator().preConfigure(transport, serverDatagramChannel); udpTransport.getChannelConfigurator().postConfigure(transport, serverDatagramChannel); serverConnection = udpTransport.obtainServerNIOConnection(serverDatagramChannel); serverConnection.setProcessor(getProcessor()); serverConnection.setProcessorSelector(getProcessorSelector()); udpTransport.serverConnections.add(serverConnection); if (!udpTransport.isStopped()) { serverConnection.register();
/** * {@inheritDoc} */ @Override public Writer getWriter(final boolean isBlocking) { if (isBlocking) { return getTemporarySelectorIO().getWriter(); } else { return getAsyncQueueIO().getWriter(); } }
@Override public void postConfigure(final NIOTransport transport, final SelectableChannel channel) throws IOException { final UDPNIOTransport udpNioTransport = (UDPNIOTransport) transport; final DatagramChannel datagramChannel = (DatagramChannel) channel; final DatagramSocket datagramSocket = datagramChannel.socket(); final boolean isConnected = datagramChannel.isConnected(); final int soTimeout = isConnected ? udpNioTransport.getClientSocketSoTimeout() : udpNioTransport.getServerSocketSoTimeout(); try { datagramSocket.setSoTimeout(soTimeout); } catch (IOException e) { LOGGER.log(Level.WARNING, LogMessages.WARNING_GRIZZLY_SOCKET_TIMEOUT_EXCEPTION(soTimeout), e); } } }
UDPNIOConnection obtainNIOConnection(DatagramChannel channel) { UDPNIOConnection connection = new UDPNIOConnection(this, channel); configureNIOConnection(connection); return connection; }
@Override public Processor getProcessor() { return UDPNIOTransport.this.getProcessor(); }
@Override public void completed(RegisterChannelResult result) { final UDPNIOTransport transport = (UDPNIOTransport) UDPNIOConnectorHandler.this.transport; transport.registerChannelCompletionHandler.completed(result); try { connection.onConnect(); } catch (Exception e) { abortConnection(connection, completionHandler, e); // LOGGER.log(Level.FINE, "Exception happened, when " // + "trying to connect the channel", e); } if (connection.notifyReady()) { transport.fireIOEvent(IOEvent.CONNECTED, connection, new EnableReadHandler(completionHandler)); } }
nioTransport.getSelectorProvider().openDatagramChannel(); nioTransport.getChannelConfigurator().preConfigure( nioTransport, datagramChannel); newConnection = nioTransport.obtainNIOConnection(datagramChannel); if (reuseAddr != nioTransport.isReuseAddress()) { socket.setReuseAddress(reuseAddr); nioTransport.getChannelConfigurator().postConfigure( nioTransport, datagramChannel); nioTransport.getNIOChannelDistributor();
UDPNIOServerConnection serverConnection = null; final Lock lock = udpTransport.getState().getStateLocker().writeLock(); lock.lock(); try { udpTransport.getChannelConfigurator().preConfigure(transport, serverDatagramChannel); udpTransport.getChannelConfigurator().postConfigure(transport, serverDatagramChannel); serverConnection = udpTransport.obtainServerNIOConnection(serverDatagramChannel); serverConnection.setProcessor(getProcessor()); serverConnection.setProcessorSelector(getProcessorSelector()); udpTransport.serverConnections.add(serverConnection); if (!udpTransport.isStopped()) { serverConnection.register();
/** * {@inheritDoc} */ @Override public Reader getReader(final boolean isBlocking) { if (isBlocking) { return getTemporarySelectorIO().getReader(); } else { return getAsyncQueueIO().getReader(); } }
@Override public void postConfigure(final NIOTransport transport, final SelectableChannel channel) throws IOException { final UDPNIOTransport udpNioTransport = (UDPNIOTransport) transport; final DatagramChannel datagramChannel = (DatagramChannel) channel; final DatagramSocket datagramSocket = datagramChannel.socket(); final boolean isConnected = datagramChannel.isConnected(); final int soTimeout = isConnected ? udpNioTransport.getClientSocketSoTimeout() : udpNioTransport.getServerSocketSoTimeout(); try { datagramSocket.setSoTimeout(soTimeout); } catch (IOException e) { LOGGER.log(Level.WARNING, LogMessages.WARNING_GRIZZLY_SOCKET_TIMEOUT_EXCEPTION(soTimeout), e); } } }
UDPNIOConnection obtainNIOConnection(DatagramChannel channel) { UDPNIOConnection connection = new UDPNIOConnection(this, channel); configureNIOConnection(connection); return connection; }
@Override public Processor getProcessor() { return UDPNIOTransport.this.getProcessor(); }
@Override public void completed(RegisterChannelResult result) { final UDPNIOTransport transport = (UDPNIOTransport) UDPNIOConnectorHandler.this.transport; transport.registerChannelCompletionHandler.completed(result); try { connection.onConnect(); } catch (Exception e) { abortConnection(connection, completionHandler, e); // LOGGER.log(Level.FINE, "Exception happened, when " // + "trying to connect the channel", e); } if (connection.notifyReady()) { transport.fireIOEvent(IOEvent.CONNECTED, connection, new EnableReadHandler(completionHandler)); } }
nioTransport.getSelectorProvider().openDatagramChannel(); nioTransport.getChannelConfigurator().preConfigure( nioTransport, datagramChannel); newConnection = nioTransport.obtainNIOConnection(datagramChannel); if (reuseAddr != nioTransport.isReuseAddress()) { socket.setReuseAddress(reuseAddr); nioTransport.getChannelConfigurator().postConfigure( nioTransport, datagramChannel); nioTransport.getNIOChannelDistributor();
UDPNIOServerConnection serverConnection = null; final Lock lock = udpTransport.getState().getStateLocker().writeLock(); lock.lock(); try { udpTransport.getChannelConfigurator().preConfigure(transport, serverDatagramChannel); udpTransport.getChannelConfigurator().postConfigure(transport, serverDatagramChannel); serverConnection = udpTransport.obtainServerNIOConnection(serverDatagramChannel); serverConnection.setProcessor(getProcessor()); serverConnection.setProcessorSelector(getProcessorSelector()); udpTransport.serverConnections.add(serverConnection); if (!udpTransport.isStopped()) { serverConnection.register();
/** * {@inheritDoc} */ @Override public Writer getWriter(final boolean isBlocking) { if (isBlocking) { return getTemporarySelectorIO().getWriter(); } else { return getAsyncQueueIO().getWriter(); } }