Stabilize TeamSpeak connection: implement command compression, fragmentation, and fix MAC/flags

This commit is contained in:
Jose Luis Montañes Ojados
2026-01-15 20:30:03 +01:00
parent 7a9844f977
commit 338f6d4704
7 changed files with 766 additions and 614 deletions

View File

@@ -57,3 +57,34 @@ func Escape(s string) string {
)
return r.Replace(s)
}
// Command represents a TeamSpeak 3 command for building/encoding
type Command struct {
Name string
Params map[string]string
}
func NewCommand(name string) *Command {
return &Command{
Name: name,
Params: make(map[string]string),
}
}
func (c *Command) AddParam(key, value string) {
c.Params[key] = value
}
func (c *Command) Encode() string {
var sb strings.Builder
sb.WriteString(c.Name)
for k, v := range c.Params {
sb.WriteString(" ")
sb.WriteString(k)
if v != "" {
sb.WriteString("=")
sb.WriteString(Escape(v))
}
}
return sb.String()
}