mirror of
https://github.com/Eaglercraft-Archive/Eaglercraftx-1.8.8-src.git
synced 2025-06-27 18:38:14 -05:00
Update #44 - WebAssembly GC support, fix more WebRTC bugs
This commit is contained in:
82
sources/wasm-gc-teavm/js/serverPlatformSingleplayer.js
Normal file
82
sources/wasm-gc-teavm/js/serverPlatformSingleplayer.js
Normal file
@ -0,0 +1,82 @@
|
||||
/*
|
||||
* Copyright (c) 2024 lax1dude. All Rights Reserved.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
|
||||
* IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
|
||||
* INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
||||
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
||||
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||
* POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
*/
|
||||
|
||||
const serverPlatfSPName = "serverPlatformSingleplayer";
|
||||
|
||||
/** @type {function(string, boolean)|null} */
|
||||
var sendIntegratedServerCrash = null;
|
||||
|
||||
function initializeServerPlatfSP(spImports) {
|
||||
|
||||
const serverMessageQueue = new EaglerLinkedQueue();
|
||||
|
||||
/**
|
||||
* @param {Object} o
|
||||
*/
|
||||
self.__eaglerXOnMessage = function(o) {
|
||||
const channel = o["ch"];
|
||||
const buf = o["dat"];
|
||||
|
||||
if(!channel) {
|
||||
eagError("Recieved IPC packet with null channel");
|
||||
return;
|
||||
}
|
||||
|
||||
if(!buf) {
|
||||
eagError("Recieved IPC packet with null buffer");
|
||||
return;
|
||||
}
|
||||
|
||||
serverMessageQueue.push({
|
||||
"ch": channel,
|
||||
"data": new Uint8Array(buf),
|
||||
"_next": null
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* @param {string} channel
|
||||
* @param {Uint8Array} arr
|
||||
*/
|
||||
spImports["sendPacket"] = function(channel, arr) {
|
||||
const copiedArray = new Uint8Array(arr.length);
|
||||
copiedArray.set(arr, 0);
|
||||
postMessage({
|
||||
"ch": channel,
|
||||
"dat": copiedArray.buffer
|
||||
});
|
||||
};
|
||||
|
||||
spImports["getAvailablePackets"] = serverMessageQueue.getLength.bind(serverMessageQueue);
|
||||
|
||||
spImports["getNextPacket"] = serverMessageQueue.shift.bind(serverMessageQueue);
|
||||
|
||||
spImports["setCrashCallback"] = function() {
|
||||
return {
|
||||
"call": function(functor) {
|
||||
sendIntegratedServerCrash = functor;
|
||||
}
|
||||
};
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
function initializeNoServerPlatfSP(spImports) {
|
||||
setUnsupportedFunc(spImports, serverPlatfSPName, "sendPacket");
|
||||
setUnsupportedFunc(spImports, serverPlatfSPName, "getAvailablePackets");
|
||||
setUnsupportedFunc(spImports, serverPlatfSPName, "getNextPacket");
|
||||
setUnsupportedFunc(spImports, serverPlatfSPName, "setCrashCallback");
|
||||
}
|
Reference in New Issue
Block a user