1--TEST--
2Testing stream_get_meta_data() "unread_bytes" field on a udp socket
3--FILE--
4<?php
5
6/* Setup socket server */
7$server = stream_socket_server('tcp://127.0.0.1:31337');
8
9/* Connect to it */
10$client = fsockopen('tcp://127.0.0.1:31337');
11if (!$client) {
12	die("Unable to create socket");
13}
14
15/* Accept that connection */
16$socket = stream_socket_accept($server);
17
18echo "Write some data:\n";
19fwrite($socket, "abcdefg\n1234567\nxyzxyz\n");
20var_dump(stream_get_meta_data($client));
21
22echo "\n\nRead a line from the client, causing data to be buffered:\n";
23fgets($client);
24var_dump(stream_get_meta_data($client));
25
26echo "\n\nRead 3 bytes of data from the client:\n";
27fread($client, 3);
28var_dump(stream_get_meta_data($client));
29
30echo "\n\nClose the server side socket and read the remaining data from the client:\n";
31fclose($socket);
32fclose($server);
33while(!feof($client)) {
34	fread($client, 1);
35}
36var_dump(stream_get_meta_data($client));
37
38?>
39--EXPECTF--
40Write some data:
41array(7) {
42  ["timed_out"]=>
43  bool(false)
44  ["blocked"]=>
45  bool(true)
46  ["eof"]=>
47  bool(false)
48  ["stream_type"]=>
49  string(%d) "tcp_socke%s"
50  ["mode"]=>
51  string(2) "r+"
52  ["unread_bytes"]=>
53  int(0)
54  ["seekable"]=>
55  bool(false)
56}
57
58
59Read a line from the client, causing data to be buffered:
60array(7) {
61  ["timed_out"]=>
62  bool(false)
63  ["blocked"]=>
64  bool(true)
65  ["eof"]=>
66  bool(false)
67  ["stream_type"]=>
68  string(%d) "tcp_socke%s"
69  ["mode"]=>
70  string(2) "r+"
71  ["unread_bytes"]=>
72  int(15)
73  ["seekable"]=>
74  bool(false)
75}
76
77
78Read 3 bytes of data from the client:
79array(7) {
80  ["timed_out"]=>
81  bool(false)
82  ["blocked"]=>
83  bool(true)
84  ["eof"]=>
85  bool(false)
86  ["stream_type"]=>
87  string(%d) "tcp_socke%s"
88  ["mode"]=>
89  string(2) "r+"
90  ["unread_bytes"]=>
91  int(12)
92  ["seekable"]=>
93  bool(false)
94}
95
96
97Close the server side socket and read the remaining data from the client:
98array(7) {
99  ["timed_out"]=>
100  bool(false)
101  ["blocked"]=>
102  bool(true)
103  ["eof"]=>
104  bool(true)
105  ["stream_type"]=>
106  string(%d) "tcp_socke%s"
107  ["mode"]=>
108  string(2) "r+"
109  ["unread_bytes"]=>
110  int(0)
111  ["seekable"]=>
112  bool(false)
113}
114