Unexport UDPConn as it is no longer needed externally.

This commit is contained in:
Bruce Marriner 2016-03-17 14:39:55 -05:00
parent 55274d30bd
commit 3ffbbdcc56
2 changed files with 21 additions and 21 deletions

View file

@ -30,6 +30,7 @@ import (
// A VoiceConnectionConnection struct holds all the data and functions related to a Discord Voice Connection. // A VoiceConnectionConnection struct holds all the data and functions related to a Discord Voice Connection.
type VoiceConnection struct { type VoiceConnection struct {
sync.Mutex sync.Mutex
Debug bool // If true, print extra logging Debug bool // If true, print extra logging
Ready bool // If true, voice is ready to send/receive audio Ready bool // If true, voice is ready to send/receive audio
GuildID string GuildID string
@ -44,7 +45,7 @@ type VoiceConnection struct {
// FrameSize int // This can be used to set the FrameSize of Opus data // FrameSize int // This can be used to set the FrameSize of Opus data
wsConn *websocket.Conn wsConn *websocket.Conn
UDPConn *net.UDPConn // this will become unexported soon. udpConn *net.UDPConn
session *Session session *Session
sessionID string sessionID string
@ -227,12 +228,12 @@ func (v *VoiceConnection) Close() {
v.close = nil v.close = nil
} }
if v.UDPConn != nil { if v.udpConn != nil {
err := v.UDPConn.Close() err := v.udpConn.Close()
if err != nil { if err != nil {
fmt.Println("error closing udp connection: ", err) fmt.Println("error closing udp connection: ", err)
} }
v.UDPConn = nil v.udpConn = nil
} }
if v.wsConn != nil { if v.wsConn != nil {
@ -314,14 +315,14 @@ func (v *VoiceConnection) wsEvent(messageType int, message []byte) {
if v.OpusSend == nil { if v.OpusSend == nil {
v.OpusSend = make(chan []byte, 2) v.OpusSend = make(chan []byte, 2)
} }
go v.opusSender(v.UDPConn, v.close, v.OpusSend, 48000, 960) go v.opusSender(v.udpConn, v.close, v.OpusSend, 48000, 960)
// Start the opusReceiver // Start the opusReceiver
if v.OpusRecv == nil { if v.OpusRecv == nil {
v.OpusRecv = make(chan *Packet, 2) v.OpusRecv = make(chan *Packet, 2)
} }
go v.opusReceiver(v.UDPConn, v.close, v.OpusRecv) go v.opusReceiver(v.udpConn, v.close, v.OpusRecv)
// Send the ready event // Send the ready event
v.connected <- true v.connected <- true
@ -426,7 +427,7 @@ func (v *VoiceConnection) udpOpen() (err error) {
return fmt.Errorf("nil voice websocket") return fmt.Errorf("nil voice websocket")
} }
if v.UDPConn != nil { if v.udpConn != nil {
return fmt.Errorf("udp connection already open") return fmt.Errorf("udp connection already open")
} }
@ -446,7 +447,7 @@ func (v *VoiceConnection) udpOpen() (err error) {
return return
} }
v.UDPConn, err = net.DialUDP("udp", nil, addr) v.udpConn, err = net.DialUDP("udp", nil, addr)
if err != nil { if err != nil {
fmt.Println("udpOpen dial udp error: ", err) fmt.Println("udpOpen dial udp error: ", err)
// TODO better logging // TODO better logging
@ -457,7 +458,7 @@ func (v *VoiceConnection) udpOpen() (err error) {
// into it. Then send that over the UDP connection to Discord // into it. Then send that over the UDP connection to Discord
sb := make([]byte, 70) sb := make([]byte, 70)
binary.BigEndian.PutUint32(sb, v.OP2.SSRC) binary.BigEndian.PutUint32(sb, v.OP2.SSRC)
_, err = v.UDPConn.Write(sb) _, err = v.udpConn.Write(sb)
if err != nil { if err != nil {
fmt.Println("udpOpen udp write error : ", err) fmt.Println("udpOpen udp write error : ", err)
// TODO better logging // TODO better logging
@ -469,7 +470,7 @@ func (v *VoiceConnection) udpOpen() (err error) {
// of the response. This should be our public IP and PORT as Discord // of the response. This should be our public IP and PORT as Discord
// saw us. // saw us.
rb := make([]byte, 70) rb := make([]byte, 70)
rlen, _, err := v.UDPConn.ReadFromUDP(rb) rlen, _, err := v.udpConn.ReadFromUDP(rb)
if err != nil { if err != nil {
fmt.Println("udpOpen udp read error : ", err) fmt.Println("udpOpen udp read error : ", err)
// TODO better logging // TODO better logging
@ -503,7 +504,7 @@ func (v *VoiceConnection) udpOpen() (err error) {
} }
// start udpKeepAlive // start udpKeepAlive
go v.udpKeepAlive(v.UDPConn, v.close, 5*time.Second) go v.udpKeepAlive(v.udpConn, v.close, 5*time.Second)
// TODO: find a way to check that it fired off okay // TODO: find a way to check that it fired off okay
return return
@ -511,9 +512,9 @@ func (v *VoiceConnection) udpOpen() (err error) {
// udpKeepAlive sends a udp packet to keep the udp connection open // udpKeepAlive sends a udp packet to keep the udp connection open
// This is still a bit of a "proof of concept" // This is still a bit of a "proof of concept"
func (v *VoiceConnection) udpKeepAlive(UDPConn *net.UDPConn, close <-chan struct{}, i time.Duration) { func (v *VoiceConnection) udpKeepAlive(udpConn *net.UDPConn, close <-chan struct{}, i time.Duration) {
if UDPConn == nil || close == nil { if udpConn == nil || close == nil {
return return
} }
@ -528,7 +529,7 @@ func (v *VoiceConnection) udpKeepAlive(UDPConn *net.UDPConn, close <-chan struct
binary.LittleEndian.PutUint64(packet, sequence) binary.LittleEndian.PutUint64(packet, sequence)
sequence++ sequence++
_, err = UDPConn.Write(packet) _, err = udpConn.Write(packet)
if err != nil { if err != nil {
fmt.Println("udpKeepAlive udp write error : ", err) fmt.Println("udpKeepAlive udp write error : ", err)
return return
@ -545,9 +546,9 @@ func (v *VoiceConnection) udpKeepAlive(UDPConn *net.UDPConn, close <-chan struct
// opusSender will listen on the given channel and send any // opusSender will listen on the given channel and send any
// pre-encoded opus audio to Discord. Supposedly. // pre-encoded opus audio to Discord. Supposedly.
func (v *VoiceConnection) opusSender(UDPConn *net.UDPConn, close <-chan struct{}, opus <-chan []byte, rate, size int) { func (v *VoiceConnection) opusSender(udpConn *net.UDPConn, close <-chan struct{}, opus <-chan []byte, rate, size int) {
if UDPConn == nil || close == nil { if udpConn == nil || close == nil {
return return
} }
@ -601,7 +602,7 @@ func (v *VoiceConnection) opusSender(UDPConn *net.UDPConn, close <-chan struct{}
case <-ticker.C: case <-ticker.C:
// continue // continue
} }
_, err := UDPConn.Write(sendbuf) _, err := udpConn.Write(sendbuf)
if err != nil { if err != nil {
fmt.Println("error writing to udp connection: ", err) fmt.Println("error writing to udp connection: ", err)
@ -635,9 +636,9 @@ type Packet struct {
// opusReceiver listens on the UDP socket for incoming packets // opusReceiver listens on the UDP socket for incoming packets
// and sends them across the given channel // and sends them across the given channel
// NOTE :: This function may change names later. // NOTE :: This function may change names later.
func (v *VoiceConnection) opusReceiver(UDPConn *net.UDPConn, close <-chan struct{}, c chan *Packet) { func (v *VoiceConnection) opusReceiver(udpConn *net.UDPConn, close <-chan struct{}, c chan *Packet) {
if UDPConn == nil || close == nil { if udpConn == nil || close == nil {
return return
} }
@ -646,7 +647,7 @@ func (v *VoiceConnection) opusReceiver(UDPConn *net.UDPConn, close <-chan struct
var nonce [24]byte var nonce [24]byte
for { for {
rlen, err := UDPConn.Read(recvbuf) rlen, err := udpConn.Read(recvbuf)
if err != nil { if err != nil {
fmt.Println("opusReceiver UDP Read error:", err) fmt.Println("opusReceiver UDP Read error:", err)
return return

View file

@ -352,7 +352,6 @@ func (s *Session) ChannelVoiceJoin(gID, cID string, mute, deaf bool) (voice *Voi
// Create a new voice session // Create a new voice session
// TODO review what all these things are for.... // TODO review what all these things are for....
voice = &VoiceConnection{ voice = &VoiceConnection{
Receive: true,
session: s, session: s,
connected: make(chan bool), connected: make(chan bool),
sessionRecv: make(chan string), sessionRecv: make(chan string),