Add server files
This commit is contained in:
192
INetwork.js
Normal file
192
INetwork.js
Normal file
@ -0,0 +1,192 @@
|
||||
"use strict";
|
||||
var NetEventType;
|
||||
(function (NetEventType) {
|
||||
NetEventType[NetEventType["Invalid"] = 0] = "Invalid";
|
||||
NetEventType[NetEventType["UnreliableMessageReceived"] = 1] = "UnreliableMessageReceived";
|
||||
NetEventType[NetEventType["ReliableMessageReceived"] = 2] = "ReliableMessageReceived";
|
||||
NetEventType[NetEventType["ServerInitialized"] = 3] = "ServerInitialized";
|
||||
NetEventType[NetEventType["ServerInitFailed"] = 4] = "ServerInitFailed";
|
||||
NetEventType[NetEventType["ServerClosed"] = 5] = "ServerClosed";
|
||||
NetEventType[NetEventType["NewConnection"] = 6] = "NewConnection";
|
||||
NetEventType[NetEventType["ConnectionFailed"] = 7] = "ConnectionFailed";
|
||||
NetEventType[NetEventType["Disconnected"] = 8] = "Disconnected";
|
||||
NetEventType[NetEventType["FatalError"] = 100] = "FatalError";
|
||||
NetEventType[NetEventType["Warning"] = 101] = "Warning";
|
||||
NetEventType[NetEventType["Log"] = 102] = "Log"; //not yet used
|
||||
})(NetEventType || (NetEventType = {}));
|
||||
exports.NetEventType = NetEventType;
|
||||
var NetEventDataType;
|
||||
(function (NetEventDataType) {
|
||||
NetEventDataType[NetEventDataType["Null"] = 0] = "Null";
|
||||
NetEventDataType[NetEventDataType["ByteArray"] = 1] = "ByteArray";
|
||||
NetEventDataType[NetEventDataType["UTF16String"] = 2] = "UTF16String";
|
||||
})(NetEventDataType || (NetEventDataType = {}));
|
||||
var NetworkEvent = (function () {
|
||||
function NetworkEvent(t, conId, data) {
|
||||
this.type = t;
|
||||
this.connectionId = conId;
|
||||
this.data = data;
|
||||
}
|
||||
Object.defineProperty(NetworkEvent.prototype, "RawData", {
|
||||
get: function () {
|
||||
return this.data;
|
||||
},
|
||||
enumerable: true,
|
||||
configurable: true
|
||||
});
|
||||
Object.defineProperty(NetworkEvent.prototype, "MessageData", {
|
||||
get: function () {
|
||||
if (typeof this.data != "string")
|
||||
return this.data;
|
||||
return null;
|
||||
},
|
||||
enumerable: true,
|
||||
configurable: true
|
||||
});
|
||||
Object.defineProperty(NetworkEvent.prototype, "Info", {
|
||||
get: function () {
|
||||
if (typeof this.data == "string")
|
||||
return this.data;
|
||||
return null;
|
||||
},
|
||||
enumerable: true,
|
||||
configurable: true
|
||||
});
|
||||
Object.defineProperty(NetworkEvent.prototype, "Type", {
|
||||
get: function () {
|
||||
return this.type;
|
||||
},
|
||||
enumerable: true,
|
||||
configurable: true
|
||||
});
|
||||
Object.defineProperty(NetworkEvent.prototype, "ConnectionId", {
|
||||
get: function () {
|
||||
return this.connectionId;
|
||||
},
|
||||
enumerable: true,
|
||||
configurable: true
|
||||
});
|
||||
//for debugging only
|
||||
NetworkEvent.prototype.toString = function () {
|
||||
var output = "NetworkEvent[";
|
||||
output += "NetEventType: (";
|
||||
output += NetEventType[this.type];
|
||||
output += "), id: (";
|
||||
output += this.connectionId.id;
|
||||
output += "), Data: (";
|
||||
if (typeof this.data == "string") {
|
||||
output += this.data;
|
||||
}
|
||||
output += ")]";
|
||||
return output;
|
||||
};
|
||||
NetworkEvent.parseFromString = function (str) {
|
||||
var values = JSON.parse(str);
|
||||
var data;
|
||||
if (values.data == null) {
|
||||
data = null;
|
||||
}
|
||||
else if (typeof values.data == "string") {
|
||||
data = values.data;
|
||||
}
|
||||
else if (typeof values.data == "object") {
|
||||
//json represents the array as an object containing each index and the
|
||||
//value as string number ... improve that later
|
||||
var arrayAsObject = values.data;
|
||||
var length = 0;
|
||||
for (var prop in arrayAsObject) {
|
||||
//if (arrayAsObject.hasOwnProperty(prop)) { //shouldnt be needed
|
||||
length++;
|
||||
}
|
||||
var buffer = new Uint8Array(Object.keys(arrayAsObject).length);
|
||||
for (var i = 0; i < buffer.length; i++)
|
||||
buffer[i] = arrayAsObject[i];
|
||||
data = buffer;
|
||||
}
|
||||
else {
|
||||
console.error("data can't be parsed");
|
||||
}
|
||||
var evt = new NetworkEvent(values.type, values.connectionId, data);
|
||||
return evt;
|
||||
};
|
||||
NetworkEvent.toString = function (evt) {
|
||||
return JSON.stringify(evt);
|
||||
};
|
||||
NetworkEvent.fromByteArray = function (arr) {
|
||||
var type = arr[0]; //byte
|
||||
var dataType = arr[1]; //byte
|
||||
var id = new Int16Array(arr.buffer, arr.byteOffset + 2, 1)[0]; //short
|
||||
var data = null;
|
||||
if (dataType == NetEventDataType.ByteArray) {
|
||||
var length_1 = new Uint32Array(arr.buffer, arr.byteOffset + 4, 1)[0]; //uint
|
||||
var byteArray = new Uint8Array(arr.buffer, arr.byteOffset + 8, length_1);
|
||||
data = byteArray;
|
||||
}
|
||||
else if (dataType == NetEventDataType.UTF16String) {
|
||||
var length_2 = new Uint32Array(arr.buffer, arr.byteOffset + 4, 1)[0]; //uint
|
||||
var uint16Arr = new Uint16Array(arr.buffer, arr.byteOffset + 8, length_2);
|
||||
var str = "";
|
||||
for (var i = 0; i < uint16Arr.length; i++) {
|
||||
str += String.fromCharCode(uint16Arr[i]);
|
||||
}
|
||||
data = str;
|
||||
}
|
||||
var conId = new ConnectionId(id);
|
||||
var result = new NetworkEvent(type, conId, data);
|
||||
return result;
|
||||
};
|
||||
NetworkEvent.toByteArray = function (evt) {
|
||||
var dataType;
|
||||
var length = 4; //4 bytes are always needed
|
||||
//getting type and length
|
||||
if (evt.data == null) {
|
||||
dataType = NetEventDataType.Null;
|
||||
}
|
||||
else if (typeof evt.data == "string") {
|
||||
dataType = NetEventDataType.UTF16String;
|
||||
var str = evt.data;
|
||||
length += str.length * 2 + 4;
|
||||
}
|
||||
else {
|
||||
dataType = NetEventDataType.ByteArray;
|
||||
var byteArray = evt.data;
|
||||
length += 4 + byteArray.length;
|
||||
}
|
||||
//creating the byte array
|
||||
var result = new Uint8Array(length);
|
||||
result[0] = evt.type;
|
||||
;
|
||||
result[1] = dataType;
|
||||
var conIdField = new Int16Array(result.buffer, result.byteOffset + 2, 1);
|
||||
conIdField[0] = evt.connectionId.id;
|
||||
if (dataType == NetEventDataType.ByteArray) {
|
||||
var byteArray = evt.data;
|
||||
var lengthField = new Uint32Array(result.buffer, result.byteOffset + 4, 1);
|
||||
lengthField[0] = byteArray.length;
|
||||
for (var i = 0; i < byteArray.length; i++) {
|
||||
result[8 + i] = byteArray[i];
|
||||
}
|
||||
}
|
||||
else if (dataType == NetEventDataType.UTF16String) {
|
||||
var str = evt.data;
|
||||
var lengthField = new Uint32Array(result.buffer, result.byteOffset + 4, 1);
|
||||
lengthField[0] = str.length;
|
||||
var dataField = new Uint16Array(result.buffer, result.byteOffset + 8, str.length);
|
||||
for (var i = 0; i < dataField.length; i++) {
|
||||
dataField[i] = str.charCodeAt(i);
|
||||
}
|
||||
}
|
||||
return result;
|
||||
};
|
||||
return NetworkEvent;
|
||||
}());
|
||||
exports.NetworkEvent = NetworkEvent;
|
||||
var ConnectionId = (function () {
|
||||
function ConnectionId(nid) {
|
||||
this.id = nid;
|
||||
}
|
||||
ConnectionId.INVALID = new ConnectionId(-1);
|
||||
return ConnectionId;
|
||||
}());
|
||||
exports.ConnectionId = ConnectionId;
|
||||
//# sourceMappingURL=INetwork.js.map
|
Reference in New Issue
Block a user