give each mc client a destination number when connecting
parent
194d5f4510
commit
33e5f71f8e
|
@ -11,6 +11,7 @@ import (
|
|||
|
||||
type MinecraftClient struct {
|
||||
Name string
|
||||
Dest int
|
||||
Conn *websocket.Conn
|
||||
connMu sync.Mutex
|
||||
CmdIDs []int // cache for received cmdIDs
|
||||
|
|
|
@ -171,8 +171,8 @@ func HandleMinecraftMessage(conn *websocket.Conn, msg []byte) {
|
|||
|
||||
raw = kraProtocol.EncodeWebMessage(kraProtocol.StatusGet, webCmdID, cmdNumber, args)
|
||||
|
||||
if dest == kraProtocol.DestVoice {
|
||||
webClient.SendVoiceQueueMessages = append(webClient.SendVoiceQueueMessages, &structs.SendQueueMessage{MessageRaw: raw, CmdID: webCmdID, TrySendCount: 0, Time: time.Now()})
|
||||
if dest == kraProtocol.DestVoice { // TODO: correct dest
|
||||
webClient.SendVoiceQueueMessages = append(webClient.SendVoiceQueueMessages, &structs.SendQueueMessage{MessageRaw: raw, CmdID: webCmdID, TrySendCount: 0, OriginDest: 111111, OriginCmdID: cmdID, Time: time.Now()})
|
||||
} else {
|
||||
webClient.SendMobileQueueMessages = append(webClient.SendMobileQueueMessages, &structs.SendQueueMessage{MessageRaw: raw, CmdID: webCmdID, TrySendCount: 0, Time: time.Now()})
|
||||
}
|
||||
|
@ -295,3 +295,32 @@ func SendMessageToMinecraftServer(originDest int, originCmdID int, status int, d
|
|||
|
||||
return nil
|
||||
}
|
||||
|
||||
func GenerateDestForNewMinecraftClient() int {
|
||||
availableDestFound := false
|
||||
newDest := 10
|
||||
|
||||
for !availableDestFound {
|
||||
if isDestInUsageFromOneMinecraftClient(newDest) {
|
||||
logger.Minecraft.Debugln("found dest", newDest)
|
||||
availableDestFound = true
|
||||
} else {
|
||||
logger.Minecraft.Debugln("count dest up")
|
||||
newDest++
|
||||
}
|
||||
}
|
||||
|
||||
logger.Minecraft.Debugln("finally found this dest", newDest)
|
||||
|
||||
return newDest
|
||||
}
|
||||
|
||||
func isDestInUsageFromOneMinecraftClient(dest int) bool {
|
||||
for _, mcClient := range cache.MinecraftClients {
|
||||
if mcClient.Dest == dest {
|
||||
return true
|
||||
}
|
||||
}
|
||||
|
||||
return false
|
||||
}
|
||||
|
|
|
@ -18,7 +18,7 @@ func RunHub() {
|
|||
case connection := <-register:
|
||||
servername := connection.Query("s")
|
||||
|
||||
cache.MinecraftClients[servername] = &structs.MinecraftClient{Name: servername, Conn: connection}
|
||||
cache.MinecraftClients[servername] = &structs.MinecraftClient{Name: servername, Dest: serverCommunication.GenerateDestForNewMinecraftClient(), Conn: connection}
|
||||
|
||||
logger.Minecraft.Debugln("connection registered ", connection.Query("c"), connection)
|
||||
|
||||
|
|
Loading…
Reference in New Issue