package dbm import ( json_dataModels "github.com/tecamino/tecamino-json_data/models" ) func (d *DBMHandler) Subscribe(subs []json_dataModels.Subscribe, id, id2 string) { if subs == nil { return } d.RLock() defer d.RUnlock() r := json_dataModels.NewResponse() r.Id = id2 for _, sub := range subs { for _, dp := range d.DB.QueryDatapoints(sub.Depth, sub.Path) { if sub.Driver != "" { if dp.Drivers == nil || dp.Drivers[sub.Driver] == nil { continue } } dp.AddSubscribtion(id, sub) r.AddSubscription(json_dataModels.Subscribe{ Uuid: dp.Uuid, Path: dp.Path, Value: dp.Value, Driver: sub.Driver, Drivers: &dp.Drivers, }) } } if err := d.Conns.SendResponse(id, r); err != nil { d.Log.Error("subscribe.Subscribe", err.Error()) } } func (d *DBMHandler) Unsubscribe(subs []json_dataModels.Subscribe, id string) { if subs == nil { return } d.RLock() defer d.RUnlock() r := json_dataModels.NewResponse() for _, sub := range subs { for _, dp := range d.DB.QueryDatapoints(sub.Depth, sub.Path) { if _, ok := dp.Subscriptions[id]; !ok { continue } dp.RemoveSubscribtion(id) r.AddUnsubscription(json_dataModels.Subscribe{ Uuid: dp.Uuid, Path: dp.Path, }) } } if err := d.Conns.SendResponse(id, r); err != nil { d.Log.Error("subscribe.Unsubscribe", err.Error()) } }