delivery

package
v0.6.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 2, 2025 License: Apache-2.0 Imports: 29 Imported by: 1

Documentation

Index

Constants

View Source
const (
	// NonceSize is the default NonceSize
	NonceSize = 24
)

Variables

View Source
var (
	StartGenesis = &ab.SeekPosition{
		Type: &ab.SeekPosition_Oldest{
			Oldest: &ab.SeekOldest{},
		},
	}
)

Functions

func CreateDeliverEnvelope

func CreateDeliverEnvelope(channelID string, signingIdentity driver.SigningIdentity, cert *tls.Certificate, hasher Hasher, start *ab.SeekPosition) (*common.Envelope, error)

CreateDeliverEnvelope creates a signed envelope with SeekPosition_Newest for block

func CreateEnvelope

func CreateEnvelope(data []byte, header *common.Header, signingIdentity driver.SigningIdentity) (*common.Envelope, error)

CreateEnvelope creates a common.Envelope with given tx bytes, header, and SigningIdentity

func CreateHeader

func CreateHeader(txType common.HeaderType, channelID string, creator []byte, tlsCertHash []byte) (string, *common.Header, error)

CreateHeader creates common.Header for a token transaction tlsCertHash is for client TLS cert, only applicable when ClientAuthRequired is true

func DeliverReceive

func DeliverReceive(df DeliverFiltered, address string, txid string, eventCh chan<- TxEvent) error

func DeliverSend

func DeliverSend(df DeliverStream, envelope *common.Envelope) error

func DeliverWaitForResponse

func DeliverWaitForResponse(ctx context.Context, eventCh <-chan TxEvent, txid string) (bool, uint64, int, error)

DeliverWaitForResponse waits for either eventChan has value (i.e., response has been received) or ctx is timed out This function assumes that the eventCh is only for the specified txid If an eventCh is shared by multiple transactions, a loop should be used to listen to events from multiple transactions

func GetRandomBytes

func GetRandomBytes(len int) ([]byte, error)

GetRandomBytes returns len random looking bytes

func GetRandomNonce

func GetRandomNonce() ([]byte, error)

GetRandomNonce returns a random byte array of length NonceSize

func SeekPosition added in v0.4.1

func SeekPosition(blockNumber uint64) *ab.SeekPosition

Types

type DeliverClient

type DeliverClient interface {

	// NewDeliverFiltered returns a DeliverFiltered
	NewDeliverFiltered(ctx context.Context, opts ...grpc.CallOption) (DeliverFiltered, error)

	// NewDeliver returns a DeliverStream
	NewDeliver(ctx context.Context, opts ...grpc.CallOption) (DeliverStream, error)

	// Certificate returns tls certificate for the deliver client to peer
	Certificate() *tls.Certificate
}

DeliverClient defines the interface to create a DeliverStream client

func NewDeliverClient

func NewDeliverClient(client services.PeerClient) (DeliverClient, error)

type DeliverFiltered

type DeliverFiltered interface {
	Send(*common.Envelope) error
	Recv() (*pb.DeliverResponse, error)
	CloseSend() error
}

DeliverFiltered defines the interface that abstracts deliver filtered grpc calls to peer

type DeliverStream

type DeliverStream interface {
	Send(*common.Envelope) error
	Recv() (*pb.DeliverResponse, error)
	CloseSend() error
}

DeliverStream defines the interface that abstracts deliver grpc calls to peer

type Delivery

type Delivery struct {
	NetworkName     string
	LocalMembership driver.LocalMembership
	ConfigService   driver.ConfigService
	Services        Services
	Ledger          driver.Ledger
	// contains filtered or unexported fields
}

func New

func New(
	networkName string,
	channelConfig driver.ChannelConfig,
	hasher Hasher,
	LocalMembership driver.LocalMembership,
	ConfigService driver.ConfigService,
	PeerManager Services,
	Ledger driver.Ledger,
	callback driver.BlockCallback,
	vault Vault,
	waitForEventTimeout time.Duration,
	bufferSize int,
	tracerProvider tracing.Provider,
	_ metrics.Provider,
) (*Delivery, error)

func (*Delivery) GetStartPosition

func (d *Delivery) GetStartPosition(ctx context.Context) *ab.SeekPosition

func (*Delivery) Run

func (d *Delivery) Run(ctx context.Context) error

func (*Delivery) Start

func (d *Delivery) Start(ctx context.Context)

Start runs the delivery service in a goroutine

func (*Delivery) Stop

func (d *Delivery) Stop(err error)

type Hasher

type Hasher interface {
	Hash(msg []byte) (hash []byte, err error)
}

type Service added in v0.4.0

type Service struct {
	NetworkName     string
	LocalMembership driver.LocalMembership
	ConfigService   driver.ConfigService
	PeerManager     Services
	Ledger          driver.Ledger
	// contains filtered or unexported fields
}

func NewService added in v0.4.0

func NewService(
	channel string,
	channelConfig driver.ChannelConfig,
	hasher hash.Hasher,
	networkName string,
	localMembership driver.LocalMembership,
	configService driver.ConfigService,
	peerManager Services,
	ledger driver.Ledger,
	vault Vault,
	transactionManager driver.TransactionManager,
	callback driver.BlockCallback,
	tracerProvider tracing.Provider,
	metricsProvider metrics.Provider,
	acceptedHeaderTypes []common.HeaderType,
) (*Service, error)

func (*Service) Scan added in v0.4.0

func (c *Service) Scan(ctx context.Context, txID string, callback driver.DeliveryCallback) error

func (*Service) ScanBlock added in v0.4.0

func (c *Service) ScanBlock(ctx context.Context, callback driver.BlockCallback) error

func (*Service) ScanBlockFrom added in v0.4.1

func (c *Service) ScanBlockFrom(ctx context.Context, block driver.BlockNum, callback driver.BlockCallback) error

func (*Service) ScanFromBlock added in v0.4.1

func (c *Service) ScanFromBlock(ctx context.Context, block driver.BlockNum, callback driver.DeliveryCallback) error

func (*Service) Start added in v0.4.0

func (c *Service) Start(ctx context.Context) error

func (*Service) Stop added in v0.4.0

func (c *Service) Stop()

type Services added in v0.4.0

type Services interface {
	NewPeerClient(cc grpc.ConnectionConfig) (services.PeerClient, error)
}

type TxEvent

type TxEvent struct {
	TxID         string
	Committed    bool
	Block        uint64
	IndexInBlock int
	CommitPeer   string
	Err          error
}

TxEvent contains information for token transaction commit

type ValidationFlags added in v0.4.0

type ValidationFlags []uint8

type Vault

type Vault interface {
	// GetLastTxID returns the last transaction id committed
	GetLastTxID(ctx context.Context) (string, error)
	GetLastBlock(context.Context) (uint64, error)
}

Vault models a key-value store that can be updated by committing rwsets

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL