CompressionAlgorithm.swift 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. /*
  2. * Copyright 2024, gRPC Authors All rights reserved.
  3. *
  4. * Licensed under the Apache License, Version 2.0 (the "License");
  5. * you may not use this file except in compliance with the License.
  6. * You may obtain a copy of the License at
  7. *
  8. * http://www.apache.org/licenses/LICENSE-2.0
  9. *
  10. * Unless required by applicable law or agreed to in writing, software
  11. * distributed under the License is distributed on an "AS IS" BASIS,
  12. * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  13. * See the License for the specific language governing permissions and
  14. * limitations under the License.
  15. */
  16. @_spi(Package) import GRPCCore
  17. extension CompressionAlgorithm {
  18. init?(name: String) {
  19. self.init(name: name[...])
  20. }
  21. init?(name: Substring) {
  22. switch name {
  23. case "gzip":
  24. self = .gzip
  25. case "deflate":
  26. self = .deflate
  27. case "identity":
  28. self = .none
  29. default:
  30. return nil
  31. }
  32. }
  33. var name: String {
  34. switch self.value {
  35. case .gzip:
  36. return "gzip"
  37. case .deflate:
  38. return "deflate"
  39. case .none:
  40. return "identity"
  41. }
  42. }
  43. }
  44. extension CompressionAlgorithmSet {
  45. var count: Int {
  46. self.rawValue.nonzeroBitCount
  47. }
  48. }