You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
40 lines
1.1 KiB
Go
40 lines
1.1 KiB
Go
6 years ago
|
package main
|
||
|
|
||
|
type ConnectionState interface {
|
||
|
// commands available while in this state
|
||
|
CommandSuite
|
||
|
|
||
|
// human-readable description of the state
|
||
|
String() string
|
||
|
|
||
|
// fills a status struct to be printed by the status command. The
|
||
|
// ConnectionState only needs to fill in things that are unique to the
|
||
|
// state itself, the common things on the connection are filled in
|
||
|
// automatically
|
||
|
FillStatus(*Connection, *status)
|
||
|
|
||
|
// Triggered once when the state is entered
|
||
|
Enter(c *Connection)
|
||
|
|
||
|
// Triggered every frame in which the state is the connection's current
|
||
|
// state. Returning a different ConnectionState transitions between states.
|
||
|
Tick(c *Connection, frame int64) ConnectionState
|
||
|
|
||
|
// Triggered once when this state has finished for that connection
|
||
|
Exit(c *Connection)
|
||
|
}
|
||
|
|
||
|
// No-op enter struct, for composing connection states that have no interesitng
|
||
|
// Enter mechanic.
|
||
|
type NopEnter struct{}
|
||
|
|
||
|
func (n NopEnter) Enter(c *Connection) {}
|
||
|
|
||
|
// No-op exit struct, for composing connection states that have no interesting
|
||
|
// Exit mechanic.
|
||
|
type NopExit struct{}
|
||
|
|
||
|
func (n NopExit) Exit(c *Connection) {}
|
||
|
|
||
|
|