func (db *serviceClient) Cells(logger lager.Logger) (models.CellSet, error) { kvPairs, _, err := db.consulClient.KV().List(CellSchemaRoot(), nil) if err != nil { bbsErr := models.ConvertError(convertConsulError(err)) if bbsErr.Type != models.Error_ResourceNotFound { return nil, bbsErr } } if kvPairs == nil { err = consuladapter.NewPrefixNotFoundError(CellSchemaRoot()) bbsErr := models.ConvertError(convertConsulError(err)) if bbsErr.Type != models.Error_ResourceNotFound { return nil, bbsErr } } cellPresences := models.NewCellSet() for _, kvPair := range kvPairs { if kvPair.Session == "" { continue } cell := kvPair.Value presence := new(models.CellPresence) err := models.FromJSON(cell, presence) if err != nil { logger.Error("failed-to-unmarshal-cells-json", err) continue } cellPresences.Add(presence) } return cellPresences, nil }
func (db *serviceClient) CurrentBBS(logger lager.Logger) (*models.BBSPresence, error) { value, err := db.getAcquiredValue(BBSLockSchemaPath()) if err != nil { return nil, convertConsulError(err) } presence := new(models.BBSPresence) err = models.FromJSON(value, presence) if err != nil { return nil, err } return presence, nil }
func (db *serviceClient) CellById(logger lager.Logger, cellId string) (*models.CellPresence, error) { value, err := db.getAcquiredValue(CellSchemaPath(cellId)) if err != nil { return nil, convertConsulError(err) } presence := new(models.CellPresence) err = models.FromJSON(value, presence) if err != nil { return nil, models.NewError(models.Error_InvalidJSON, err.Error()) } return presence, nil }