..
实现
type UnixfsAPI CoreAPI
背景 1
type BlockAPI CoreAPI
都是对 CoreAPI
的别名。
实现 coreapi.go
// Unixfs returns the UnixfsAPI interface implementation backed by the go-ipfs node
func (api *CoreAPI) Unixfs() coreiface.UnixfsAPI {
return (*UnixfsAPI)(api)
}
// Block returns the BlockAPI interface implementation backed by the go-ipfs node
func (api *CoreAPI) Block() coreiface.BlockAPI {
return (*BlockAPI)(api)
}
其中 coreapiface.xxx
是一系列的 interface
, 如
// UnixfsAPI is the basic interface to immutable files in IPFS
// NOTE: This API is heavily WIP, things are guaranteed to break frequently
type UnixfsAPI interface {
// Add imports the data from the reader into merkledag file
//
// TODO: a long useful comment on how to use this for many different scenarios
Add(context.Context, files.Node, ...options.UnixfsAddOption) (path.Resolved, error)
// Get returns a read-only handle to a file tree referenced by a path
//
// Note that some implementations of this API may apply the specified context
// to operations performed on the returned file
Get(context.Context, path.Path) (files.Node, error)
// Ls returns the list of links in a directory. Links aren't guaranteed to be
// returned in order
Ls(context.Context, path.Path, ...options.UnixfsLsOption) (<-chan DirEntry, error)
}
而通过 type UnixfsAPI CoreAPI
后,相当于给 CoreAPI
实现了 UnixfsAPI interface
。
类似的其他 type xxx CoreAPI
,让 CoreAPI
实现多个 interface
。