Changeset 203 in code for trunk/ring.go


Ignore:
Timestamp:
Apr 1, 2020, 1:48:56 PM (5 years ago)
Author:
contact
Message:

Stop ring consumers when deleting network

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/ring.go

    r138 r203  
    1717        cur       uint64
    1818        consumers []*RingConsumer
     19        closed    bool
    1920}
    2021
     
    3233        defer r.lock.Unlock()
    3334
     35        if r.closed {
     36                panic("soju: Ring.Produce called after Close")
     37        }
     38
    3439        i := int(r.cur % r.cap)
    3540        r.buffer[i] = msg
     
    4449                }
    4550        }
     51}
     52
     53func (r *Ring) Close() {
     54        r.lock.Lock()
     55        defer r.lock.Unlock()
     56
     57        if r.closed {
     58                panic("soju: Ring.Close called twice")
     59        }
     60
     61        for _, rc := range r.consumers {
     62                close(rc.ch)
     63        }
     64
     65        r.closed = true
    4666}
    4767
Note: See TracChangeset for help on using the changeset viewer.