origin dest added to reply the sender after successful reply of the target dest

master
Alex 2022-02-12 20:43:23 +01:00
parent dbc4d922aa
commit 6e3946c620
4 changed files with 14 additions and 5 deletions

View File

@ -51,8 +51,8 @@ func (mcClient *MinecraftClient) GenerateMinecraftCmdID() int {
return mcClient.CurrentCmdIDIndexByBackend
}
func (mcClient *MinecraftClient) AddMessageToSendQueue(raw []byte, cmdID int) {
mcClient.SendQueueMessages = append(mcClient.SendQueueMessages, &SendQueueMessage{MessageRaw: raw, CmdID: cmdID, TrySendCount: 0, Time: time.Now()})
func (mcClient *MinecraftClient) AddMessageToSendQueue(raw []byte, cmdID int, originDest int) {
mcClient.SendQueueMessages = append(mcClient.SendQueueMessages, &SendQueueMessage{MessageRaw: raw, CmdID: cmdID, TrySendCount: 0, OriginDest: originDest, Time: time.Now()})
}
func (mcClient *MinecraftClient) IsCmdIDInSendMessagesQueue(cmdID int) bool {

View File

@ -6,5 +6,6 @@ type SendQueueMessage struct {
MessageRaw []byte
CmdID int
TrySendCount int
OriginDest int // This value tells from which destination this message was sent. (example: voice, mobile, backend)
Time time.Time
}

View File

@ -212,7 +212,7 @@ func SendMessageToServer(dest int, playerUuid string, args string) {
}
}
func SendMessageToMinecraftServer(status int, dest int, playerUuid string, cmdNumber int, args string) error {
func SendMessageToMinecraftServer(originDest, status int, dest int, playerUuid string, cmdNumber int, args string) error {
cmdID := kraProtocol.DefaultCmdID
serverName := getMinecraftServerNameByDest(dest)
@ -237,7 +237,7 @@ func SendMessageToMinecraftServer(status int, dest int, playerUuid string, cmdNu
}
if status == kraProtocol.StatusGet {
mcClient.AddMessageToSendQueue(raw, cmdID)
mcClient.AddMessageToSendQueue(raw, cmdID, originDest)
}
return nil

View File

@ -123,7 +123,15 @@ func HandleWebMessage(isVoice bool, conn *websocket.Conn, uuid string, msg []byt
// no ack
if dest == kraProtocol.DestProxy || dest == kraProtocol.DestPlayersCurrentServer { // forwarding message to java / minecraft
err = SendMessageToMinecraftServer(status, dest, uuid, cmdNumber, args)
var originDest int
if isVoice {
originDest = kraProtocol.DestVoice
} else {
originDest = kraProtocol.DestMobile
}
err = SendMessageToMinecraftServer(originDest, status, dest, uuid, cmdNumber, args)
if err != nil {
raw := kraProtocol.EncodeWebMessage(kraProtocol.StatusErrTryAgain, cmdID, cmdNumber, args)