mirror of
https://github.com/fluencelabs/assemblyscript-dice
synced 2025-04-24 23:52:14 +00:00
more memory free, change json dep to fluencelabs repo
This commit is contained in:
parent
6aec6d050f
commit
10810ce9b5
@ -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 {
|
||||||
|
@ -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;
|
||||||
}
|
}
|
||||||
|
@ -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;
|
||||||
|
@ -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
4
package-lock.json
generated
@ -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",
|
||||||
|
@ -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"
|
||||||
},
|
},
|
||||||
|
Loading…
x
Reference in New Issue
Block a user