func getCaches(u utils.Utils, caches *sliceCache) error { if caches == nil || len(*caches) < 1 { return nil } items := make([]utils.MemoryItem, len(*caches)) for index, cache := range *caches { items[index] = utils.MemoryItem{Key: getCacheKey(cache)} } if err := u.MemoryGet(&items); err != nil { u.Errorf("u.MemoryGet(%d) error %v", len(items), err) return err } for index, item := range items { parts := strings.Split(item.Value, ";") if count, err := strconv.ParseInt(parts[0], 10, 64); err == nil { (*caches)[index].Count = count } if len(parts) >= 2 { // value with expire timestamp if exp, expErr := strconv.ParseInt(parts[1], 10, 64); expErr == nil { (*caches)[index].TtlLeft = exp - time.Now().Unix() } } utils.Verbosef(u, "services.getCaches caches[%d] = %v", index, &(*caches)[index]) } return nil }