mirror of
https://github.com/fluencelabs/assemblyscript-dice
synced 2025-04-24 23:52:14 +00:00
add action strings
This commit is contained in:
parent
fb090f3c82
commit
c743a2bdf7
@ -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 {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
|
||||
export function handler(requestBytes: Uint8Array): string {
|
||||
|
||||
let request = decode(requestBytes);
|
||||
let request: Request = decode(requestBytes);
|
||||
|
||||
if (request instanceof JoinRequest) {
|
||||
return gameManager.join().serialize();
|
||||
@ -16,9 +16,9 @@ export function handler(requestBytes: Uint8Array): string {
|
||||
} else if (request instanceof GetBalanceRequest) {
|
||||
return gameManager.getBalance(request.playerId).serialize();
|
||||
} else if (request instanceof UnknownRequest) {
|
||||
return new ErrorResponse("There is no such type of request.").serialize();
|
||||
} else {
|
||||
unreachable();
|
||||
return "";
|
||||
return new ErrorResponse(request.message).serialize();
|
||||
}
|
||||
|
||||
let response = new ErrorResponse("Unereachable: " + request.action);
|
||||
return response.serialize();
|
||||
}
|
||||
|
@ -1,4 +1,4 @@
|
||||
import "allocator/tlsf";
|
||||
// import "allocator/tlsf";
|
||||
//import "allocator/buddy";
|
||||
//import "allocator/arena";
|
||||
|
||||
|
@ -1,9 +1,25 @@
|
||||
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 JoinRequest extends Request {}
|
||||
export class UnknownRequest 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 {
|
||||
public readonly playerId: u64;
|
||||
public betPlacement: u8;
|
||||
@ -13,6 +29,7 @@ export class RollRequest extends Request {
|
||||
this.playerId = playerId;
|
||||
this.betPlacement = betPlacement;
|
||||
this.betSize = betSize;
|
||||
this.action = "Roll";
|
||||
}
|
||||
}
|
||||
export class GetBalanceRequest extends Request {
|
||||
@ -20,6 +37,7 @@ export class GetBalanceRequest extends Request {
|
||||
constructor(playerId: u64) {
|
||||
super();
|
||||
this.playerId = playerId;
|
||||
this.action = "GetBalance";
|
||||
}
|
||||
}
|
||||
|
||||
@ -31,6 +49,10 @@ export function decode(bytes: Uint8Array): Request {
|
||||
|
||||
let action = jsonHandler.action;
|
||||
|
||||
if (!action) {
|
||||
return new UnknownRequest("'action' field is not specified.")
|
||||
}
|
||||
|
||||
if (action === "Join") {
|
||||
return new JoinRequest();
|
||||
} else if (action === "Roll") {
|
||||
@ -38,7 +60,7 @@ export function decode(bytes: Uint8Array): Request {
|
||||
} else if (action === "GetBalance") {
|
||||
return new GetBalanceRequest(jsonHandler.playerId)
|
||||
} else {
|
||||
return new UnknownRequest();
|
||||
return new UnknownRequest("There is no request with action: " + action);
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user