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.fireChannelBound;
19 import static org.jboss.netty.channel.Channels.fireChannelOpen;
20
21 import java.io.IOException;
22 import java.io.OutputStream;
23 import java.io.PushbackInputStream;
24 import java.net.Socket;
25
26 import org.jboss.netty.channel.Channel;
27 import org.jboss.netty.channel.ChannelException;
28 import org.jboss.netty.channel.ChannelFactory;
29 import org.jboss.netty.channel.ChannelPipeline;
30 import org.jboss.netty.channel.ChannelSink;
31
32
33
34
35
36
37
38
39
40 class OioAcceptedSocketChannel extends OioSocketChannel {
41
42 private final PushbackInputStream in;
43 private final OutputStream out;
44
45 OioAcceptedSocketChannel(
46 Channel parent,
47 ChannelFactory factory,
48 ChannelPipeline pipeline,
49 ChannelSink sink,
50 Socket socket) {
51
52 super(parent, factory, pipeline, sink, socket);
53
54 try {
55 in = new PushbackInputStream(socket.getInputStream(), 1);
56 } catch (IOException e) {
57 throw new ChannelException("Failed to obtain an InputStream.", e);
58 }
59 try {
60 out = socket.getOutputStream();
61 } catch (IOException e) {
62 throw new ChannelException("Failed to obtain an OutputStream.", e);
63 }
64
65 fireChannelOpen(this);
66 fireChannelBound(this, getLocalAddress());
67 }
68
69 @Override
70 PushbackInputStream getInputStream() {
71 return in;
72 }
73
74 @Override
75 OutputStream getOutputStream() {
76 return out;
77 }
78 }