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