Commit 509e9b4c authored by Aarsh Shah's avatar Aarsh Shah

export the Option type

parent 5e066591
......@@ -5,8 +5,8 @@ import (
"time"
)
// option is the Routing Table functional option type.
type option func(*options) error
// Option is the Routing Table functional option type.
type Option func(*options) error
// options is a structure containing all the functional options that can be used when constructing a Routing Table.
type options struct {
......@@ -19,7 +19,7 @@ type options struct {
}
// Apply applies the given options to this option.
func (o *options) Apply(opts ...option) error {
func (o *options) Apply(opts ...Option) error {
for i, opt := range opts {
if err := opt(o); err != nil {
return fmt.Errorf("routing table option %d failed: %s", i, err)
......@@ -30,7 +30,7 @@ func (o *options) Apply(opts ...option) error {
// PeerValidationFnc configures the Peer Validation function used for RT cleanup.
// Not configuring this disables Routing Table cleanup.
func PeerValidationFnc(f PeerValidationFunc) option {
func PeerValidationFnc(f PeerValidationFunc) Option {
return func(o *options) error {
o.tableCleanup.peerValidationFnc = f
return nil
......@@ -38,7 +38,7 @@ func PeerValidationFnc(f PeerValidationFunc) option {
}
// PeersForValidationFnc configures the function that will be used to select the peers that need to be validated during cleanup.
func PeersForValidationFnc(f PeerSelectionFunc) option {
func PeersForValidationFnc(f PeerSelectionFunc) Option {
return func(o *options) error {
o.tableCleanup.peersForValidationFnc = f
return nil
......@@ -46,7 +46,7 @@ func PeersForValidationFnc(f PeerSelectionFunc) option {
}
// TableCleanupInterval configures the interval between two runs of the Routing Table cleanup routine.
func TableCleanupInterval(i time.Duration) option {
func TableCleanupInterval(i time.Duration) Option {
return func(o *options) error {
o.tableCleanup.interval = i
return nil
......@@ -54,7 +54,7 @@ func TableCleanupInterval(i time.Duration) option {
}
// PeerValidationTimeout sets the timeout for a single peer validation during cleanup.
func PeerValidationTimeout(timeout time.Duration) option {
func PeerValidationTimeout(timeout time.Duration) Option {
return func(o *options) error {
o.tableCleanup.peerValidationTimeout = timeout
return nil
......@@ -79,4 +79,4 @@ var Defaults = func(o *options) error {
}
return nil
}
}
\ No newline at end of file
......@@ -87,10 +87,10 @@ type RoutingTable struct {
// NewRoutingTable creates a new routing table with a given bucketsize, local ID, and latency tolerance.
// Passing a nil PeerValidationFunc disables periodic table cleanup.
func NewRoutingTable(bucketsize int, localID ID, latency time.Duration, m peerstore.Metrics,
opts ...option) (*RoutingTable, error) {
opts ...Option) (*RoutingTable, error) {
var cfg options
if err := cfg.Apply(append([]option{Defaults}, opts...)...); err != nil {
if err := cfg.Apply(append([]Option{Defaults}, opts...)...); err != nil {
return nil, err
}
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment