Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
G
go-ipfs
概览
概览
详情
活动
周期分析
版本库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
问题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程表
图表
维基
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
jihao
go-ipfs
Commits
7b9cfda0
提交
7b9cfda0
authored
7月 04, 2018
作者:
Jeromy
提交者:
Łukasz Magiera
9月 23, 2018
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
add support for datastore plugins
License: MIT Signed-off-by:
Jeromy
<
jeromyj@gmail.com
>
上级
238bd012
隐藏空白字符变更
内嵌
并排
正在显示
3 个修改的文件
包含
37 行增加
和
2 行删除
+37
-2
datastore.go
plugin/datastore.go
+14
-0
initializer.go
plugin/loader/initializer.go
+7
-1
datastores.go
repo/fsrepo/datastores.go
+16
-1
没有找到文件。
plugin/datastore.go
0 → 100644
浏览文件 @
7b9cfda0
package
plugin
import
(
"github.com/ipfs/go-ipfs/repo/fsrepo"
)
// PluginDatastore is an interface that can be implemented to add handlers for
// for different datastores
type
PluginDatastore
interface
{
Plugin
DatastoreTypeName
()
string
DatastoreConfigParser
()
fsrepo
.
ConfigFromMap
}
plugin/loader/initializer.go
浏览文件 @
7b9cfda0
...
...
@@ -3,8 +3,9 @@ package loader
import
(
"github.com/ipfs/go-ipfs/core/coredag"
"github.com/ipfs/go-ipfs/plugin"
"g
x/ipfs/QmWLWmRVSiagqP15jczsGME1qpob6HDbtbHAY2he9W5iUo/opentracing-g
o"
"g
ithub.com/ipfs/go-ipfs/repo/fsrep
o"
"gx/ipfs/QmWLWmRVSiagqP15jczsGME1qpob6HDbtbHAY2he9W5iUo/opentracing-go"
ipld
"gx/ipfs/QmdDXJs4axxefSPgK6Y1QhpJWKuDPnGJiqgq4uncb4rFHL/go-ipld-format"
)
...
...
@@ -32,6 +33,11 @@ func run(plugins []plugin.Plugin) error {
if
err
!=
nil
{
return
err
}
case
plugin
.
PluginDatastore
:
err
:=
fsrepo
.
AddDatastoreConfigHandler
(
pl
.
DatastoreTypeName
(),
pl
.
DatastoreConfigParser
())
if
err
!=
nil
{
return
err
}
default
:
panic
(
pl
)
}
...
...
repo/fsrepo/datastores.go
浏览文件 @
7b9cfda0
...
...
@@ -36,7 +36,12 @@ type DatastoreConfig interface {
Create
(
path
string
)
(
repo
.
Datastore
,
error
)
}
// DiskSpec is the type returned by the DatastoreConfig's DiskSpec method
// DiskSpec is a minimal representation of the characteristic values of the
// datastore. If two diskspecs are the same, the loader assumes that they refer
// to exactly the same datastore. If they differ at all, it is assumed they are
// completely different datastores and a migration will be performed. Runtime
// values such as cache options or concurrency options should not be added
// here.
type
DiskSpec
map
[
string
]
interface
{}
// Bytes returns a minimal JSON encoding of the DiskSpec
...
...
@@ -68,6 +73,16 @@ func init() {
}
}
func
AddDatastoreConfigHandler
(
name
string
,
dsc
ConfigFromMap
)
error
{
_
,
ok
:=
datastores
[
name
]
if
ok
{
return
fmt
.
Errorf
(
"already have a datastore named %q"
,
name
)
}
datastores
[
name
]
=
dsc
return
nil
}
// AnyDatastoreConfig returns a DatastoreConfig from a spec based on
// the "type" parameter
func
AnyDatastoreConfig
(
params
map
[
string
]
interface
{})
(
DatastoreConfig
,
error
)
{
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论