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 16package tag 17 18const ( 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 28type TTL struct { 29 ttl int 30} 31 32var ( 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 40type metadatas struct { 41 ttl TTL 42} 43 44// Metadata applies metadatas specified by the function. 45type Metadata func(*metadatas) 46 47// WithTTL applies metadata with provided ttl. 48func WithTTL(ttl TTL) Metadata { 49 return func(m *metadatas) { 50 m.ttl = ttl 51 } 52} 53