more memory free, change json dep to fluencelabs repo

This commit is contained in:
DieMyst 2019-03-19 12:59:20 +03:00
parent 6aec6d050f
commit 10810ce9b5
6 changed files with 47 additions and 13 deletions

View File

@ -14,7 +14,6 @@ export class GameManager {
registeredPlayers: u64 = 0; registeredPlayers: u64 = 0;
playerIds: u64[] = new Array(); playerIds: u64[] = new Array();
playerBalance: Map<u64, u64> = new Map<u64, u64>(); playerBalance: Map<u64, u64> = new Map<u64, u64>();
encoder: JSONEncoder = new JSONEncoder();
constructor() { constructor() {
NativeMath.seedRandom(SEED); NativeMath.seedRandom(SEED);
@ -35,7 +34,8 @@ export class GameManager {
this.registeredPlayers = this.registeredPlayers + 1; this.registeredPlayers = this.registeredPlayers + 1;
return response.serialize(); let resultStr = response.serialize();
return resultStr;
} }
roll(playerId: u64, betPlacement: u8, betSize: u64): string { roll(playerId: u64, betPlacement: u8, betSize: u64): string {
@ -67,11 +67,12 @@ export class GameManager {
newBalance = balance - betSize; newBalance = balance - betSize;
} }
this.playerBalance.delete(playerId);
this.playerBalance.set(playerId, newBalance); this.playerBalance.set(playerId, newBalance);
let response = new RollResponse(outcome, newBalance); let response = new RollResponse(outcome, newBalance);
return response.serialize(); let resultStr = response.serialize();
memory.free(changetype<usize>(response));
return resultStr;
} }
getBalance(playerId: u64): string { getBalance(playerId: u64): string {

View File

@ -8,6 +8,7 @@ let gameManager = new GameManager();
export function handler(requestBytes: Uint8Array): string { export function handler(requestBytes: Uint8Array): string {
let request: Request = decode(requestBytes); let request: Request = decode(requestBytes);
// let request: Request = new RollRequest(0, 1, 2);
if (request.action == Action.Join) { if (request.action == Action.Join) {
return gameManager.join(); return gameManager.join();
@ -20,9 +21,15 @@ export function handler(requestBytes: Uint8Array): string {
} else if (request.action == Action.Unknown) { } else if (request.action == Action.Unknown) {
let r = request as UnknownRequest; let r = request as UnknownRequest;
let error = new ErrorResponse(r.message); let error = new ErrorResponse(r.message);
return error.serialize(); let returnStr = error.serialize();
memory.free(changetype<usize>(error));
return returnStr;
} }
memory.free(changetype<usize>(request));
let response = new ErrorResponse("Unreachable."); let response = new ErrorResponse("Unreachable.");
return response.serialize(); let returnStr = response.serialize();
memory.free(changetype<usize>(response));
return returnStr;
} }

View File

@ -1,4 +1,5 @@
// import "allocator/tlsf"; // import "allocator/tlsf";
// import "collector/itcm";
import "allocator/buddy"; import "allocator/buddy";
// import "allocator/arena"; // import "allocator/arena";
@ -35,6 +36,7 @@ export function invoke(ptr: i32, size: i32): i32 {
store<u8>(strAddr + i, b); store<u8>(strAddr + i, b);
} }
memory.free(changetype<usize>(result));
memory.free(ptr); memory.free(ptr);
return addr; return addr;

View File

@ -10,6 +10,10 @@ export enum Action {
export abstract class Request { export abstract class Request {
public action: Action = null; public action: Action = null;
clear(): void {
}
} }
export class UnknownRequest extends Request { export class UnknownRequest extends Request {
@ -21,6 +25,11 @@ export class UnknownRequest extends Request {
this.message = message; this.message = message;
} }
clear(): void {
super.clear();
memory.free(changetype<usize>(this.message));
}
} }
export class JoinRequest extends Request { export class JoinRequest extends Request {
constructor() { constructor() {
@ -39,6 +48,11 @@ export class RollRequest extends Request {
this.betSize = betSize; this.betSize = betSize;
this.action = Action.Roll; this.action = Action.Roll;
} }
clear(): void {
super.clear();
memory.free(changetype<usize>(this.playerId));
}
} }
export class GetBalanceRequest extends Request { export class GetBalanceRequest extends Request {
public playerId: u64; public playerId: u64;
@ -61,15 +75,21 @@ export function decode(bytes: Uint8Array): Request {
return new UnknownRequest("'action' field is not specified.") return new UnknownRequest("'action' field is not specified.")
} }
let request: Request;
if (action == "Join") { if (action == "Join") {
return new JoinRequest(); request = new JoinRequest();
} else if (action == "Roll") { } else if (action == "Roll") {
return new RollRequest(jsonHandler.playerId, jsonHandler.betPlacement, jsonHandler.betSize) request = new RollRequest(jsonHandler.playerId, jsonHandler.betPlacement, jsonHandler.betSize)
} else if (action == "GetBalance") { } else if (action == "GetBalance") {
return new GetBalanceRequest(jsonHandler.playerId) request = new GetBalanceRequest(jsonHandler.playerId)
} else { } else {
return new UnknownRequest("There is no request with action: " + action); request = new UnknownRequest("There is no request with action: " + action);
} }
jsonHandler.clean();
return request;
} }
class RequestJSONEventsHandler extends JSONHandler { class RequestJSONEventsHandler extends JSONHandler {
@ -81,6 +101,10 @@ class RequestJSONEventsHandler extends JSONHandler {
public outcome: u8; public outcome: u8;
public playerBalance: u64; public playerBalance: u64;
clean(): void {
memory.free(changetype<usize>(this.action));
}
setString(name: string, value: string): void { setString(name: string, value: string): void {
if (name == "action") { if (name == "action") {
this.action = value; this.action = value;

4
package-lock.json generated
View File

@ -634,8 +634,8 @@
} }
}, },
"assemblyscript-json": { "assemblyscript-json": {
"version": "github:nearprotocol/assemblyscript-json#1798ae8368daf449aae5f558be753dbe9d71c46c", "version": "github:fluencelabs/assemblyscript-json#df8e1e34259065ce3d8e72c98a96b429ab207630",
"from": "github:nearprotocol/assemblyscript-json" "from": "github:fluencelabs/assemblyscript-json"
}, },
"assign-symbols": { "assign-symbols": {
"version": "1.0.0", "version": "1.0.0",

View File

@ -22,7 +22,7 @@
}, },
"dependencies": { "dependencies": {
"bignum": "github:MaxGraey/bignum.wasm", "bignum": "github:MaxGraey/bignum.wasm",
"assemblyscript-json": "github:nearprotocol/assemblyscript-json", "assemblyscript-json": "github:fluencelabs/assemblyscript-json",
"typescript-collections": "github:fluencelabs/typescript-collections", "typescript-collections": "github:fluencelabs/typescript-collections",
"crypto-ts": "github:hmoog/crypto-ts" "crypto-ts": "github:hmoog/crypto-ts"
}, },