Expirations are now based on last accessed instead of time created

This commit is contained in:
Frederick F. Kautz IV
2015-04-29 15:28:42 -07:00
parent c8db3e1c3b
commit 0da04c6f17
3 changed files with 27 additions and 1 deletions

View File

@@ -123,6 +123,7 @@ func (memory *memoryDriver) GetObject(w io.Writer, bucket string, object string)
dataSlice := data.([]byte)
objectBuffer := bytes.NewBuffer(dataSlice)
written, err := io.Copy(w, objectBuffer)
go memory.updateAccessTime(objectKey)
return written, iodine.New(err, nil)
}
}
@@ -282,6 +283,7 @@ func (memory *memoryDriver) CreateObject(bucket, key, contentType, expectedMD5Su
Md5: md5Sum,
Size: int64(totalLength),
}
newObject.lastAccessed = time.Now()
memory.lock.Lock()
if _, ok := memory.objectMetadata[objectKey]; ok == true {
memory.lock.Unlock()
@@ -503,3 +505,12 @@ func (memory *memoryDriver) expireObjects() {
}
}
}
func (memory *memoryDriver) updateAccessTime(key string) {
memory.lock.Lock()
defer memory.lock.Unlock()
if object, ok := memory.objectMetadata[key]; ok {
object.lastAccessed = time.Now()
memory.objectMetadata[key] = object
}
}