...

Source file src/go.opencensus.io/tag/metadata.go

Documentation: go.opencensus.io/tag

     1  // Copyright 2019, OpenCensus Authors
     2  //
     3  // Licensed under the Apache License, Version 2.0 (the "License");
     4  // you may not use this file except in compliance with the License.
     5  // You may obtain a copy of the License at
     6  //
     7  //     http://www.apache.org/licenses/LICENSE-2.0
     8  //
     9  // Unless required by applicable law or agreed to in writing, software
    10  // distributed under the License is distributed on an "AS IS" BASIS,
    11  // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    12  // See the License for the specific language governing permissions and
    13  // limitations under the License.
    14  //
    15  
    16  package tag
    17  
    18  const (
    19  	// valueTTLNoPropagation prevents tag from propagating.
    20  	valueTTLNoPropagation = 0
    21  
    22  	// valueTTLUnlimitedPropagation allows tag to propagate without any limits on number of hops.
    23  	valueTTLUnlimitedPropagation = -1
    24  )
    25  
    26  // TTL is metadata that specifies number of hops a tag can propagate.
    27  // Details about TTL metadata is specified at https://github.com/census-instrumentation/opencensus-specs/blob/master/tags/TagMap.md#tagmetadata
    28  type TTL struct {
    29  	ttl int
    30  }
    31  
    32  var (
    33  	// TTLUnlimitedPropagation is TTL metadata that allows tag to propagate without any limits on number of hops.
    34  	TTLUnlimitedPropagation = TTL{ttl: valueTTLUnlimitedPropagation}
    35  
    36  	// TTLNoPropagation is TTL metadata that prevents tag from propagating.
    37  	TTLNoPropagation = TTL{ttl: valueTTLNoPropagation}
    38  )
    39  
    40  type metadatas struct {
    41  	ttl TTL
    42  }
    43  
    44  // Metadata applies metadatas specified by the function.
    45  type Metadata func(*metadatas)
    46  
    47  // WithTTL applies metadata with provided ttl.
    48  func WithTTL(ttl TTL) Metadata {
    49  	return func(m *metadatas) {
    50  		m.ttl = ttl
    51  	}
    52  }
    53  

View as plain text