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