1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
|
// Copyright 2024 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
// Package protolazy controls the lazy implementation in the protobuf runtime.
//
// The following logic determines whether lazy decoding is enabled:
// 1. Lazy decoding is enabled by default, unless the environment variable
// GOPROTODEBUG=nolazy is set.
// 2. If still on, calling protolazy.Disable() turns off lazy decoding.
// 3. If still on, proto.UnmarshalOptions's NoLazyDecoding turns off
// lazy decoding for this Unmarshal operation only.
package protolazy
import (
"google.golang.org/protobuf/internal/impl"
)
// Disable disables lazy unmarshaling of opaque messages.
//
// Messages which are still on the OPEN or HYBRID API level (see
// https://protobuf.dev/reference/go/opaque-migration/) are never lazily
// unmarshalled.
//
// Fields must be annotated with [lazy = true] in their .proto file to become
// eligible for lazy unmarshaling.
func Disable() (reenable func()) {
impl.EnableLazyUnmarshal(false)
return func() {
impl.EnableLazyUnmarshal(true)
}
}
|