mirror of
https://github.com/fluencelabs/assemblyscript-dice
synced 2025-04-25 08:02: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 {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();
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import "allocator/tlsf";
|
// import "allocator/tlsf";
|
||||||
//import "allocator/buddy";
|
//import "allocator/buddy";
|
||||||
//import "allocator/arena";
|
//import "allocator/arena";
|
||||||
|
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user