Simplify Peers.Pop.

This commit is contained in:
David Fifield 2020-04-23 18:14:27 -06:00
parent 17c0d0ff82
commit 3520f4e8b9

View file

@ -62,24 +62,24 @@ func (p *Peers) Collect() (Snowflake, error) {
return connection, nil return connection, nil
} }
// As part of |SnowflakeCollector| interface. // Pop blocks until an available, valid snowflake appears. Returns nil after End
// has been called.
//
// Part of |SnowflakeCollector| interface.
func (p *Peers) Pop() Snowflake { func (p *Peers) Pop() Snowflake {
// Blocks until an available, valid snowflake appears. for {
var snowflake Snowflake snowflake, ok := <-p.snowflakeChan
var ok bool
for snowflake == nil {
snowflake, ok = <-p.snowflakeChan
if !ok { if !ok {
return nil return nil
} }
conn := snowflake.(*WebRTCPeer) conn := snowflake.(*WebRTCPeer)
if conn.closed { if conn.closed {
snowflake = nil continue
} }
// Set to use the same rate-limited traffic logger to keep consistency.
conn.BytesLogger = p.BytesLogger
return conn
} }
// Set to use the same rate-limited traffic logger to keep consistency.
snowflake.(*WebRTCPeer).BytesLogger = p.BytesLogger
return snowflake
} }
// As part of |SnowflakeCollector| interface. // As part of |SnowflakeCollector| interface.