Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(4)

Side by Side Diff: tests/standalone/src/EchoServerStreamTest.dart

Issue 8437090: Change the handling of closing sockets (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Addressed review comments by ager@ Created 9 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « runtime/bin/socket_stream.dart ('k') | tests/standalone/src/EchoServerTest.dart » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 // 4 //
5 // Echo server test program to test socket streams. 5 // Echo server test program to test socket streams.
6 // 6 //
7 // VMOptions= 7 // VMOptions=
8 // VMOptions=--short_socket_read 8 // VMOptions=--short_socket_read
9 // VMOptions=--short_socket_write 9 // VMOptions=--short_socket_write
10 // VMOptions=--short_socket_read --short_socket_write 10 // VMOptions=--short_socket_read --short_socket_write
11 11
12 class EchoServerStreamTest { 12 class EchoServerStreamTest {
13 13
14 static void testMain() { 14 static void testMain() {
15 EchoServerGame echoServerGame = new EchoServerGame.start(); 15 EchoServerGame echoServerGame = new EchoServerGame.start();
16 } 16 }
17 } 17 }
18 18
19 class EchoServerGame { 19 class EchoServerGame {
20 20
21 static final MSGSIZE = 10; 21 static final MSGSIZE = 10;
22 static final SERVERINIT = 0; 22 static final SERVERINIT = 0;
23 static final SERVERSHUTDOWN = -1; 23 static final SERVERSHUTDOWN = -1;
24 static final MESSAGES = 200; 24 static final MESSAGES = 100;
25 static final FIRSTCHAR = 65; 25 static final FIRSTCHAR = 65;
26 26
27 EchoServerGame.start() 27 EchoServerGame.start()
28 : _receivePort = new ReceivePort(), 28 : _receivePort = new ReceivePort(),
29 _sendPort = null, 29 _sendPort = null,
30 _buffer = new List<int>(MSGSIZE), 30 _buffer = new List<int>(MSGSIZE),
31 _messages = 0 { 31 _messages = 0 {
32 for (int i = 0; i < MSGSIZE; i++) { 32 for (int i = 0; i < MSGSIZE; i++) {
33 _buffer[i] = FIRSTCHAR + i; 33 _buffer[i] = FIRSTCHAR + i;
34 } 34 }
35 new EchoServer().spawn().then((SendPort port) { 35 new EchoServer().spawn().then((SendPort port) {
36 _sendPort = port; 36 _sendPort = port;
37 start(); 37 start();
38 }); 38 });
39 } 39 }
40 40
41 void sendData() { 41 void sendData() {
42 42
43 void closeHandler() { 43 void closeHandler() {
44 _socket.close(); 44 _socket.close();
45 } 45 }
46 46
47 void errorHandler() { 47 void errorHandler() {
48 print("Socket error"); 48 Expect.fail("Socket error");
49 _socket.close();
50 } 49 }
51 50
52 void connectHandler() { 51 void connectHandler() {
53 52
54 SocketOutputStream stream = _socket.outputStream; 53 SocketOutputStream stream = _socket.outputStream;
55 54
56 void dataSent() { 55 void dataSent() {
57 InputStream inputStream = _socket.inputStream; 56 InputStream inputStream = _socket.inputStream;
58 int offset = 0; 57 int offset = 0;
59 List<int> data; 58 List<int> data;
(...skipping 26 matching lines...) Expand all
86 } 85 }
87 } 86 }
88 87
89 if (_messages % 2 == 0) data = new List<int>(MSGSIZE); 88 if (_messages % 2 == 0) data = new List<int>(MSGSIZE);
90 inputStream.dataHandler = dataReceived; 89 inputStream.dataHandler = dataReceived;
91 } 90 }
92 91
93 _socket.closeHandler = closeHandler; 92 _socket.closeHandler = closeHandler;
94 _socket.errorHandler = errorHandler; 93 _socket.errorHandler = errorHandler;
95 stream.write(_buffer); 94 stream.write(_buffer);
95 stream.close();
96 dataSent(); 96 dataSent();
97 } 97 }
98 98
99 _socket = new Socket(EchoServer.HOST, _port); 99 _socket = new Socket(EchoServer.HOST, _port);
100 if (_socket !== null) { 100 if (_socket !== null) {
101 _socket.connectHandler = connectHandler; 101 _socket.connectHandler = connectHandler;
102 } else { 102 } else {
103 Expect.fail("socket creation failed"); 103 Expect.fail("socket creation failed");
104 } 104 }
105 } 105 }
(...skipping 26 matching lines...) Expand all
132 132
133 void main() { 133 void main() {
134 134
135 void connectionHandler() { 135 void connectionHandler() {
136 Socket _client; 136 Socket _client;
137 InputStream inputStream; 137 InputStream inputStream;
138 List<int> buffer = new List<int>(MSGSIZE); 138 List<int> buffer = new List<int>(MSGSIZE);
139 int offset = 0; 139 int offset = 0;
140 140
141 void dataReceived() { 141 void dataReceived() {
142 SocketOutputStream outputStream = _client.outputStream; 142 SocketOutputStream outputStream;
143 int bytesRead = inputStream.readInto(buffer, offset, MSGSIZE - offset); 143 int bytesRead;
144 outputStream = _client.outputStream;
145 bytesRead = inputStream.readInto(buffer, offset, MSGSIZE - offset);
144 if (bytesRead > 0) { 146 if (bytesRead > 0) {
145 offset += bytesRead; 147 offset += bytesRead;
146 for (int i = 0; i < offset; i++) { 148 for (int i = 0; i < offset; i++) {
147 Expect.equals(EchoServerGame.FIRSTCHAR + i, buffer[i]); 149 Expect.equals(EchoServerGame.FIRSTCHAR + i, buffer[i]);
148 } 150 }
149 if (offset == MSGSIZE) { 151 if (offset == MSGSIZE) {
150 outputStream.write(buffer); 152 outputStream.write(buffer);
153 outputStream.close();
151 } 154 }
152 } 155 }
153 } 156 }
154 157
155 void closeHandler() {
156 _client.close();
157 }
158
159 void errorHandler() { 158 void errorHandler() {
160 print("Socket error"); 159 Expect.fail("Socket error");
161 _client.close();
162 } 160 }
163 161
164 _client = _server.accept(); 162 _client = _server.accept();
165 inputStream = _client.inputStream; 163 inputStream = _client.inputStream;
166 inputStream.dataHandler = dataReceived; 164 inputStream.dataHandler = dataReceived;
167 _client.closeHandler = closeHandler;
168 _client.errorHandler = errorHandler; 165 _client.errorHandler = errorHandler;
169 } 166 }
170 167
171 void errorHandlerServer() { 168 void errorHandlerServer() {
172 print("Server socket error"); 169 Expect.fail("Server socket error");
173 _server.close();
174 } 170 }
175 171
176 this.port.receive((message, SendPort replyTo) { 172 this.port.receive((message, SendPort replyTo) {
177 if (message == EchoServerGame.SERVERINIT) { 173 if (message == EchoServerGame.SERVERINIT) {
178 _server = new ServerSocket(HOST, 0, 10); 174 _server = new ServerSocket(HOST, 0, 10);
179 Expect.equals(true, _server !== null); 175 Expect.equals(true, _server !== null);
180 _server.connectionHandler = connectionHandler; 176 _server.connectionHandler = connectionHandler;
181 _server.errorHandler = errorHandlerServer; 177 _server.errorHandler = errorHandlerServer;
182 replyTo.send(_server.port, null); 178 replyTo.send(_server.port, null);
183 } else if (message == EchoServerGame.SERVERSHUTDOWN) { 179 } else if (message == EchoServerGame.SERVERSHUTDOWN) {
184 _server.close(); 180 _server.close();
185 this.port.close(); 181 this.port.close();
186 } 182 }
187 }); 183 });
188 } 184 }
189 185
190 ServerSocket _server; 186 ServerSocket _server;
191 } 187 }
192 188
193 main() { 189 main() {
194 EchoServerStreamTest.testMain(); 190 EchoServerStreamTest.testMain();
195 } 191 }
OLDNEW
« no previous file with comments | « runtime/bin/socket_stream.dart ('k') | tests/standalone/src/EchoServerTest.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698