33 lines
1.1 KiB
Go
33 lines
1.1 KiB
Go
package levigo
|
|
|
|
// #cgo LDFLAGS: -lleveldb
|
|
// #include <stdint.h>
|
|
// #include "leveldb/c.h"
|
|
import "C"
|
|
|
|
// Cache is a cache used to store data read from data in memory.
|
|
//
|
|
// Typically, NewLRUCache is all you will need, but advanced users may
|
|
// implement their own *C.leveldb_cache_t and create a Cache.
|
|
//
|
|
// To prevent memory leaks, a Cache must have Close called on it when it is
|
|
// no longer needed by the program. Note: if the process is shutting down,
|
|
// this may not be necessary and could be avoided to shorten shutdown time.
|
|
type Cache struct {
|
|
Cache *C.leveldb_cache_t
|
|
}
|
|
|
|
// NewLRUCache creates a new Cache object with the capacity given.
|
|
//
|
|
// To prevent memory leaks, Close should be called on the Cache when the
|
|
// program no longer needs it. Note: if the process is shutting down, this may
|
|
// not be necessary and could be avoided to shorten shutdown time.
|
|
func NewLRUCache(capacity int) *Cache {
|
|
return &Cache{C.leveldb_cache_create_lru(C.size_t(capacity))}
|
|
}
|
|
|
|
// Close deallocates the underlying memory of the Cache object.
|
|
func (c *Cache) Close() {
|
|
C.leveldb_cache_destroy(c.Cache)
|
|
}
|