OLD | NEW |
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" |
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
94 // FlagValue is used to indicate if a memcache entry currently contains an | 94 // FlagValue is used to indicate if a memcache entry currently contains an |
95 // item or a lock. | 95 // item or a lock. |
96 type FlagValue uint32 | 96 type FlagValue uint32 |
97 | 97 |
98 const ( | 98 const ( |
99 ItemUKNONWN FlagValue = iota | 99 ItemUKNONWN FlagValue = iota |
100 ItemHasData | 100 ItemHasData |
101 ItemHasLock | 101 ItemHasLock |
102 ) | 102 ) |
103 | 103 |
104 func MakeMemcacheKey(shard int, k datastore.Key) string { | 104 func MakeMemcacheKey(shard int, k *datastore.Key) string { |
105 return fmt.Sprintf(KeyFormat, shard, HashKey(k)) | 105 return fmt.Sprintf(KeyFormat, shard, HashKey(k)) |
106 } | 106 } |
107 | 107 |
108 func HashKey(k datastore.Key) string { | 108 func HashKey(k *datastore.Key) string { |
109 dgst := sha1.Sum(serialize.ToBytes(k)) | 109 dgst := sha1.Sum(serialize.ToBytes(k)) |
110 buf := bytes.Buffer{} | 110 buf := bytes.Buffer{} |
111 enc := base64.NewEncoder(base64.StdEncoding, &buf) | 111 enc := base64.NewEncoder(base64.StdEncoding, &buf) |
112 _, _ = enc.Write(dgst[:]) | 112 _, _ = enc.Write(dgst[:]) |
113 enc.Close() | 113 enc.Close() |
114 return buf.String()[:buf.Len()-Sha1B64Padding] | 114 return buf.String()[:buf.Len()-Sha1B64Padding] |
115 } | 115 } |
OLD | NEW |