世界杯买球-世界杯买球APP-世界杯买球APP网站
明慧 Filecoin:莲花信得过数据处罚之供应商运挪动 | BTC公司

欢迎访问

世界杯买球-世界杯买球APP-世界杯买球APP网站
你的位置:世界杯买球-世界杯买球APP-世界杯买球APP网站 > 希望工程 > 明慧 Filecoin:莲花信得过数据处罚之供应商运挪动 | BTC公司

明慧 Filecoin:莲花信得过数据处罚之供应商运挪动 | BTC公司

时间:2022-06-02 13:20 点击:178 次

明慧 Filecoin:莲花信得过数据处罚之供应商运挪动 | BTC公司

因为 存储提供商对象被存储矿工 美国石油学会对象所依赖,是以在启动存储矿工的过程中,DI公司容器会调用 存储提供商函数(节点/模块/storageminer.go)来创建它。存储提供商函数历程如下: 调用 NewFromLibp2pHost函数,生成 StorageMarketNetwork对象。
网:=smnet。新FROMlibp2phost(h)
调用 新建土产货文献存储函数,生成 文献存储区存储对象。
存储,不实:=分段文献存储。NewLocalFileStore(piecefilestore.OsPath(r.Path()))
新建土产货文献存储函数(go-fil市集类库 文献存储/文献存储。go)历程如下:
基:=文献旅途。撤销(字符串(basedirectory))
信息,不实:=操作系统。Stat(string(base))

如若!信息。IsDir(){ 复返零,fmt。不实(%s不是基本目次) }

复返&;文献存储{string(base)},无

新建土产货文献存储函数使用的旅途为仓库目次。即碎屑的临时目次即是仓库目次。 调用 CustomDealDecisionLogic函数,复返一个函数对象。在函数对象中调用咱们提供的回调函数,进行自界说往复逻辑判断。
opt:=存储impl。CustomDealDecisionLogic(func(ctx context.context,deal-storagemarket.MinerDeal)(bool,string,error){{

})

生成并复返 存储提供商对象。
p,不实:=storageimpl。NewProvider(net,namespace.Wrap(ds,datastore.NewKey(/deals/provider)),ibs,store,pieceStore,dataTransfer,spn,address。地址(minerAddress),ffiConfig。SealProof类型,storedAsk,opt)

复返p,无

新建提供者函数处罚如下: 生成 带存储的工件对象。
carIO:=carIO。NewCarIO()
pio:=计件IO。NewPieceIOWithStore(carIO、fs、bs)
生成 供应商对象。
小时:=&;供应商{
净值:净值,
校对类型:rt,
spn:spn,
fs:fs,
pio:pio,
pieceStore:pieceStore,
conns:connmanager。NewConnManager(),
storedAsk:storedAsk,
演员:minerAddress,
数据传输:数据传输,
dealAcceptanceBuffer:DefaultDealAcceptanceBuffer,
pubSub:pubSub。新建(providerDispatcher),
}
生成 fsm公司气象组对象。
个往复,不实:=NewProviderStateMachine(
ds,
&;providerDealEnvironment{h},
h.挪动,
)

h.往复=往复

fsm公司气象组对象使用的竖立参数如下:
复返fsm。新增(ds、fsm.Parameters{
环境:env,
StateType:storagemarket。MinerDeal{},
StateKeyField:气象,
事件:ProviderState。提供事件,
StateEntryFuncs:提供设施气象。ProviderStateEntryFuncs,
最终气象:ProviderState。提供商最终气象,
奉告设施:奉告设施,
})
环境对象为 providerDealEnvironment 气象对象为 MinerDeal 气象字段为 气象 事件解除为 提供事件参考 storagemarket/impl/ProviderState/provider\\u fsm。去文献。 气象处罚函数解除 为 ProviderStateEntryFuncs气象机的气象处罚器阐述对应的气象取得到指定的函数进行处罚。 隔绝气象解除为 提供最终气象 奉告对象为 供应商对象的 打发设施。 使用竖立选项,竖立 供应商对象。
h.Configure(选项…)
建造数据传输监听对象。
数据传输。SubscribeToEvents(dtutils.ProviderDataTransferSubscriber(往复))
当首先数据传输、传输适度、传输不及时会发送 ProviderEventDataTransferInitiated、ProviderEventDataTransferCompleted、ProviderEventDataTransferFailed等事件到 fsm公司气象组。 复返 供应商对象。

在存储矿工启动过程自动调用 HandleDeals公司函数(节点/模块/storageminer.go)在这个函数中,调用 存储提供商对象的 首先设施,从而启动这个对象。

首先设施实行过程如下: 调用 StorageMarketNetwork收罗对象的 建造委派建造代理/委派为自己。

不实:=p.net。SetDelegate(p)
收罗对象的驱散为 libp2pStorageMarketNetwork结构体(storagemarket/network/libp2p\\u impl.go)它的 建造委派设施实质如下:
impl。罗致器=r
实施。主理SetStreamHandler(storagemarket.DealProtocolID,impl.handleNewDealStream)
实施。主理SetStreamHandler(storagemarket.AskProtocolID,impl.handleNewAskStream)
复返零
上头差异建造收罗对象的 handleNewDealStream设施处罚 DealProtocolID条约,暗意存储;handleNewAskStream公司设施 处罚 AskProtocolID公司条约,暗意 问

handleNewDealStream设施实质如下:

// 客户端平等id
remotePID:=s.Conn()。RemotePeer()

缓冲:=bufio。NewReaderSize(s,16)

//对流进行包装 ds:=&;dealStream{remotePID,impl.host,s,缓冲}

//调用存储提供商对象的HandleDealStream公司设施,处罚客户端存储肯求 实施。接管者HandleDealStream(ds)

在协程中调用 存储提供商对象的 再行启动往复设施,再行进行往复处罚。再行启动往复设施历程如下: 从 fsm公司气象组对象中取得总计的往复对象。
var往复[]storagemarket。MinerDeal公司
不实:=c.deals。列表(&;往复)
遍历总计的往复对象,进行底下的处罚: 如若现时去来对象也曾隔绝,则进行下一个处罚。 如若现时去来对象的贯穿也曾关闭,则进行下一个处罚。 发送运转往复事件给 fsm公司气象组。
不实=c.deals。发送(deal.ProposalId,storagemarket.ProviderVentrestart)
往复提案的 Cid公司暗意了气象机的称号/编号。 复返空值。

回到顶部
服务热线
官方网站:www.syzh.net
工作时间:周一至周六(09:00-18:00)
联系我们
QQ:74778059
邮箱:fbfd4c@www.syzh.net
地址:北京希望工程国际企业中心729号
关注公众号

Powered by 世界杯买球-世界杯买球APP-世界杯买球APP网站 RSS地图 HTML地图


世界杯买球-世界杯买球APP-世界杯买球APP网站-明慧 Filecoin:莲花信得过数据处罚之供应商运挪动 | BTC公司