github.com/celestiaorg/celestia-node@v0.15.0-beta.1/nodebuilder/share/config.go (about)

     1  package share
     2  
     3  import (
     4  	"fmt"
     5  
     6  	"github.com/celestiaorg/celestia-node/nodebuilder/node"
     7  	"github.com/celestiaorg/celestia-node/share/availability/light"
     8  	"github.com/celestiaorg/celestia-node/share/eds"
     9  	"github.com/celestiaorg/celestia-node/share/p2p/discovery"
    10  	"github.com/celestiaorg/celestia-node/share/p2p/peers"
    11  	"github.com/celestiaorg/celestia-node/share/p2p/shrexeds"
    12  	"github.com/celestiaorg/celestia-node/share/p2p/shrexnd"
    13  )
    14  
    15  // TODO: some params are pointers and other are not, Let's fix this.
    16  type Config struct {
    17  	// EDSStoreParams sets eds store configuration parameters
    18  	EDSStoreParams *eds.Parameters
    19  
    20  	UseShareExchange bool
    21  	// ShrExEDSParams sets shrexeds client and server configuration parameters
    22  	ShrExEDSParams *shrexeds.Parameters
    23  	// ShrExNDParams sets shrexnd client and server configuration parameters
    24  	ShrExNDParams *shrexnd.Parameters
    25  	// PeerManagerParams sets peer-manager configuration parameters
    26  	PeerManagerParams peers.Parameters
    27  
    28  	LightAvailability light.Parameters `toml:",omitempty"`
    29  	Discovery         *discovery.Parameters
    30  }
    31  
    32  func DefaultConfig(tp node.Type) Config {
    33  	cfg := Config{
    34  		EDSStoreParams:    eds.DefaultParameters(),
    35  		Discovery:         discovery.DefaultParameters(),
    36  		ShrExEDSParams:    shrexeds.DefaultParameters(),
    37  		ShrExNDParams:     shrexnd.DefaultParameters(),
    38  		UseShareExchange:  true,
    39  		PeerManagerParams: peers.DefaultParameters(),
    40  	}
    41  
    42  	if tp == node.Light {
    43  		cfg.LightAvailability = light.DefaultParameters()
    44  	}
    45  
    46  	return cfg
    47  }
    48  
    49  // Validate performs basic validation of the config.
    50  func (cfg *Config) Validate(tp node.Type) error {
    51  	if tp == node.Light {
    52  		if err := cfg.LightAvailability.Validate(); err != nil {
    53  			return fmt.Errorf("nodebuilder/share: %w", err)
    54  		}
    55  	}
    56  
    57  	if err := cfg.Discovery.Validate(); err != nil {
    58  		return fmt.Errorf("nodebuilder/share: %w", err)
    59  	}
    60  
    61  	if err := cfg.ShrExNDParams.Validate(); err != nil {
    62  		return fmt.Errorf("nodebuilder/share: %w", err)
    63  	}
    64  
    65  	if err := cfg.ShrExEDSParams.Validate(); err != nil {
    66  		return fmt.Errorf("nodebuilder/share: %w", err)
    67  	}
    68  
    69  	if err := cfg.PeerManagerParams.Validate(); err != nil {
    70  		return fmt.Errorf("nodebuilder/share: %w", err)
    71  	}
    72  
    73  	return nil
    74  }