代码拉取完成,页面将自动刷新
package main
import (
"fmt"
"os"
"path"
"github.com/baetyl/baetyl-go/http"
"github.com/baetyl/baetyl-go/log"
"github.com/baetyl/baetyl-state/database"
)
//Config config of state
type Config struct {
Database database.Conf `yaml:"database" json:"database" default:"{\"driver\":\"boltdb\",\"source\":\"var/lib/baetyl/state.db\"}"`
Server http.ServerConfig `yaml:"server" json:"server"`
}
// Server server to handle message
type Server struct {
svr *http.Server
db database.DB
log *log.Logger
}
// NewServer new server
func NewServer(cfg Config) (*Server, error) {
server := &Server{
log: log.L(),
}
err := os.MkdirAll(path.Dir(cfg.Database.Source), 0755)
if err != nil {
return nil, fmt.Errorf("failed to make db directory: %s", err.Error())
}
dbConf := database.Conf{
Driver: cfg.Database.Driver,
Source: cfg.Database.Source,
}
db, err := database.New(dbConf)
if err != nil {
return nil, err
}
server.db = db
server.log.Info("db inited", log.Any("driver", dbConf.Driver), log.Any("source", dbConf.Source))
handler := NewKVHandler(db, log.With(log.Any("main", "handler")))
server.svr = http.NewServer(cfg.Server, handler.initRouter())
server.svr.Start()
return server, nil
}
// Close Close
func (s *Server) Close() {
if s.svr != nil {
s.svr.Close()
s.log.Info("server has closed")
}
if s.db != nil {
s.db.Close()
s.log.Info("db has closed")
}
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。