github.com/MetalBlockchain/metalgo@v1.11.9/snow/consensus/snowball/factory.go (about)

     1  // Copyright (C) 2019-2024, Ava Labs, Inc. All rights reserved.
     2  // See the file LICENSE for licensing terms.
     3  
     4  package snowball
     5  
     6  import "github.com/MetalBlockchain/metalgo/ids"
     7  
     8  var (
     9  	SnowballFactory  Factory = snowballFactory{}
    10  	SnowflakeFactory Factory = snowflakeFactory{}
    11  )
    12  
    13  type snowballFactory struct{}
    14  
    15  func (snowballFactory) NewNnary(params Parameters, choice ids.ID) Nnary {
    16  	sb := newNnarySnowball(params.AlphaPreference, newSingleTerminationCondition(params.AlphaConfidence, params.Beta), choice)
    17  	return &sb
    18  }
    19  
    20  func (snowballFactory) NewUnary(params Parameters) Unary {
    21  	sb := newUnarySnowball(params.AlphaPreference, newSingleTerminationCondition(params.AlphaConfidence, params.Beta))
    22  	return &sb
    23  }
    24  
    25  type snowflakeFactory struct{}
    26  
    27  func (snowflakeFactory) NewNnary(params Parameters, choice ids.ID) Nnary {
    28  	sf := newNnarySnowflake(params.AlphaPreference, newSingleTerminationCondition(params.AlphaConfidence, params.Beta), choice)
    29  	return &sf
    30  }
    31  
    32  func (snowflakeFactory) NewUnary(params Parameters) Unary {
    33  	sf := newUnarySnowflake(params.AlphaPreference, newSingleTerminationCondition(params.AlphaConfidence, params.Beta))
    34  	return &sf
    35  }