54 lines
893 B
Go
54 lines
893 B
Go
package entities
|
|
|
|
import "fmt"
|
|
|
|
const SERVER_VERSION = 1
|
|
|
|
type Client interface {
|
|
GetClientVersion() int
|
|
}
|
|
|
|
func NewClient(clientVersion int) (error, Client) {
|
|
|
|
isCompatible := ServerClientIsCompatibleWithClient(clientVersion)
|
|
|
|
if !isCompatible {
|
|
return fmt.Errorf("You client version %n is not compatible with the server verison %n", clientVersion, SERVER_VERSION), nil
|
|
}
|
|
|
|
client := ClientVerisonOne{
|
|
Version: clientVersion,
|
|
}
|
|
|
|
return nil, &client
|
|
|
|
}
|
|
|
|
func ServerClientIsCompatibleWithClient(clientVersion int) bool {
|
|
|
|
switch clientVersion {
|
|
case 1:
|
|
|
|
serverCompatibleVersion := []int{1}
|
|
|
|
for _, serverVersion := range serverCompatibleVersion {
|
|
if serverVersion == clientVersion {
|
|
return true
|
|
}
|
|
}
|
|
|
|
return false
|
|
default:
|
|
return false
|
|
}
|
|
|
|
}
|
|
|
|
type ClientVerisonOne struct {
|
|
Version int
|
|
}
|
|
|
|
func (c *ClientVerisonOne) GetClientVersion() int {
|
|
return c.Version
|
|
}
|