func (nDB *NetworkDB) sendTableEvent(event TableEvent_Type, nid string, tname string, key string, entry *entry) error { tEvent := TableEvent{ Type: event, LTime: entry.ltime, NodeName: nDB.config.NodeName, NetworkID: nid, TableName: tname, Key: key, Value: entry.value, } raw, err := encodeMessage(MessageTypeTableEvent, &tEvent) if err != nil { return err } var broadcastQ *memberlist.TransmitLimitedQueue nDB.RLock() thisNodeNetworks, ok := nDB.networks[nDB.config.NodeName] if ok { // The network may have been removed network, networkOk := thisNodeNetworks[nid] if !networkOk { nDB.RUnlock() return nil } broadcastQ = network.tableBroadcasts } nDB.RUnlock() // The network may have been removed if broadcastQ == nil { return nil } broadcastQ.QueueBroadcast(&tableEventMessage{ msg: raw, id: nid, tname: tname, key: key, node: nDB.config.NodeName, }) return nil }