github.com/MetalBlockchain/metalgo@v1.11.9/vms/tracedvm/state_syncable_vm.go (about) 1 // Copyright (C) 2019-2024, Ava Labs, Inc. All rights reserved. 2 // See the file LICENSE for licensing terms. 3 4 package tracedvm 5 6 import ( 7 "context" 8 9 "go.opentelemetry.io/otel/attribute" 10 11 "github.com/MetalBlockchain/metalgo/snow/engine/snowman/block" 12 13 oteltrace "go.opentelemetry.io/otel/trace" 14 ) 15 16 func (vm *blockVM) StateSyncEnabled(ctx context.Context) (bool, error) { 17 if vm.ssVM == nil { 18 return false, nil 19 } 20 21 ctx, span := vm.tracer.Start(ctx, vm.stateSyncEnabledTag) 22 defer span.End() 23 24 return vm.ssVM.StateSyncEnabled(ctx) 25 } 26 27 func (vm *blockVM) GetOngoingSyncStateSummary(ctx context.Context) (block.StateSummary, error) { 28 if vm.ssVM == nil { 29 return nil, block.ErrStateSyncableVMNotImplemented 30 } 31 32 ctx, span := vm.tracer.Start(ctx, vm.getOngoingSyncStateSummaryTag) 33 defer span.End() 34 35 return vm.ssVM.GetOngoingSyncStateSummary(ctx) 36 } 37 38 func (vm *blockVM) GetLastStateSummary(ctx context.Context) (block.StateSummary, error) { 39 if vm.ssVM == nil { 40 return nil, block.ErrStateSyncableVMNotImplemented 41 } 42 43 ctx, span := vm.tracer.Start(ctx, vm.getLastStateSummaryTag) 44 defer span.End() 45 46 return vm.ssVM.GetLastStateSummary(ctx) 47 } 48 49 func (vm *blockVM) ParseStateSummary(ctx context.Context, summaryBytes []byte) (block.StateSummary, error) { 50 if vm.ssVM == nil { 51 return nil, block.ErrStateSyncableVMNotImplemented 52 } 53 54 ctx, span := vm.tracer.Start(ctx, vm.parseStateSummaryTag, oteltrace.WithAttributes( 55 attribute.Int("summaryLen", len(summaryBytes)), 56 )) 57 defer span.End() 58 59 return vm.ssVM.ParseStateSummary(ctx, summaryBytes) 60 } 61 62 func (vm *blockVM) GetStateSummary(ctx context.Context, height uint64) (block.StateSummary, error) { 63 if vm.ssVM == nil { 64 return nil, block.ErrStateSyncableVMNotImplemented 65 } 66 67 ctx, span := vm.tracer.Start(ctx, vm.getStateSummaryTag, oteltrace.WithAttributes( 68 attribute.Int64("height", int64(height)), 69 )) 70 defer span.End() 71 72 return vm.ssVM.GetStateSummary(ctx, height) 73 }