Initial project snapshot
This commit is contained in:
@@ -0,0 +1,44 @@
|
||||
package sessionbroker
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
sessioncontracts "github.com/example/remote-access-platform/backend/pkg/contracts/session"
|
||||
)
|
||||
|
||||
var allowedTransitions = map[sessioncontracts.State]map[sessioncontracts.State]struct{}{
|
||||
sessioncontracts.StateStarting: {
|
||||
sessioncontracts.StateActive: {},
|
||||
sessioncontracts.StateFailed: {},
|
||||
sessioncontracts.StateTerminated: {},
|
||||
},
|
||||
sessioncontracts.StateActive: {
|
||||
sessioncontracts.StateDetached: {},
|
||||
sessioncontracts.StateReconnecting: {},
|
||||
sessioncontracts.StateFailed: {},
|
||||
sessioncontracts.StateTerminated: {},
|
||||
},
|
||||
sessioncontracts.StateDetached: {
|
||||
sessioncontracts.StateReconnecting: {},
|
||||
sessioncontracts.StateTerminated: {},
|
||||
sessioncontracts.StateFailed: {},
|
||||
},
|
||||
sessioncontracts.StateReconnecting: {
|
||||
sessioncontracts.StateActive: {},
|
||||
sessioncontracts.StateDetached: {},
|
||||
sessioncontracts.StateFailed: {},
|
||||
sessioncontracts.StateTerminated: {},
|
||||
},
|
||||
}
|
||||
|
||||
func validateTransition(from, to sessioncontracts.State) error {
|
||||
if from == to {
|
||||
return nil
|
||||
}
|
||||
if allowed, ok := allowedTransitions[from]; ok {
|
||||
if _, ok := allowed[to]; ok {
|
||||
return nil
|
||||
}
|
||||
}
|
||||
return fmt.Errorf("invalid session state transition: %s -> %s", from, to)
|
||||
}
|
||||
Reference in New Issue
Block a user