add action strings

This commit is contained in:
DieMyst 2019-03-15 16:05:42 +03:00
parent fb090f3c82
commit c743a2bdf7
3 changed files with 33 additions and 11 deletions

View File

@ -1,4 +1,4 @@
import {decode, GetBalanceRequest, JoinRequest, RollRequest, UnknownRequest} from "./request"; import {decode, GetBalanceRequest, JoinRequest, Request, RollRequest, UnknownRequest} from "./request";
import {ErrorResponse} from "./response"; import {ErrorResponse} from "./response";
import {GameManager} from "./dice"; import {GameManager} from "./dice";
@ -7,7 +7,7 @@ let gameManager = new GameManager();
// returns string, because serialization to a byte array is not compatible with our invoke handlers // returns string, because serialization to a byte array is not compatible with our invoke handlers
export function handler(requestBytes: Uint8Array): string { export function handler(requestBytes: Uint8Array): string {
let request = decode(requestBytes); let request: Request = decode(requestBytes);
if (request instanceof JoinRequest) { if (request instanceof JoinRequest) {
return gameManager.join().serialize(); return gameManager.join().serialize();
@ -16,9 +16,9 @@ export function handler(requestBytes: Uint8Array): string {
} else if (request instanceof GetBalanceRequest) { } else if (request instanceof GetBalanceRequest) {
return gameManager.getBalance(request.playerId).serialize(); return gameManager.getBalance(request.playerId).serialize();
} else if (request instanceof UnknownRequest) { } else if (request instanceof UnknownRequest) {
return new ErrorResponse("There is no such type of request.").serialize(); return new ErrorResponse(request.message).serialize();
} else {
unreachable();
return "";
} }
let response = new ErrorResponse("Unereachable: " + request.action);
return response.serialize();
} }

View File

@ -1,4 +1,4 @@
import "allocator/tlsf"; // import "allocator/tlsf";
//import "allocator/buddy"; //import "allocator/buddy";
//import "allocator/arena"; //import "allocator/arena";

View File

@ -1,9 +1,25 @@
import {JSONDecoder, JSONHandler} from "../node_modules/assemblyscript-json/assembly/decoder"; import {JSONDecoder, JSONHandler} from "../node_modules/assemblyscript-json/assembly/decoder";
export abstract class Request {} export abstract class Request {
public action: string = "";
}
export class UnknownRequest extends Request {} export class UnknownRequest extends Request {
export class JoinRequest extends Request {} public message: string;
constructor(message: string) {
super();
this.action = "unknown";
this.message = message;
}
}
export class JoinRequest extends Request {
constructor() {
super();
this.action = "Join";
}
}
export class RollRequest extends Request { export class RollRequest extends Request {
public readonly playerId: u64; public readonly playerId: u64;
public betPlacement: u8; public betPlacement: u8;
@ -13,6 +29,7 @@ export class RollRequest extends Request {
this.playerId = playerId; this.playerId = playerId;
this.betPlacement = betPlacement; this.betPlacement = betPlacement;
this.betSize = betSize; this.betSize = betSize;
this.action = "Roll";
} }
} }
export class GetBalanceRequest extends Request { export class GetBalanceRequest extends Request {
@ -20,6 +37,7 @@ export class GetBalanceRequest extends Request {
constructor(playerId: u64) { constructor(playerId: u64) {
super(); super();
this.playerId = playerId; this.playerId = playerId;
this.action = "GetBalance";
} }
} }
@ -31,6 +49,10 @@ export function decode(bytes: Uint8Array): Request {
let action = jsonHandler.action; let action = jsonHandler.action;
if (!action) {
return new UnknownRequest("'action' field is not specified.")
}
if (action === "Join") { if (action === "Join") {
return new JoinRequest(); return new JoinRequest();
} else if (action === "Roll") { } else if (action === "Roll") {
@ -38,7 +60,7 @@ export function decode(bytes: Uint8Array): Request {
} else if (action === "GetBalance") { } else if (action === "GetBalance") {
return new GetBalanceRequest(jsonHandler.playerId) return new GetBalanceRequest(jsonHandler.playerId)
} else { } else {
return new UnknownRequest(); return new UnknownRequest("There is no request with action: " + action);
} }
} }