View Javadoc

    1   /***
    2    *
    3    * Copyright 2004 Hiram Chirino
    4    *
    5    * Licensed under the Apache License, Version 2.0 (the "License");
    6    * you may not use this file except in compliance with the License.
    7    * You may obtain a copy of the License at
    8    *
    9    * http://www.apache.org/licenses/LICENSE-2.0
    10   *
    11   * Unless required by applicable law or agreed to in writing, software
    12   * distributed under the License is distributed on an "AS IS" BASIS,
    13   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    14   * See the License for the specific language governing permissions and
    15   * limitations under the License.
    16   *
    17   **/
    18
    19  package org.activeio.net;
    20
    21  import java.io.IOException;
    22  import java.net.Socket;
    23  import java.net.URI;
    24  import java.nio.channels.ServerSocketChannel;
    25
    26  import org.activeio.Channel;
    27  import org.activeio.SynchChannel;
    28  import org.activeio.filter.WriteBufferedSynchChannel;
    29  import org.activeio.packet.ByteBufferPacket;
    30
    31  /***
    32   * A SynchChannelServer that creates
    33   * {@see org.activeio.net.TcpSynchChannel}objects from accepted
    34   * tcp socket connections.
    35   *
    36   * @version $Revision$
    37   */
    38  public class NIOSynchChannelServer extends SocketSynchChannelServer {
    39
    40      private final boolean createWriteBufferedChannels;
    41  	private final boolean useDirectBuffers;
    42
    43      public NIOSynchChannelServer(ServerSocketChannel socketChannel, URI bindURI, URI connectURI, boolean createWriteBufferedChannels, boolean useDirectBuffers) {
    44          super(socketChannel.socket(), bindURI, connectURI);
    45          this.createWriteBufferedChannels = createWriteBufferedChannels;
    46  		this.useDirectBuffers = useDirectBuffers;
    47      }
    48
    49      protected Channel createChannel(Socket socket) throws IOException {
    50          SynchChannel channel = new NIOSynchChannel(socket.getChannel());
    51          if( createWriteBufferedChannels ) {
    52              channel = new WriteBufferedSynchChannel(channel, ByteBufferPacket.createDefaultBuffer(useDirectBuffers));
    53          }
    54          return channel;
    55      }
    56  }