go.temporal.io/server@v1.23.0/common/tasks/priority.go (about) 1 // The MIT License 2 // 3 // Copyright (c) 2020 Temporal Technologies Inc. All rights reserved. 4 // 5 // Copyright (c) 2020 Uber Technologies, Inc. 6 // 7 // Permission is hereby granted, free of charge, to any person obtaining a copy 8 // of this software and associated documentation files (the "Software"), to deal 9 // in the Software without restriction, including without limitation the rights 10 // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 11 // copies of the Software, and to permit persons to whom the Software is 12 // furnished to do so, subject to the following conditions: 13 // 14 // The above copyright notice and this permission notice shall be included in 15 // all copies or substantial portions of the Software. 16 // 17 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 18 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 19 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 20 // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 21 // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 22 // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 23 // THE SOFTWARE. 24 25 package tasks 26 27 import "strconv" 28 29 type ( 30 Priority int 31 ) 32 33 const ( 34 numBitsPerLevel = 3 35 ) 36 37 const ( 38 highPriorityClass Priority = iota << numBitsPerLevel 39 mediumPriorityClass 40 lowPriorityClass 41 ) 42 43 const ( 44 highPrioritySubclass Priority = iota 45 mediumPrioritySubclass 46 lowPrioritySubclass 47 ) 48 49 var ( 50 PriorityHigh = getPriority(highPriorityClass, mediumPrioritySubclass) 51 PriorityLow = getPriority(lowPriorityClass, mediumPrioritySubclass) 52 ) 53 54 var ( 55 PriorityName = map[Priority]string{ 56 PriorityHigh: "high", 57 PriorityLow: "low", 58 } 59 60 PriorityValue = map[string]Priority{ 61 "high": PriorityHigh, 62 "low": PriorityLow, 63 } 64 ) 65 66 func (p Priority) String() string { 67 s, ok := PriorityName[p] 68 if ok { 69 return s 70 } 71 return strconv.Itoa(int(p)) 72 } 73 74 func getPriority( 75 class, subClass Priority, 76 ) Priority { 77 return class | subClass 78 }