routing

package
v1.0.3 Latest Latest
Warning

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

Go to latest
Published: Mar 2, 2023 License: MIT Imports: 10 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func BuildSimpleTable added in v1.0.0

func BuildSimpleTable(bvns []string) []protocol.Route

func RouteEnvelopes added in v0.5.1

func RouteEnvelopes(routeAccount func(*url.URL) (string, error), envs ...*protocol.Envelope) (string, error)

Types

type ResponseSubmit

type ResponseSubmit struct {
	Code         uint32
	Data         []byte
	Log          string
	Info         string
	Codespace    string
	MempoolError string
}

ResponseSubmit is the response from a call to Submit.

type RouteTree added in v1.0.0

type RouteTree struct {
	// contains filtered or unexported fields
}

func NewRouteTree added in v1.0.0

func NewRouteTree(table *protocol.RoutingTable) (*RouteTree, error)

func (*RouteTree) Route added in v1.0.0

func (r *RouteTree) Route(u *url.URL) (string, error)

func (*RouteTree) RouteNr added in v1.0.0

func (r *RouteTree) RouteNr(n uint64) (string, error)

type Router

type Router interface {
	RouteAccount(*url.URL) (string, error)
	Route(...*protocol.Envelope) (string, error)
	RequestAPIv2(ctx context.Context, partitionId, method string, params, result interface{}) error
	Submit(ctx context.Context, partition string, tx *protocol.Envelope, pretend, async bool) (*ResponseSubmit, error)
}

Router defines a basic interface for routing and sending transactions.

TODO Route and Send should probably be handled separately.

type RouterInstance

type RouterInstance struct {
	// contains filtered or unexported fields
}

RouterInstance sends transactions to remote nodes via RPC calls.

func NewRouter added in v1.0.0

func NewRouter(eventBus *events.Bus, cm connections.ConnectionManager, logger log.Logger) *RouterInstance

func NewStaticRouter added in v1.0.0

func NewStaticRouter(table *protocol.RoutingTable, cm connections.ConnectionManager, logger log.Logger) (*RouterInstance, error)

NewStaticRouter returns a router that uses a static routing table

func (*RouterInstance) RequestAPIv2 added in v1.0.0

func (r *RouterInstance) RequestAPIv2(ctx context.Context, partitionId, method string, params, result interface{}) error

func (*RouterInstance) Route

func (r *RouterInstance) Route(envs ...*protocol.Envelope) (string, error)

Route routes the account using modulo routing.

func (*RouterInstance) RouteAccount added in v0.5.1

func (r *RouterInstance) RouteAccount(account *url.URL) (string, error)

func (*RouterInstance) Submit

func (r *RouterInstance) Submit(ctx context.Context, partitionId string, tx *protocol.Envelope, pretend, async bool) (*ResponseSubmit, error)

Submit submits the transaction to the specified partition. If the partition matches this network's ID, the transaction is broadcasted via the local client. Otherwise the transaction is broadcasted via an RPC client.

Jump to

Keyboard shortcuts

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