Skip to content

Commit 22d2bc6

Browse files
Added Buffer Compression Option
1 parent e063fcc commit 22d2bc6

File tree

6 files changed

+44
-3
lines changed

6 files changed

+44
-3
lines changed

objects/obj_client/Other_68.gml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ if (_type == network_type_non_blocking_connect) {
1616
else if (_type == network_type_data) {
1717
var _buffer = async_load[? "buffer"];
1818
try {
19-
var _json = buffer_read(_buffer, buffer_text);
19+
var _json = client.network.readBufferText(_buffer);
2020
var _data = json_parse(_json);
2121
client.triggerEvent("message", {
2222
data: _data,

objects/obj_server/Other_68.gml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ if (_id == server.socket) {
1717
else if (_type == network_type_data && server.hasClient(_id)) {
1818
var _buffer = async_load[? "buffer"];
1919
try {
20-
var _json = buffer_read(_buffer, buffer_text);
20+
var _json = server.network.readBufferText(_buffer);
2121
var _data = json_parse(_json);
2222
server.triggerEvent("message", {
2323
data: _data,

scripts/GameClient/GameClient.gml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
function GameClient(_ip, _port) : TCPSocket(_ip, _port) constructor {
2+
network.setCompress(true);
23
self.ping = 0;
34
rpc.registerHandler("create_ball", function(_pos) {
45
var _inst = instance_create_depth(_pos.x, _pos.y, 0, obj_ball);

scripts/GameServer/GameServer.gml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
function GameServer(_port) : TCPServer(_port) constructor {
2+
network.setCompress(true);
23
static createClient = function() {
34
return new Client();
45
};

scripts/Network/Network.gml

Lines changed: 28 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,35 @@ function Network() constructor {
44
self.raw = false;
55
self.type = network_socket_tcp;
66
self.defaultSocket = -1;
7+
self.compress = false;
78
static setRAW = function(_raw) {
89
self.raw = _raw;
10+
return self;
911
}
1012
static setType = function(_type) {
1113
self.type = _type;
14+
return self;
1215
}
1316
static setDefaultSocket = function(_socket) {
14-
self.defaultSocket = _socket;
17+
self.defaultSocket = _socket;
18+
return self;
19+
}
20+
static setCompress = function(_value) {
21+
self.compress = _value;
22+
return self;
23+
}
24+
/// @function readBufferText()
25+
/// @description Read the buffer as a text.
26+
/// @param {Id.Buffer} buffer The index of the buffer to read from.
27+
/// @returns {String}
28+
static readBufferText = function(_buffer) {
29+
if (!compress) {
30+
return buffer_read(_buffer, buffer_text);
31+
}
32+
var _decompressed = buffer_decompress(_buffer);
33+
var _text = buffer_read(_decompressed, buffer_text);
34+
buffer_delete(_decompressed);
35+
return _text;
1536
}
1637
/// @function sendData()
1738
/// @description Send data to socket.
@@ -24,6 +45,12 @@ function Network() constructor {
2445
buffer_seek(buffer, buffer_seek_start, 0);
2546
var _json_string = json_stringify(_data);
2647
buffer_write(buffer, buffer_text, _json_string);
48+
if (compress) {
49+
var _compressed = buffer_compress(buffer, 0, buffer_tell(buffer));
50+
buffer_delete(buffer);
51+
buffer = _compressed;
52+
buffer_seek(buffer, 0, buffer_get_size(_compressed));
53+
}
2754
array_foreach(_sockets, function(_socket) {
2855
if (raw) {
2956
network_send_raw(_socket, buffer, buffer_tell(buffer));

scripts/RPC/RPC.gml

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,18 @@ function RPC(_socket) constructor {
2020
_data.jsonrpc = "2.0";
2121
network.sendData(_data, _socket);
2222
}
23+
/// @function sendRequest()
24+
///
25+
/// @description
26+
/// Function to send requests by invoking the specified method with the given parameters
27+
/// over the provided socket. Allows handling both successful results and errors through callbacks.
28+
///
29+
/// @param {String} method - Name of the method to be invoked.
30+
/// @param {Struct|Array} params - Parameters to be used in the request.
31+
/// @param {Function} callback - Function to execute when the result is received successfully.
32+
/// @param {Function} errback - Function to execute when an error occurs.
33+
/// @param {Function} socket - Socket to which the request will be sent.
34+
/// @param {Real} timeout - Time, in seconds, to wait for the request result before timing out.
2335
static sendRequest = function(_method, _params, _callback, _errback, _socket = socket, _timeout = timeout) {
2436
var _id = generateID();
2537
sendJSON({

0 commit comments

Comments
 (0)