All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.barchart.udt.nio.ChannelServerSocketUDT Maven / Gradle / Ivy

/**
 * Copyright (C) 2009-2012 Barchart, Inc. 
 *
 * All rights reserved. Licensed under the OSI BSD License.
 *
 * http://www.opensource.org/licenses/bsd-license.php
 */
package com.barchart.udt.nio;

import java.io.IOException;
import java.net.ServerSocket;
import java.nio.channels.ServerSocketChannel;
import java.nio.channels.SocketChannel;
import java.nio.channels.spi.SelectorProvider;

import com.barchart.udt.SocketUDT;

/**
 * you must use {@link SelectorProviderUDT#openServerSocketChannel()} to obtain
 * instance of this class; do not use JDK
 * {@link java.nio.channels.ServerSocketChannel#open()}; 
* * example: * * [code] * * SelectorProvider provider = SelectorProviderUDT.DATAGRAM; * * ServerSocketChannel acceptorChannel = provider.openServerSocketChannel(); * * ServerSocket acceptorSocket = acceptorChannel.socket(); * * InetSocketAddress acceptorAddress= new InetSocketAddress("localhost", 12345); * * acceptorSocket.bind(acceptorAddress); * * assert acceptorSocket.isBound(); * * SocketChannel connectorChannel = acceptorChannel.accept(); * * assert connectorChannel.isConnected(); * * [/code] */ public class ChannelServerSocketUDT extends ServerSocketChannel implements ChannelUDT { final SocketUDT serverSocketUDT; ChannelServerSocketUDT(SelectorProvider provider, SocketUDT socketUDT) { super(provider); this.serverSocketUDT = socketUDT; } @Override protected void implCloseSelectableChannel() throws IOException { serverSocketUDT.close(); } @Override protected void implConfigureBlocking(boolean block) throws IOException { serverSocketUDT.configureBlocking(block); } @Override public SocketChannel accept() throws IOException { try { begin(); SocketUDT socketUDT = serverSocketUDT.accept(); SelectorProvider provider = provider(); return new ChannelSocketUDT(provider, socketUDT); } finally { end(true); } } // guarded by 'this' private ServerSocket serverSocketAdapter; @Override public ServerSocket socket() { synchronized (this) { if (serverSocketAdapter == null) { try { serverSocketAdapter = new AdapterServerSocketUDT(this, serverSocketUDT); } catch (IOException e) { return null; } } return serverSocketAdapter; } } @Override public SocketUDT getSocketUDT() { return serverSocketUDT; } @Override public KindUDT getChannelKind() { return KindUDT.ACCEPTOR; } @Override public boolean isOpenSocketUDT() { return serverSocketUDT.isOpen(); } // @Override public String toString() { return serverSocketUDT.toString(); } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy