| |
| |
| |
| |
| |
| |
| |
| |
|
|
| |
| |
| |
| |
| |
| |
| |
| var emrun_file_dump = (filename, data) => {}; |
|
|
| if (globalThis.window && globalThis.document && (typeof ENVIRONMENT_IS_PTHREAD == 'undefined' || !ENVIRONMENT_IS_PTHREAD)) { |
| var emrun_register_handlers = () => { |
| |
| |
| |
| |
| var emrun_num_post_messages_in_flight = 0; |
| var emrun_should_close_itself = false; |
| var postExit = (msg) => { |
| var http = new XMLHttpRequest(); |
| |
| |
| |
| http.open("POST", "stdio.html", false); |
| http.send(msg); |
| try { |
| |
| |
| |
| window.close(); |
| } catch(e) {} |
| }; |
| var post = (url, msg) => { |
| var http = new XMLHttpRequest(); |
| ++emrun_num_post_messages_in_flight; |
| http.onreadystatechange = () => { |
| if (http.readyState == 4 ) { |
| if (--emrun_num_post_messages_in_flight == 0 && emrun_should_close_itself) { |
| postExit('^exit^'+EXITSTATUS); |
| } |
| } |
| } |
| http.open("POST", url, true); |
| http.send(msg); |
| }; |
| |
| |
| |
| if (document.URL.search("localhost") != -1 || document.URL.search(":6931/") != -1) { |
| var emrun_http_sequence_number = 1; |
| var prevPrint = out; |
| var prevErr = err; |
| addOnExit(() => { |
| if (emrun_num_post_messages_in_flight == 0) { |
| postExit('^exit^'+EXITSTATUS); |
| } else { |
| emrun_should_close_itself = true; |
| } |
| }); |
| out = (text) => { |
| post('stdio.html', '^out^'+(emrun_http_sequence_number++)+'^'+encodeURIComponent(text)); |
| prevPrint(text); |
| }; |
| err = (text) => { |
| post('stdio.html', '^err^'+(emrun_http_sequence_number++)+'^'+encodeURIComponent(text)); |
| prevErr(text); |
| }; |
| emrun_file_dump = (filename, data) => { |
| out(`Dumping out file "${filename}" with ${data.length} bytes of data.`); |
| if (ArrayBuffer.isView(data) && typeof SharedArrayBuffer !== "undefined" && data.buffer instanceof SharedArrayBuffer) { |
| data = new data.constructor(data); |
| } |
| post("stdio.html?file=" + filename, data); |
| }; |
|
|
| |
| |
| var tryToSendPageload = () => { |
| try { |
| post('stdio.html', '^pageload^'); |
| } catch (e) { |
| setTimeout(tryToSendPageload, 50); |
| } |
| }; |
| tryToSendPageload(); |
| } |
| }; |
|
|
| emrun_register_handlers(); |
| } |
|
|