OLD | NEW |
| (Empty) |
1 <!DOCTYPE html> | |
2 <html> | |
3 <!-- | |
4 Copyright (c) 2012 The Chromium Authors. All rights reserved. | |
5 Use of this source code is governed by a BSD-style license that can be | |
6 found in the LICENSE file. | |
7 --> | |
8 <head> | |
9 <meta http-equiv="Pragma" content="no-cache"> | |
10 <meta http-equiv="Expires" content="-1"> | |
11 <title>{{title}}</title> | |
12 <script type="text/javascript" src="common.js"></script> | |
13 <script type="text/javascript" src="example.js"></script> | |
14 </head> | |
15 <body data-custom-load="true" {{attrs}}> | |
16 <h1>{{title}}</h1> | |
17 <h2>Status: <code id="statusField">NO-STATUS</code></h2> | |
18 <p> | |
19 This example shows how you can use standard C library file and socket | |
20 operation functions in Native Client using a library called nacl_io. | |
21 </p> | |
22 <p> | |
23 nacl_io provides a virtual filesystem. The filesystem can be "mounted" | |
24 in a given directory tree. When you perform operations on files in those | |
25 directories, the mount determines how those operations should be performed. | |
26 </p> | |
27 <p> | |
28 This example has four mounts by default. | |
29 <ol> | |
30 <li><i>/</i> the root of the filesystem. This is a memory mount, and | |
31 is non-persistent.</li> | |
32 <li><i>/persistent</i> a persistent storage area. Any data written | |
33 here can be read back after Chrome is restarted.</li> | |
34 <li><i>/http</i> a mount that can read from a URL. Try reading from | |
35 /http/index.html.</li> | |
36 <li><i>/dev</i> a mount containing some utility files. /dev/null, | |
37 /dev/zero, etc.</li> | |
38 </ol> | |
39 </p> | |
40 <p> | |
41 nacl_io also provides a (currently incomplete) posix socket api. Like the | |
42 virtual filesystem, it is an abstraction layer on top of ppapi. To use this | |
43 API, an app must be a packaged app with the appropriate socket permissions | |
44 specified in the manifest file. | |
45 <hr> | |
46 <p><b>File Operations:</b></p> | |
47 <div> | |
48 <span> | |
49 <input type="radio" id="radiofopen" name="group" checked="checked">fopen | |
50 <input type="radio" id="radiofclose" name="group">fclose | |
51 <input type="radio" id="radiofread" name="group">fread | |
52 <input type="radio" id="radiofwrite" name="group">fwrite | |
53 <input type="radio" id="radiofseek" name="group">fseek | |
54 <input type="radio" id="radiofflush" name="group">fflush | |
55 <input type="radio" id="radiostat" name="group">stat | |
56 </span> | |
57 </div> | |
58 <div class="function" id="fopen"> | |
59 <span> | |
60 Filename: | |
61 <input type="text" id="fopenFilename"> | |
62 <select id="fopenMode"> | |
63 <option value="r">Read Existing (r)</option> | |
64 <option value="r+">Read/Write Existing (r+)</option> | |
65 <option value="w">Write New File (w)</option> | |
66 <option value="w+">Read/Write New File (w+)</option> | |
67 <option value="a">Append Write (a)</option> | |
68 <option value="w+">Append Read/Write (a+)</option> | |
69 </select> | |
70 <button>fopen</button> | |
71 </span> | |
72 </div> | |
73 <div class="function" id="fclose" hidden> | |
74 <span> | |
75 <select class="file-handle" id="fcloseHandle"></select> | |
76 <button>fclose</button> | |
77 </span> | |
78 </div> | |
79 <div class="function" id="fread" hidden> | |
80 <span> | |
81 <select class="file-handle" id="freadHandle"></select> | |
82 Count: | |
83 <input type="text" id="freadBytes"> | |
84 <button>fread</button> | |
85 </span> | |
86 </div> | |
87 <div class="function" id="fwrite" hidden> | |
88 <span> | |
89 <select class="file-handle" id="fwriteHandle"></select> | |
90 Data: | |
91 <input type="text" id="fwriteData"> | |
92 <button>fwrite</button> | |
93 </span> | |
94 </div> | |
95 <div class="function" id="fseek" hidden> | |
96 <span> | |
97 <select class="file-handle" id="fseekHandle"></select> | |
98 Offset: | |
99 <input type="text" id="fseekOffset"> | |
100 Whence: | |
101 <select id="fseekWhence"> | |
102 <option value="0">SEEK_SET</option> | |
103 <option value="1">SEEK_CUR</option> | |
104 <option value="2">SEEK_END</option> | |
105 </select> | |
106 <button>fseek</button> | |
107 </span> | |
108 </div> | |
109 <div class="function" id="fflush" hidden> | |
110 <span> | |
111 <select class="file-handle" id="fflushHandle"></select> | |
112 <button>fflush</button> | |
113 </span> | |
114 </div> | |
115 <div class="function" id="stat" hidden> | |
116 <span> | |
117 Filename: | |
118 <input type="text" id="statFilename"> | |
119 <button>stat</button> | |
120 </span> | |
121 </div> | |
122 <hr> | |
123 <p><b>Directory Operations:</b></p> | |
124 <div> | |
125 <span> | |
126 <input type="radio" id="radioopendir" name="group">opendir | |
127 <input type="radio" id="radioreaddir" name="group">readdir | |
128 <input type="radio" id="radioclosedir" name="group">closedir | |
129 <input type="radio" id="radiomkdir" name="group">mkdir | |
130 <input type="radio" id="radiormdir" name="group">rmdir | |
131 <input type="radio" id="radiochdir" name="group">chdir | |
132 <input type="radio" id="radiogetcwd" name="group">getcwd | |
133 </span> | |
134 </div> | |
135 <div class="function" id="opendir" hidden> | |
136 <span> | |
137 Dirname: | |
138 <input type="text" id="opendirDirname"> | |
139 <button>opendir</button> | |
140 </span> | |
141 </div> | |
142 <div class="function" id="readdir" hidden> | |
143 <span> | |
144 <select class="dir-handle" id="readdirHandle"></select> | |
145 <button>readdir</button> | |
146 </span> | |
147 </div> | |
148 <div class="function" id="closedir" hidden> | |
149 <span> | |
150 <select class="dir-handle" id="closedirHandle"></select> | |
151 <button>closedir</button> | |
152 </span> | |
153 </div> | |
154 <div class="function" id="mkdir" hidden> | |
155 <span> | |
156 Dirname: | |
157 <input type="text" id="mkdirDirname"> | |
158 Mode (in octal): | |
159 <input type="text" id="mkdirMode" value="0644"> | |
160 <button>mkdir</button> | |
161 </span> | |
162 </div> | |
163 <div class="function" id="rmdir" hidden> | |
164 <span> | |
165 Dirname: | |
166 <input type="text" id="rmdirDirname"> | |
167 <button>rmdir</button> | |
168 </span> | |
169 </div> | |
170 <div class="function" id="chdir" hidden> | |
171 <span> | |
172 Dirname: | |
173 <input type="text" id="chdirDirname"> | |
174 <button>chdir</button> | |
175 </span> | |
176 </div> | |
177 <div class="function" id="getcwd" hidden> | |
178 <span> | |
179 <button>getcwd</button> | |
180 </span> | |
181 </div> | |
182 <hr> | |
183 <p><b>Socket Operations:</b></p> | |
184 <div> | |
185 <span> | |
186 <input type="radio" id="radiogethostbyname" name="group">gethostbyname | |
187 <input type="radio" id="radiogetaddrinfo" name="group">getaddrinfo | |
188 <input type="radio" id="radioconnect" name="group">connect | |
189 <input type="radio" id="radiosend" name="group">send | |
190 <input type="radio" id="radiorecv" name="group">recv | |
191 <input type="radio" id="radioclose" name="group">close | |
192 </span> | |
193 </div> | |
194 <div class="function" id="gethostbyname" hidden> | |
195 <span> | |
196 Hostname: | |
197 <input type="text" id="gethostbynameName" value="google.com"> | |
198 <button>gethostbyname</button> | |
199 </span> | |
200 </div> | |
201 <div class="function" id="getaddrinfo" hidden> | |
202 <span> | |
203 Hostname: | |
204 <input type="text" id="getaddrinfoName" value="google.com"> | |
205 <select id="getaddrinfoFamily"> | |
206 <option>AF_INET</option> | |
207 <option>AF_INET6</option> | |
208 <option>AF_UNSPEC</option> | |
209 </select> | |
210 <button>getaddrinfo</button> | |
211 </span> | |
212 </div> | |
213 <div class="function" id="connect" hidden> | |
214 <span> | |
215 Host: | |
216 <input type="text" id="connectHost" value="google.com"> | |
217 Port: | |
218 <input type="text" id="connectPort" value="80"> | |
219 <button>connect</button> | |
220 </span> | |
221 </div> | |
222 <div class="function" id="send" hidden> | |
223 <span> | |
224 <select class="sock-handle" id="sendHandle"></select> | |
225 Message: | |
226 <input type="text" id="sendMessage" value="Hello!"> | |
227 <button>send</button> | |
228 </span> | |
229 </div> | |
230 <div class="function" id="recv" hidden> | |
231 <span> | |
232 <select class="sock-handle" id="recvHandle"></select> | |
233 Buffer Size: | |
234 <input type="text" id="recvBufferSize" value="256"> | |
235 <button>recv</button> | |
236 </span> | |
237 </div> | |
238 <div class="function" id="close" hidden> | |
239 <span> | |
240 <select class="sock-handle" id="closeHandle"></select> | |
241 <button>close</button> | |
242 </span> | |
243 </div> | |
244 <hr> | |
245 <p><b>JavaScript Pipe Operations:</b></p> | |
246 <p>Type input while the focus is on this box the send input to the pipe | |
247 device: | |
248 <select id="pipe_name"> | |
249 <option>jspipe1</option> | |
250 <option>jspipe2</option> | |
251 <option>jspipe3</option> | |
252 </select> | |
253 <input type="text" id="pipe_input_box"></p> | |
254 <p>Any output from the pipe will be printed below: <textarea id="pipe_output">
</textarea></p> | |
255 <hr> | |
256 <p><b>Log:</b></p> | |
257 <pre id="log" style="font-weight: bold"></pre> | |
258 <!-- The NaCl plugin will be embedded inside the element with id "listener". | |
259 See common.js.--> | |
260 <div id="listener"></div> | |
261 </body> | |
262 </html> | |
OLD | NEW |