1
2
3
4
5
6
7
8
9
10
11
12
13
14
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 }