Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(130)

Side by Side Diff: filter/dscache/dscache.go

Issue 1292913002: Split off serialization and key functions to their own packages. (Closed) Base URL: https://github.com/luci/gae.git@make_queries_better
Patch Set: rebase Created 5 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | filter/dscache/dscache_test.go » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 package dscache 5 package dscache
6 6
7 import ( 7 import (
8 "bytes" 8 "bytes"
9 "crypto/sha1" 9 "crypto/sha1"
10 "encoding/base64" 10 "encoding/base64"
11 "fmt" 11 "fmt"
12 "time" 12 "time"
13 13
14 "github.com/luci/gae/service/datastore" 14 "github.com/luci/gae/service/datastore"
15 "github.com/luci/gae/service/datastore/serialize"
15 ) 16 )
16 17
17 var ( 18 var (
18 // InstanceEnabledStatic allows you to statically (e.g. in an init() fun ction) 19 // InstanceEnabledStatic allows you to statically (e.g. in an init() fun ction)
19 // bypass this filter by setting it to false. This takes effect when the 20 // bypass this filter by setting it to false. This takes effect when the
20 // application calls IsGloballyEnabled. 21 // application calls IsGloballyEnabled.
21 InstanceEnabledStatic = true 22 InstanceEnabledStatic = true
22 23
23 // LockTimeSeconds is the number of seconds that a "lock" memcache entry will 24 // LockTimeSeconds is the number of seconds that a "lock" memcache entry will
24 // have its expiration set to. It's set to just over half of the fronten d 25 // have its expiration set to. It's set to just over half of the fronten d
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after
98 ItemUKNONWN FlagValue = iota 99 ItemUKNONWN FlagValue = iota
99 ItemHasData 100 ItemHasData
100 ItemHasLock 101 ItemHasLock
101 ) 102 )
102 103
103 func MakeMemcacheKey(shard int, k datastore.Key) string { 104 func MakeMemcacheKey(shard int, k datastore.Key) string {
104 return fmt.Sprintf(KeyFormat, shard, HashKey(k)) 105 return fmt.Sprintf(KeyFormat, shard, HashKey(k))
105 } 106 }
106 107
107 func HashKey(k datastore.Key) string { 108 func HashKey(k datastore.Key) string {
108 » // errs can't happen, since we're using a byte buffer. 109 » dgst := sha1.Sum(serialize.ToBytes(k))
109 buf := bytes.Buffer{} 110 buf := bytes.Buffer{}
110 _ = datastore.WriteKey(&buf, datastore.WithoutContext, k)
111 dgst := sha1.Sum(buf.Bytes())
112 buf.Reset()
113 enc := base64.NewEncoder(base64.StdEncoding, &buf) 111 enc := base64.NewEncoder(base64.StdEncoding, &buf)
114 _, _ = enc.Write(dgst[:]) 112 _, _ = enc.Write(dgst[:])
115 enc.Close() 113 enc.Close()
116 return buf.String()[:buf.Len()-Sha1B64Padding] 114 return buf.String()[:buf.Len()-Sha1B64Padding]
117 } 115 }
OLDNEW
« no previous file with comments | « no previous file | filter/dscache/dscache_test.go » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698