View Javadoc

    1   /*
    2    * Copyright 2012 The Netty Project
    3    *
    4    * The Netty Project licenses this file to you under the Apache License,
    5    * version 2.0 (the "License"); you may not use this file except in compliance
    6    * with the License. You may obtain a copy of the License at:
    7    *
    8    *   http://www.apache.org/licenses/LICENSE-2.0
    9    *
    10   * Unless required by applicable law or agreed to in writing, software
    11   * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
    12   * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
    13   * License for the specific language governing permissions and limitations
    14   * under the License.
    15   */
    16  package org.jboss.netty.channel.socket.oio;
    17
    18  import static org.jboss.netty.channel.Channels.*;
    19
    20  import java.io.IOException;
    21  import java.io.OutputStream;
    22  import java.io.PushbackInputStream;
    23  import java.net.Socket;
    24
    25  import org.jboss.netty.channel.Channel;
    26  import org.jboss.netty.channel.ChannelException;
    27  import org.jboss.netty.channel.ChannelFactory;
    28  import org.jboss.netty.channel.ChannelPipeline;
    29  import org.jboss.netty.channel.ChannelSink;
    30
    31  class OioAcceptedSocketChannel extends OioSocketChannel {
    32
    33      private final PushbackInputStream in;
    34      private final OutputStream out;
    35
    36      OioAcceptedSocketChannel(
    37              Channel parent,
    38              ChannelFactory factory,
    39              ChannelPipeline pipeline,
    40              ChannelSink sink,
    41              Socket socket) {
    42
    43          super(parent, factory, pipeline, sink, socket);
    44
    45          try {
    46              in = new PushbackInputStream(socket.getInputStream(), 1);
    47          } catch (IOException e) {
    48              throw new ChannelException("Failed to obtain an InputStream.", e);
    49          }
    50          try {
    51              out = socket.getOutputStream();
    52          } catch (IOException e) {
    53              throw new ChannelException("Failed to obtain an OutputStream.", e);
    54          }
    55
    56          fireChannelOpen(this);
    57          fireChannelBound(this, getLocalAddress());
    58      }
    59
    60      @Override
    61      PushbackInputStream getInputStream() {
    62          return in;
    63      }
    64
    65      @Override
    66      OutputStream getOutputStream() {
    67          return out;
    68      }
    69  }