Stabilize TeamSpeak connection: implement command compression, fragmentation, and fix MAC/flags
This commit is contained in:
@@ -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()
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user