Package com.barchart.udt.nio

Source Code of com.barchart.udt.nio.SelectorProviderUDT

/**
* Copyright (C) 2009-2012 Barchart, Inc. <http://www.barchart.com/>
*
* 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.nio.channels.DatagramChannel;
import java.nio.channels.Pipe;
import java.nio.channels.ServerSocketChannel;
import java.nio.channels.SocketChannel;
import java.nio.channels.spi.AbstractSelector;
import java.nio.channels.spi.SelectorProvider;

import com.barchart.udt.SocketUDT;
import com.barchart.udt.TypeUDT;

/**
* you must use the same system-wide provider instance for the same
* {@link TypeUDT} of UDT channels and UDT selectors;
*/
public class SelectorProviderUDT extends SelectorProvider {

  /**
   * system-wide provider instance, for {@link TypeUDT#DATAGRAM} UDT sockets
   */
  public static final SelectorProviderUDT DATAGRAM = //
  new SelectorProviderUDT(TypeUDT.DATAGRAM);

  /**
   * system-wide provider instance, for {@link TypeUDT#STREAM} UDT sockets
   */
  public static final SelectorProviderUDT STREAM = //
  new SelectorProviderUDT(TypeUDT.STREAM);

  /**
   * {@link TypeUDT} of UDT sockets generated by this provider
   */
  public final TypeUDT type;

  protected SelectorProviderUDT(TypeUDT type) {
    this.type = type;
  }

  protected volatile int acceptQueueSize = SocketUDT.DEFAULT_ACCEPT_QUEUE_SIZE;

  public int getAcceptQueueSize() {
    return acceptQueueSize;
  }

  public void setAcceptQueueSize(int queueSize) {
    acceptQueueSize = queueSize;
  }

  protected volatile int maxSelectorSize = SocketUDT.DEFAULT_MAX_SELECTOR_SIZE;

  public int getMaxSelectorSize() {
    return maxSelectorSize;
  }

  public void setMaxSelectorSize(int selectorSize) {
    maxSelectorSize = selectorSize;
  }

  protected volatile int maxConnectorSize = SocketUDT.DEFAULT_CONNECTOR_POOL_SIZE;

  public int getMaxConnectorSize() {
    return maxConnectorSize;
  }

  public void setMaxConnectorSize(int connectorSize) {
    maxConnectorSize = connectorSize;
  }

  //

  /**
   * feature not available
   */
  @Override
  public DatagramChannel openDatagramChannel() throws IOException {
    throw new RuntimeException("feature not available");
  }

  /**
   * feature not available
   */
  @Override
  public Pipe openPipe() throws IOException {
    throw new RuntimeException("feature not available");
  }

  @Override
  public AbstractSelector openSelector() throws IOException {
    return new SelectorUDT(this, maxSelectorSize, maxConnectorSize);
  }

  @Override
  public ServerSocketChannel openServerSocketChannel() throws IOException {
    SocketUDT serverSocketUDT = new SocketUDT(type);
    return new ChannelServerSocketUDT(this, serverSocketUDT);
  }

  @Override
  public SocketChannel openSocketChannel() throws IOException {
    SocketUDT socketUDT = new SocketUDT(type);
    return new ChannelSocketUDT(this, socketUDT);
  }

}
TOP

Related Classes of com.barchart.udt.nio.SelectorProviderUDT

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.