func (s *Scoped) PutDone(ch <-chan *PutResult) bool {
	s.putResultListenersLock.Lock()
	l := s.putResultListeners[ch]
	delete(s.putResultListeners, ch)
	s.putResultListenersLock.Unlock()
	if l != nil {
		// Unregister the chan
		s.gun.unregisterMessageIDListener(l.id)
		// Close the message chan and the result chan
		close(l.receivedMessages)
		close(l.results)
	}
	return l != nil
}
// PutDone is called with a channel returned from Put to stop
// listening for acks and close the channel. It returns true if it actually
// stopped listening or false if it wasn't listening.
PutDone is called with a channel returned from Put to stop
listening for acks and close the channel. It returns true if it actually
stopped listening or false if it wasn't listening.
// PutDone is called with a channel returned from Put to stop // listening for acks and close the channel . It returns true if it actually // stopped listening or false if it wasn ' t listening .
func (s *Scoped) PutDone(ch <-chan *PutResult) bool {
	s.putResultListenersLock.Lock()
	l := s.putResultListeners[ch]
	delete(s.putResultListeners, ch)
	s.putResultListenersLock.Unlock()
	if l != nil {
		s.gun.unregisterMessageIDListener(l.id)
		close(l.receivedMessages)
		close(l.results)
	}
	return l != nil
}
func ( s * Scoped ) PutDone ( ch <- chan * PutResult ) bool { s . putResultListenersLock . Lock ( ) l := s . putResultListeners [ ch ] delete ( s . putResultListeners , ch ) s . putResultListenersLock . Unlock ( ) if l != nil { s . gun . unregisterMessageIDListener ( l . id ) close ( l . receivedMessages ) close ( l . results ) } return l != nil }
PutDone is called with a channel returned from Put to stop
listening for acks and close the channel.
PutDone is called with a channel returned from Put to stop listening for acks and close the channel .
// Unregister the chan // Close the message chan and the result chan