• storage.go


    package storage

    import (
        "fmt"
        "os"
    )

    const DEFAULT_STORAGE_ENGINE = "bolt"  //默认存储引擎 为 bolt
    //存储引擎map集合  
    var supportedStorage = map[string]func(path string) (Storage, error){
        "kv":   openKVStorage,
        "bolt": openBoltStorage,
    }
    //存储引擎注册
    func RegisterStorageEngine(name string, fn func(path string) (Storage, error)) {
        supportedStorage[name] = fn
    }
    //存储引擎接口
    type Storage interface {
        Set(k, v []byte) error
        Get(k []byte) ([]byte, error)
        Delete(k []byte) error
        ForEach(fn func(k, v []byte) error) error
        Close() error
        WALName() string
    }
    //打开存储引擎  存储引擎 优先使用用户自定的引擎  ,默认引擎为bolt  。如果不存在 使用默认引擎
    func OpenStorage(path string) (Storage, error) {
        wse := os.Getenv("WUKONG_STORAGE_ENGINE") //默认从环境变量中  加载存储引擎
        if wse == "" {
            wse = DEFAULT_STORAGE_ENGINE
        }
    //从引擎map中获取 引擎对象
        if fn, has := supportedStorage[wse]; has {
            return fn(path)
        }
        return nil, fmt.Errorf("unsupported storage engine %v", wse)
    }

  • 相关阅读:
    Adobe Photoshop CC 2017-18.0安装教程
    Adobe After Effects 2017-14.0安装教程
    Qt之新手打包发布程序
    Qt之添加图标
    突然好想你
    设计模式—桥接
    设计模式—适配器
    设计模式—原型(附带介绍浅拷贝和深拷贝)
    设计模式—抽象工厂
    框架设计——MVC IOC
  • 原文地址:https://www.cnblogs.com/zhangboyu/p/7461664.html
Copyright © 2020-2023  润新知