Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

vocaltech/server-connection-fsm-java

Folders and files

NameName
Last commit message
Last commit date

Latest commit

History

33 Commits

Repository files navigation

Server connection with FSM

Description

This application checks if a server is reachable, using a Finite State Machine (FSM) to update the different states.
This FSM has 3 states (see diagram below):

  • NotReachable: the server is not reachable
  • Reachable: the server is reachable
  • Recovery: the server was in NotReachable state, and the server is reachable

img.png

Usage

//
// We start the FSM with Init state
//
ServerConnectionFsm.State currentState = ServerConnectionFsm.State.Init;
//
// if the server is reachable (from Init state)
// we go to the next state (Reachable)
//
assertEquals(state.next(true), ServerConnectionFsm.State.Reachable);
//
// if the server is NOT reachable (from Reachable state),
// we go to the next state (NotReachable)
//
assertEquals(state.next(false), ServerConnectionFsm.State.NotReachable);`
//
// if the server is reachable (from NotReachable state),
// we go to the next state (Recovery)
//
assertEquals(state.next(true), ServerConnectionFsm.State.Recovery);`

Exposed endpoints

Default route

http://localhost:8080

Shutdown server

http://localhost:8080/actuator/shutdown

Check if server is available

http://localhost:8080/available

FSM with events

img.png

Usage

//
// create the fsm
//
ServerConnectionEventFsm serverConnectionEventFsm = new ServerConnectionEventFsm();
//
// start the fsm
//
serverConnectionEventFsm.start();
//
// send EVENT_SERVER_REACHABLE
// from STATE_INIT to STATE_REACHABLE
//
States currentState = States.STATE_INIT;
currentState = currentState.sendEvent(Events.EVENT_SERVER_REACHABLE);
assertEquals(States.STATE_REACHABLE, currentState);
//
// test STATE_RECOVERY
//
States currentState = States.STATE_RECOVERY;
currentState = currentState.sendEvent(Events.EVENT_SERVER_REACHABLE);
assertEquals(States.STATE_REACHABLE, currentState);
currentState = States.STATE_RECOVERY;
currentState = currentState.sendEvent(Events.EVENT_SERVER_NOT_REACHABLE);
assertEquals(States.STATE_NOT_REACHABLE, currentState);
 
//
// stop the fsm
//
serverConnectionEventFsm.stop()
 

Releases

No releases published

Packages

No packages published

Languages

AltStyle によって変換されたページ (->オリジナル) /