github.com/MetalBlockchain/metalgo@v1.11.9/snow/engine/common/traced_state_syncer.go (about)

     1  // Copyright (C) 2019-2024, Ava Labs, Inc. All rights reserved.
     2  // See the file LICENSE for licensing terms.
     3  
     4  package common
     5  
     6  import (
     7  	"context"
     8  
     9  	"github.com/MetalBlockchain/metalgo/trace"
    10  )
    11  
    12  var _ StateSyncer = (*tracedStateSyncer)(nil)
    13  
    14  type tracedStateSyncer struct {
    15  	Engine
    16  	stateSyncer StateSyncer
    17  	tracer      trace.Tracer
    18  }
    19  
    20  func TraceStateSyncer(stateSyncer StateSyncer, tracer trace.Tracer) StateSyncer {
    21  	return &tracedStateSyncer{
    22  		Engine:      TraceEngine(stateSyncer, tracer),
    23  		stateSyncer: stateSyncer,
    24  		tracer:      tracer,
    25  	}
    26  }
    27  
    28  func (e *tracedStateSyncer) IsEnabled(ctx context.Context) (bool, error) {
    29  	ctx, span := e.tracer.Start(ctx, "tracedStateSyncer.IsEnabled")
    30  	defer span.End()
    31  
    32  	return e.stateSyncer.IsEnabled(ctx)
    33  }