Add state class hooks

This commit is contained in:
sqozz 2021-02-24 22:29:41 +01:00
parent e228c2ac53
commit 885df2f4fe

View file

@ -2,12 +2,68 @@ from bottle import route, get, static_file, run
from bottle.ext.websocket import GeventWebSocketServer from bottle.ext.websocket import GeventWebSocketServer
from bottle.ext.websocket import websocket from bottle.ext.websocket import websocket
from os.path import join as pathjoin from os.path import join as pathjoin
from statemachine import DialingState from statemachine import InitState, RegisteringState, IdleState, SchelltState, AcceptingState, CallTerminatingState, ForgottenState, BusyBeepingState, CallRunningState, WecktState, ConnectingState, DialingState
import threading import threading
class WebInitState(InitState):
def __init__(self, web):
self.web = web
super().__init__(web.controller)
class WebRegisteringState(RegisteringState):
def __init__(self, web):
self.web = web
super().__init__(web.controller)
class WebIdleState(IdleState):
def __init__(self, web):
self.web = web
super().__init__(web.controller)
class WebSchelltState(SchelltState):
def __init__(self, web):
self.web = web
super().__init__(web.controller)
class WebAcceptingState(AcceptingState):
def __init__(self, web):
self.web = web
super().__init__(web.controller)
class WebCallTerminatingState(CallTerminatingState):
def __init__(self, web):
self.web = web
super().__init__(web.controller)
class WebForgottenState(ForgottenState):
def __init__(self, web):
self.web = web
super().__init__(web.controller)
class WebBusyBeepingState(BusyBeepingState):
def __init__(self, web):
self.web = web
super().__init__(web.controller)
class WebCallRunningState(CallRunningState):
def __init__(self, web):
self.web = web
super().__init__(web.controller)
class WebWecktState(WecktState):
def __init__(self, web):
self.web = web
super().__init__(web.controller)
class WebConnectingState(ConnectingState):
def __init__(self, web):
self.web = web
super().__init__(web.controller)
class WebDialingState(DialingState): class WebDialingState(DialingState):
def __init__(self, controller): def __init__(self, web):
super().__init__(controller) self.web = web
super().__init__(web.controller)
def on_nummernschalter_input(self, num): def on_nummernschalter_input(self, num):
print("calling super method") print("calling super method")
@ -30,9 +86,9 @@ class FeTapWeb():
return "<h1>Hello world!</h1>" return "<h1>Hello world!</h1>"
def publish_status(self): def publish_status(self):
if isinstance(self.controller.state, DialingState): print(self.controller.state.__class__.__name__)
self.controller.state = WebDialingState(self.controller) new_state = eval("Web" + self.controller.state.__class__.__name__)(self)
print("dialing") self.controller.state = new_state
for ws in self.websockets: for ws in self.websockets:
ws.send("this is a message triggered from the server") ws.send("this is a message triggered from the server")
return "ok" return "ok"