feat: unified audio buffer + fragment reassembly fix

This commit is contained in:
Jose Luis Montañes Ojados
2026-01-16 14:19:02 +01:00
parent fb17813dcb
commit 8ef80530f6
6 changed files with 392 additions and 250 deletions

View File

@@ -2,6 +2,8 @@ package ts3client
import (
"fmt"
"log"
"strings"
"go-ts/pkg/protocol"
)
@@ -29,6 +31,34 @@ func (c *Client) GetChannel(id uint64) *Channel {
return c.channels[id]
}
// GetChannelByName returns the first channel matching the given name (case-insensitive substring match)
func (c *Client) GetChannelByName(name string) *Channel {
c.channelsMu.RLock()
defer c.channelsMu.RUnlock()
// Debug: log all available channels
log.Printf("[GetChannelByName] Searching for: %q, Available channels (%d):", name, len(c.channels))
for id, ch := range c.channels {
log.Printf("[GetChannelByName] - [%d] %q", id, ch.Name)
}
// First try exact match
for _, ch := range c.channels {
if ch.Name == name {
return ch
}
}
// Then try case-insensitive contains
nameLower := strings.ToLower(name)
for _, ch := range c.channels {
if strings.Contains(strings.ToLower(ch.Name), nameLower) {
return ch
}
}
return nil
}
// GetCurrentChannel returns the client's current channel
func (c *Client) GetCurrentChannel() *Channel {
if c.selfInfo == nil {