github.com/klaytn/klaytn@v1.10.2/datasync/chaindatafetcher/config.go (about)

     1  // Copyright 2020 The klaytn Authors
     2  // This file is part of the klaytn library.
     3  //
     4  // The klaytn library is free software: you can redistribute it and/or modify
     5  // it under the terms of the GNU Lesser General Public License as published by
     6  // the Free Software Foundation, either version 3 of the License, or
     7  // (at your option) any later version.
     8  //
     9  // The klaytn library is distributed in the hope that it will be useful,
    10  // but WITHOUT ANY WARRANTY; without even the implied warranty of
    11  // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
    12  // GNU Lesser General Public License for more details.
    13  //
    14  // You should have received a copy of the GNU Lesser General Public License
    15  // along with the klaytn library. If not, see <http://www.gnu.org/licenses/>.
    16  
    17  package chaindatafetcher
    18  
    19  import (
    20  	"time"
    21  
    22  	"github.com/klaytn/klaytn/datasync/chaindatafetcher/kafka"
    23  	"github.com/klaytn/klaytn/datasync/chaindatafetcher/kas"
    24  )
    25  
    26  type ChainDataFetcherMode int
    27  
    28  const (
    29  	ModeKAS = ChainDataFetcherMode(iota)
    30  	ModeKafka
    31  )
    32  
    33  const (
    34  	DefaultNumHandlers           = 10
    35  	DefaultJobChannelSize        = 50
    36  	DefaultBlockChannelSize      = 500
    37  	DefaultDBPort                = "3306"
    38  	DefaultMaxProcessingDataSize = 500 // in MB
    39  	DefaultThrottlingInterval    = 300 * time.Millisecond
    40  )
    41  
    42  //go:generate gencodec -type ChainDataFetcherConfig -formats toml -out gen_config.go
    43  type ChainDataFetcherConfig struct {
    44  	EnabledChainDataFetcher bool
    45  	Mode                    ChainDataFetcherMode
    46  	NoDefaultStart          bool
    47  	NumHandlers             int
    48  	JobChannelSize          int
    49  	BlockChannelSize        int
    50  	MaxProcessingDataSize   int
    51  
    52  	KasConfig   *kas.KASConfig `json:"-"` // Deprecated: This configuration is not used anymore.
    53  	KafkaConfig *kafka.KafkaConfig
    54  }
    55  
    56  func DefaultChainDataFetcherConfig() *ChainDataFetcherConfig {
    57  	return &ChainDataFetcherConfig{
    58  		EnabledChainDataFetcher: false,
    59  		Mode:                    ModeKAS,
    60  		NoDefaultStart:          false,
    61  		NumHandlers:             DefaultNumHandlers,
    62  		JobChannelSize:          DefaultJobChannelSize,
    63  		BlockChannelSize:        DefaultBlockChannelSize,
    64  		MaxProcessingDataSize:   DefaultMaxProcessingDataSize,
    65  
    66  		KasConfig:   kas.DefaultKASConfig,
    67  		KafkaConfig: kafka.GetDefaultKafkaConfig(),
    68  	}
    69  }