github.com/MetalBlockchain/metalgo@v1.11.9/vms/metervm/build_block_with_context_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 metervm 5 6 import ( 7 "context" 8 9 "github.com/MetalBlockchain/metalgo/snow/consensus/snowman" 10 "github.com/MetalBlockchain/metalgo/snow/engine/snowman/block" 11 ) 12 13 func (vm *blockVM) BuildBlockWithContext(ctx context.Context, blockCtx *block.Context) (snowman.Block, error) { 14 if vm.buildBlockVM == nil { 15 return vm.BuildBlock(ctx) 16 } 17 18 start := vm.clock.Time() 19 blk, err := vm.buildBlockVM.BuildBlockWithContext(ctx, blockCtx) 20 end := vm.clock.Time() 21 duration := float64(end.Sub(start)) 22 if err != nil { 23 vm.blockMetrics.buildBlockWithContextErr.Observe(duration) 24 return nil, err 25 } 26 vm.blockMetrics.buildBlockWithContext.Observe(duration) 27 return &meterBlock{ 28 Block: blk, 29 vm: vm, 30 }, nil 31 }