...

Package blocksprovider

import "github.com/hyperledger/fabric/core/deliverservice/blocksprovider"
Overview
Index

Overview ▾

type BlocksDeliverer

BlocksDeliverer defines interface which actually helps to abstract the AtomicBroadcast_DeliverClient with only required method for blocks provider. This also decouples the production implementation of the gRPC stream from the code in order for the code to be more modular and testable.

type BlocksDeliverer interface {
    // Recv retrieves a response from the ordering service
    Recv() (*orderer.DeliverResponse, error)

    // Send sends an envelope to the ordering service
    Send(*common.Envelope) error
}

type BlocksProvider

BlocksProvider used to read blocks from the ordering service for specified chain it subscribed to

type BlocksProvider interface {
    // DeliverBlocks starts delivering and disseminating blocks
    DeliverBlocks()

    // Stop shutdowns blocks provider and stops delivering new blocks
    Stop()
}

func NewBlocksProvider

func NewBlocksProvider(chainID string, client StreamClient, gossip GossipServiceAdapter, mcs api.MessageCryptoService) BlocksProvider

NewBlocksProvider constructor function to create blocks deliverer instance

type GossipServiceAdapter

GossipServiceAdapter serves to provide basic functionality required from gossip service by delivery service

type GossipServiceAdapter interface {
    // PeersOfChannel returns slice with members of specified channel
    PeersOfChannel(gossipcommon.ChainID) []discovery.NetworkMember

    // AddPayload adds payload to the local state sync buffer
    AddPayload(chainID string, payload *gossip_proto.Payload) error

    // Gossip the message across the peers
    Gossip(msg *gossip_proto.GossipMessage)
}

type LedgerInfo

LedgerInfo an adapter to provide the interface to query the ledger committer for current ledger height

type LedgerInfo interface {
    // LedgerHeight returns current local ledger height
    LedgerHeight() (uint64, error)
}

type StreamClient

type StreamClient interface {
    BlocksDeliverer

    // Close closes the stream and its underlying connection
    Close()

    // Disconnect disconnects from the remote node.
    Disconnect()

    // Update the client on the last valid block number
    UpdateReceived(blockNumber uint64)
}