private PsmInterp makeStateMachine(final UserData ud) { PsmMachine machine = makeMachine(); PsmInterp interp = newPsmInterp(machine, ud); interp.setName("ReusableRepairer"); interp.setCheckpointer( new PsmInterp.Checkpointer() { public void checkpoint(PsmInterpStateBean resumeStateBean) { // Throw an error? } }); return interp; }
private void startStateMachine() { // start the state machine running. String msg = "Error starting V3ReusableRepairer"; try { stateMachine.enqueueStart(ehAbortPoll(msg)); } catch (PsmException e) { log.warning(msg, e); abort(); } }
/** Handle an incoming V3LcapMessage. */ public void receiveMessage(LcapMessage message) { final V3LcapMessage msg = (V3LcapMessage) message; PeerIdentity sender = msg.getOriginatorId(); PsmMsgEvent evt = V3Events.fromMessage(msg); log.debug3("Received message: " + message.getOpcodeString() + " " + message); String errmsg = "State machine error"; stateMachine.enqueueEvent( evt, ehAbortPoll(errmsg), new PsmInterp.Action() { public void eval() { msg.delete(); } }); // Finally, clean up after the V3LcapMessage // todo(bhayes): Really? And "finally" rather than "try/finally?" msg.delete(); }
private PsmInterp newPsmInterp(PsmMachine stateMachine, UserData userData) { PsmManager mgr = daemon.getPsmManager(); PsmInterp interp = mgr.newPsmInterp(stateMachine, userData); interp.setThreaded(true); return interp; }