github.com/stampzilla/stampzilla-go@v2.0.0-rc9+incompatible/nodes/stampzilla-server/store/connections.go (about)

     1  package store
     2  
     3  import "github.com/stampzilla/stampzilla-go/nodes/stampzilla-server/models"
     4  
     5  func (store *Store) GetConnections() Connections {
     6  	store.RLock()
     7  	defer store.RUnlock()
     8  	return store.Connections
     9  }
    10  
    11  func (store *Store) Connection(id string) *models.Connection {
    12  	store.RLock()
    13  	defer store.RUnlock()
    14  	if conn, ok := store.Connections[id]; ok {
    15  		return conn
    16  	}
    17  	return nil
    18  }
    19  
    20  func (store *Store) AddOrUpdateConnection(id string, c *models.Connection) {
    21  	store.Lock()
    22  	store.Connections[id] = c
    23  	store.Unlock()
    24  
    25  	store.runCallbacks("connections")
    26  }
    27  
    28  func (store *Store) ConnectionChanged() {
    29  	store.runCallbacks("connections")
    30  }
    31  
    32  func (store *Store) RemoveConnection(id string) {
    33  	store.Lock()
    34  	delete(store.Connections, id)
    35  	for _, device := range store.Devices.All() {
    36  		if device.ID.Node == id {
    37  			device.Online = false
    38  		}
    39  	}
    40  	store.Unlock()
    41  
    42  	store.runCallbacks("connections")
    43  	store.runCallbacks("devices")
    44  }