github.com/MetalBlockchain/metalgo@v1.11.9/trace/exporter_type.go (about)

     1  // Copyright (C) 2019-2024, Ava Labs, Inc. All rights reserved.
     2  // See the file LICENSE for licensing terms.
     3  
     4  package trace
     5  
     6  import (
     7  	"errors"
     8  	"fmt"
     9  	"strings"
    10  )
    11  
    12  const (
    13  	GRPC ExporterType = iota + 1
    14  	HTTP
    15  )
    16  
    17  var errUnknownExporterType = errors.New("unknown exporter type")
    18  
    19  func ExporterTypeFromString(exporterTypeStr string) (ExporterType, error) {
    20  	switch strings.ToLower(exporterTypeStr) {
    21  	case GRPC.String():
    22  		return GRPC, nil
    23  	case HTTP.String():
    24  		return HTTP, nil
    25  	default:
    26  		return 0, fmt.Errorf("%w: %q", errUnknownExporterType, exporterTypeStr)
    27  	}
    28  }
    29  
    30  type ExporterType byte
    31  
    32  func (t ExporterType) MarshalJSON() ([]byte, error) {
    33  	return []byte(`"` + t.String() + `"`), nil
    34  }
    35  
    36  func (t ExporterType) String() string {
    37  	switch t {
    38  	case GRPC:
    39  		return "grpc"
    40  	case HTTP:
    41  		return "http"
    42  	default:
    43  		return "unknown"
    44  	}
    45  }