mirror of
https://github.com/godotengine/godot.git
synced 2025-10-19 16:03:29 +00:00
[HTML5] Libraries refactor for linting.
Initial work to make liniting easier. This includes: - Rename http_request.js to library_godot_http_request.js. - Rename externs.js to engine.externs.js. - New library_godot_runtime.js (GodotRuntime) wraps around emscripten functions. - Refactor of XMLHttpRequest handler in engine/preloader.js. - Few fixes to bugs spotted by early stage linting.
This commit is contained in:
parent
48049b8d9e
commit
a82f70ea9f
16 changed files with 487 additions and 378 deletions
|
@ -28,9 +28,9 @@
|
|||
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
|
||||
/*************************************************************************/
|
||||
|
||||
var GodotWebSocket = {
|
||||
const GodotWebSocket = {
|
||||
// Our socket implementation that forwards events to C++.
|
||||
$GodotWebSocket__deps: ['$IDHandler'],
|
||||
$GodotWebSocket__deps: ['$IDHandler', '$GodotRuntime'],
|
||||
$GodotWebSocket: {
|
||||
// Connection opened, report selected protocol
|
||||
_onopen: function(p_id, callback, event) {
|
||||
|
@ -38,9 +38,9 @@ var GodotWebSocket = {
|
|||
if (!ref) {
|
||||
return; // Godot object is gone.
|
||||
}
|
||||
let c_str = GodotOS.allocString(ref.protocol);
|
||||
let c_str = GodotRuntime.allocString(ref.protocol);
|
||||
callback(c_str);
|
||||
_free(c_str);
|
||||
GodotRuntime.free(c_str);
|
||||
},
|
||||
|
||||
// Message received, report content and type (UTF8 vs binary)
|
||||
|
@ -54,21 +54,21 @@ var GodotWebSocket = {
|
|||
if (event.data instanceof ArrayBuffer) {
|
||||
buffer = new Uint8Array(event.data);
|
||||
} else if (event.data instanceof Blob) {
|
||||
alert("Blob type not supported");
|
||||
GodotRuntime.error("Blob type not supported");
|
||||
return;
|
||||
} else if (typeof event.data === "string") {
|
||||
is_string = 1;
|
||||
var enc = new TextEncoder("utf-8");
|
||||
buffer = new Uint8Array(enc.encode(event.data));
|
||||
} else {
|
||||
alert("Unknown message type");
|
||||
GodotRuntime.error("Unknown message type");
|
||||
return;
|
||||
}
|
||||
var len = buffer.length*buffer.BYTES_PER_ELEMENT;
|
||||
var out = _malloc(len);
|
||||
var out = GodotRuntime.malloc(len);
|
||||
HEAPU8.set(buffer, out);
|
||||
callback(out, len, is_string);
|
||||
_free(out);
|
||||
GodotRuntime.free(out);
|
||||
},
|
||||
|
||||
// An error happened, 'onclose' will be called after this.
|
||||
|
@ -86,15 +86,15 @@ var GodotWebSocket = {
|
|||
if (!ref) {
|
||||
return; // Godot object is gone.
|
||||
}
|
||||
let c_str = GodotOS.allocString(event.reason);
|
||||
let c_str = GodotRuntime.allocString(event.reason);
|
||||
callback(event.code, c_str, event.wasClean ? 1 : 0);
|
||||
_free(c_str);
|
||||
GodotRuntime.free(c_str);
|
||||
},
|
||||
|
||||
// Send a message
|
||||
send: function(p_id, p_data) {
|
||||
const ref = IDHandler.get(p_id);
|
||||
if (!ref || ref.readyState != ref.OPEN) {
|
||||
if (!ref || ref.readyState !== ref.OPEN) {
|
||||
return 1; // Godot object is gone or socket is not in a ready state.
|
||||
}
|
||||
ref.send(p_data);
|
||||
|
@ -115,7 +115,7 @@ var GodotWebSocket = {
|
|||
const ref = IDHandler.get(p_id);
|
||||
if (ref && ref.readyState < ref.CLOSING) {
|
||||
const code = p_code;
|
||||
const reason = UTF8ToString(p_reason);
|
||||
const reason = GodotRuntime.parseString(p_reason);
|
||||
ref.close(code, reason);
|
||||
}
|
||||
},
|
||||
|
@ -136,12 +136,12 @@ var GodotWebSocket = {
|
|||
},
|
||||
|
||||
godot_js_websocket_create: function(p_ref, p_url, p_proto, p_on_open, p_on_message, p_on_error, p_on_close) {
|
||||
const on_open = GodotOS.get_func(p_on_open).bind(null, p_ref);
|
||||
const on_message = GodotOS.get_func(p_on_message).bind(null, p_ref);
|
||||
const on_error = GodotOS.get_func(p_on_error).bind(null, p_ref);
|
||||
const on_close = GodotOS.get_func(p_on_close).bind(null, p_ref);
|
||||
const url = UTF8ToString(p_url);
|
||||
const protos = UTF8ToString(p_proto);
|
||||
const on_open = GodotRuntime.get_func(p_on_open).bind(null, p_ref);
|
||||
const on_message = GodotRuntime.get_func(p_on_message).bind(null, p_ref);
|
||||
const on_error = GodotRuntime.get_func(p_on_error).bind(null, p_ref);
|
||||
const on_close = GodotRuntime.get_func(p_on_close).bind(null, p_ref);
|
||||
const url = GodotRuntime.parseString(p_url);
|
||||
const protos = GodotRuntime.parseString(p_proto);
|
||||
var socket = null;
|
||||
try {
|
||||
if (protos) {
|
||||
|
@ -160,7 +160,7 @@ var GodotWebSocket = {
|
|||
var bytes_array = new Uint8Array(p_buf_len);
|
||||
var i = 0;
|
||||
for(i = 0; i < p_buf_len; i++) {
|
||||
bytes_array[i] = getValue(p_buf + i, 'i8');
|
||||
bytes_array[i] = GodotRuntime.getHeapValue(p_buf + i, 'i8');
|
||||
}
|
||||
var out = bytes_array.buffer;
|
||||
if (!p_raw) {
|
||||
|
@ -171,7 +171,7 @@ var GodotWebSocket = {
|
|||
|
||||
godot_js_websocket_close: function(p_id, p_code, p_reason) {
|
||||
const code = p_code;
|
||||
const reason = UTF8ToString(p_reason);
|
||||
const reason = GodotRuntime.parseString(p_reason);
|
||||
GodotWebSocket.close(p_id, code, reason);
|
||||
},
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue