UNPKG

landstrasse

Version:

Strongly typed WAMP Client for browsers

63 lines 2.75 kB
import StateMachine from '.'; import { EWampMessageID } from '../types/messages/MessageTypes'; export var EConnectionState; (function (EConnectionState) { EConnectionState["CLOSED"] = "CLOSED"; EConnectionState["ETABLISHING"] = "ETABLISHING"; EConnectionState["ESTABLISHED"] = "ETABLISHED"; EConnectionState["CLOSING"] = "CLOSING"; EConnectionState["ERROR"] = "ERROR"; EConnectionState["AUTHENTICATING"] = "AUTHENTICATING"; EConnectionState["CHALLENGING"] = "CHALLENGING"; })(EConnectionState || (EConnectionState = {})); export var EMessageDirection; (function (EMessageDirection) { EMessageDirection["RECEIVED"] = "RECEIVED"; EMessageDirection["SENT"] = "SENT"; })(EMessageDirection || (EMessageDirection = {})); export class ConnectionStateMachine extends StateMachine { constructor() { const transitions = new Map(); transitions.set(EConnectionState.CLOSED, ([msgDir, msgId]) => { if (msgId === EWampMessageID.HELLO && msgDir === EMessageDirection.SENT) { return EConnectionState.ETABLISHING; } return EConnectionState.ERROR; }); transitions.set(EConnectionState.ETABLISHING, ([msgDir, msgId]) => { if (msgId === EWampMessageID.WELCOME && msgDir === EMessageDirection.RECEIVED) { return EConnectionState.ESTABLISHED; } if (msgId === EWampMessageID.CHALLENGE && msgDir === EMessageDirection.RECEIVED) { return EConnectionState.CHALLENGING; } return EConnectionState.ERROR; }); transitions.set(EConnectionState.ESTABLISHED, ([, msgId]) => { if (msgId === EWampMessageID.GOODBYE) { return EConnectionState.CLOSING; } return null; }); transitions.set(EConnectionState.CLOSING, ([, msgId]) => { if (msgId === EWampMessageID.GOODBYE) { return EConnectionState.CLOSED; } return EConnectionState.ERROR; }); transitions.set(EConnectionState.CHALLENGING, ([msgDir, msgId]) => { if (msgId === EWampMessageID.AUTHENTICATE && msgDir === EMessageDirection.SENT) { return EConnectionState.AUTHENTICATING; } return EConnectionState.ERROR; }); transitions.set(EConnectionState.AUTHENTICATING, ([msgDir, msgId]) => { if (msgId === EWampMessageID.WELCOME && msgDir === EMessageDirection.RECEIVED) { return EConnectionState.ESTABLISHED; } return EConnectionState.ERROR; }); super(EConnectionState.CLOSED, transitions); } } //# sourceMappingURL=connection.js.map