forked from p53841790/wheat-cache
41 lines
873 B
Go
41 lines
873 B
Go
package single
|
|
|
|
import (
|
|
"time"
|
|
|
|
"gitee.com/timedb/wheatCache/pkg/event"
|
|
"gitee.com/timedb/wheatCache/pkg/lru"
|
|
"gitee.com/timedb/wheatCache/pkg/proto"
|
|
"gitee.com/timedb/wheatCache/storage/dao"
|
|
"github.com/spf13/viper"
|
|
)
|
|
|
|
type serverSingle struct {
|
|
middleProduce event.ProduceInterface
|
|
lruProduce event.ProduceInterface
|
|
timeOut time.Duration
|
|
lruCache *lru.SingleCache
|
|
dao *dao.Dao
|
|
}
|
|
|
|
func NewServer() proto.CommServerServer {
|
|
oneSingleServer.Do(func() {
|
|
timeOut := viper.GetInt("storage.timeOut")
|
|
if timeOut == 0 {
|
|
timeOut = timeOutDefault
|
|
}
|
|
|
|
lruCache := lru.NewLRUCache()
|
|
|
|
ser := &serverSingle{
|
|
lruCache: lruCache,
|
|
lruProduce: event.NewProduce(lruCache.GetDriver()),
|
|
timeOut: time.Duration(timeOut) * time.Second,
|
|
dao: dao.NewDao(lruCache),
|
|
}
|
|
sysSingleServer = ser
|
|
|
|
})
|
|
return sysSingleServer
|
|
}
|