Skip to content

Commit

Permalink
change some event fields to pointers, in case of absent information
Browse files Browse the repository at this point in the history
  • Loading branch information
Tim Cooper committed May 20, 2015
1 parent e12ee33 commit 7aa5107
Show file tree
Hide file tree
Showing 3 changed files with 46 additions and 24 deletions.
20 changes: 10 additions & 10 deletions gumble/event.go
Original file line number Diff line number Diff line change
Expand Up @@ -23,8 +23,8 @@ type EventListener interface {
// ConnectEvent is the event that is passed to EventListener.OnConnect.
type ConnectEvent struct {
Client *Client
WelcomeMessage string
MaximumBitrate int
WelcomeMessage *string
MaximumBitrate *int
}

// DisconnectType specifies why a Client disconnected from a server.
Expand Down Expand Up @@ -207,13 +207,13 @@ type ContextActionChangeEvent struct {
type ServerConfigEvent struct {
Client *Client

MaximumBitrate int
WelcomeMessage string
AllowHTML bool
MaximumMessageLength int
MaximumImageMessageLength int
MaximumBitrate *int
WelcomeMessage *string
AllowHTML *bool
MaximumMessageLength *int
MaximumImageMessageLength *int

SuggestVersion Version
SuggestPositional bool
SuggestPushToTalk bool
SuggestVersion *Version
SuggestPositional *bool
SuggestPushToTalk *bool
}
46 changes: 34 additions & 12 deletions gumble/handlers.go
Original file line number Diff line number Diff line change
Expand Up @@ -195,10 +195,11 @@ func (c *Client) handleServerSync(buffer []byte) error {
c.Self = c.Users[*packet.Session]
}
if packet.WelcomeText != nil {
event.WelcomeMessage = *packet.WelcomeText
event.WelcomeMessage = packet.WelcomeText
}
if packet.MaxBandwidth != nil {
event.MaximumBitrate = int(*packet.MaxBandwidth)
val := int(*packet.MaxBandwidth)
event.MaximumBitrate = &val
}
c.State = StateSynced

Expand Down Expand Up @@ -959,12 +960,25 @@ func (c *Client) handleServerConfig(buffer []byte) error {
return err
}
event := ServerConfigEvent{
Client: c,
MaximumBitrate: int(packet.GetMaxBandwidth()),
WelcomeMessage: packet.GetWelcomeText(),
AllowHTML: packet.GetAllowHtml(),
MaximumMessageLength: int(packet.GetMessageLength()),
MaximumImageMessageLength: int(packet.GetImageMessageLength()),
Client: c,
}
if packet.MaxBandwidth != nil {
val := int(*packet.MaxBandwidth)
event.MaximumBitrate = &val
}
if packet.WelcomeText != nil {
event.WelcomeMessage = packet.WelcomeText
}
if packet.AllowHtml != nil {
event.AllowHTML = packet.AllowHtml
}
if packet.MessageLength != nil {
val := int(*packet.MessageLength)
event.MaximumMessageLength = &val
}
if packet.ImageMessageLength != nil {
val := int(*packet.ImageMessageLength)
event.MaximumImageMessageLength = &val
}
c.listeners.OnServerConfig(&event)
return errUnimplementedHandler
Expand All @@ -976,10 +990,18 @@ func (c *Client) handleSuggestConfig(buffer []byte) error {
return err
}
event := ServerConfigEvent{
Client: c,
SuggestVersion: Version{Version: packet.GetVersion()},
SuggestPositional: packet.GetPositional(),
SuggestPushToTalk: packet.GetPushToTalk(),
Client: c,
}
if packet.Version != nil {
event.SuggestVersion = &Version{
Version: packet.GetVersion(),
}
}
if packet.Positional != nil {
event.SuggestPositional = packet.Positional
}
if packet.PushToTalk != nil {
event.SuggestPushToTalk = packet.PushToTalk
}
c.listeners.OnServerConfig(&event)
return errUnimplementedHandler
Expand Down
4 changes: 2 additions & 2 deletions gumbleutil/bitrate.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,10 @@ import (

var autoBitrate = &Listener{
Connect: func(e *gumble.ConnectEvent) {
if e.MaximumBitrate > 0 {
if e.MaximumBitrate != nil {
const safety = 5
interval := e.Client.Config.GetAudioInterval()
dataBytes := (e.MaximumBitrate / (8 * (int(time.Second/interval) + safety))) - 32 - 10
dataBytes := (*e.MaximumBitrate / (8 * (int(time.Second/interval) + safety))) - 32 - 10

e.Client.Config.AudioDataBytes = dataBytes
e.Client.AudioEncoder.SetBitrate(gopus.BitrateMaximum)
Expand Down

0 comments on commit 7aa5107

Please sign in to comment.