This repository has been archived on 2025-02-01. You can view files and clone it, but cannot push or open issues or pull requests.
eve-goclient/internals/cache.go

90 lines
2.1 KiB
Go

package internals
import (
"fmt"
"log"
"strconv"
"github.com/syndtr/goleveldb/leveldb"
)
// CacheConn -
type CacheConn struct {
CacheDB *leveldb.DB
}
// SetCache -
func (c *CacheConn) SetCache(cacheDB *leveldb.DB) {
c.CacheDB = cacheDB
}
// GetCachedDataIntSub -
func (c *CacheConn) GetCachedDataIntSub(key int32, subkey string) int32 {
return c.GetCachedDataInt(fmt.Sprintf("%d.%s", key, subkey))
}
// GetCachedDataSub -
func (c *CacheConn) GetCachedDataSub(key int32, subkey string) string {
return c.GetCachedData(fmt.Sprintf("%d.%s", key, subkey))
}
// GetCachedDataIntSub64 -
func (c *CacheConn) GetCachedDataIntSub64(key int64, subkey string) int32 {
return c.GetCachedDataInt(fmt.Sprintf("%d.%s", key, subkey))
}
// GetCachedDataSub64 -
func (c *CacheConn) GetCachedDataSub64(key int64, subkey string) string {
return c.GetCachedData(fmt.Sprintf("%d.%s", key, subkey))
}
// GetCachedDataInt -
func (c *CacheConn) GetCachedDataInt(key string) int32 {
strVal := c.GetCachedData(key)
intVal, convErr := strconv.ParseInt(strVal, 10, 32)
if convErr != nil {
return -1
}
return int32(intVal)
}
// GetCachedData -
func (c *CacheConn) GetCachedData(key string) string {
response, err := c.CacheDB.Get([]byte(key), nil)
if err != nil {
return ""
}
return string(response[:])
}
// PutCacheDataIntSub -
func (c *CacheConn) PutCacheDataIntSub(key int32, subkey string, value int32) {
c.PutCacheDataSub(key, subkey, fmt.Sprintf("%d", value))
}
// PutCacheDataSub -
func (c *CacheConn) PutCacheDataSub(key int32, subkey string, value string) {
c.PutCacheData(fmt.Sprintf("%d.%s", key, subkey), value)
}
// PutCacheDataIntSub64 -
func (c *CacheConn) PutCacheDataIntSub64(key int64, subkey string, value int32) {
c.PutCacheDataSub64(key, subkey, fmt.Sprintf("%d", value))
}
// PutCacheDataSub64 -
func (c *CacheConn) PutCacheDataSub64(key int64, subkey string, value string) {
c.PutCacheData(fmt.Sprintf("%d.%s", key, subkey), value)
}
// PutCacheData -
func (c *CacheConn) PutCacheData(key string, value string) {
err := c.CacheDB.Put([]byte(key), []byte(value), nil)
if err != nil {
log.Fatal(err)
}
}