func (rs *RedisStorage) GetDestination(key string) (dest *Destination, err error) { key = utils.DESTINATION_PREFIX + key var values []byte if values, err = rs.db.Get(key); len(values) > 0 && err == nil { b := bytes.NewBuffer(values) r, err := zlib.NewReader(b) if err != nil { return nil, err } out, err := ioutil.ReadAll(r) if err != nil { return nil, err } r.Close() dest = new(Destination) err = rs.ms.Unmarshal(out, dest) // create optimized structure for _, p := range dest.Prefixes { cache2go.CachePush(utils.DESTINATION_PREFIX+p, dest.Id) } } else { return nil, errors.New("not found") } return }
func (ms *MongoStorage) GetDestination(key string) (result *Destination, err error) { result = new(Destination) err = ms.db.C(colDst).Find(bson.M{"id": key}).One(result) if err != nil { result = nil return } // create optimized structure for _, p := range result.Prefixes { cache2go.CachePush(utils.DESTINATION_PREFIX+p, result.Id) } return }
func (ms *MapStorage) GetDestination(key string) (dest *Destination, err error) { key = DESTINATION_PREFIX + key if values, ok := ms.dict[key]; ok { b := bytes.NewBuffer(values) r, err := zlib.NewReader(b) if err != nil { return nil, err } out, err := ioutil.ReadAll(r) if err != nil { return nil, err } r.Close() dest = new(Destination) err = ms.ms.Unmarshal(out, dest) // create optimized structure for _, p := range dest.Prefixes { cache2go.CachePush(DESTINATION_PREFIX+p, dest.Id) } } else { return nil, errors.New(utils.ERR_NOT_FOUND) } return }