...

Source file src/golang.conradwood.net/go-easyops/common/broadcaster.go

Documentation: golang.conradwood.net/go-easyops/common

     1  package common
     2  
     3  import (
     4  	"sync"
     5  )
     6  
     7  var (
     8  	receiver_lock sync.Mutex
     9  	receivers     = make(map[string]*broadcast_receiver)
    10  )
    11  
    12  type broadcast_receiver struct {
    13  	callbacks []func()
    14  }
    15  
    16  func AddRegistryChangeReceiver(f func()) {
    17  	receiver_lock.Lock()
    18  	defer receiver_lock.Unlock()
    19  	br := receivers["REGISTRYCHANGE"]
    20  	if br == nil {
    21  		br = &broadcast_receiver{}
    22  		receivers["REGISTRYCHANGE"] = br
    23  	}
    24  	br.callbacks = append(br.callbacks, f)
    25  }
    26  
    27  func NotifyRegistryChangeListeners() {
    28  	wake("REGISTRYCHANGE")
    29  }
    30  func wake(name string) {
    31  	receiver_lock.Lock()
    32  	br := receivers[name]
    33  	receiver_lock.Unlock()
    34  	if br == nil {
    35  		return
    36  	}
    37  	for _, cb := range br.callbacks {
    38  		cb()
    39  	}
    40  }
    41  

View as plain text