syscall_nonlinux.go 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. // +build !linux appengine
  2. /*
  3. *
  4. * Copyright 2018 gRPC authors.
  5. *
  6. * Licensed under the Apache License, Version 2.0 (the "License");
  7. * you may not use this file except in compliance with the License.
  8. * You may obtain a copy of the License at
  9. *
  10. * http://www.apache.org/licenses/LICENSE-2.0
  11. *
  12. * Unless required by applicable law or agreed to in writing, software
  13. * distributed under the License is distributed on an "AS IS" BASIS,
  14. * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  15. * See the License for the specific language governing permissions and
  16. * limitations under the License.
  17. *
  18. */
  19. // Package syscall provides functionalities that grpc uses to get low-level
  20. // operating system stats/info.
  21. package syscall
  22. import (
  23. "net"
  24. "sync"
  25. "time"
  26. "google.golang.org/grpc/grpclog"
  27. )
  28. var once sync.Once
  29. var logger = grpclog.Component("core")
  30. func log() {
  31. once.Do(func() {
  32. logger.Info("CPU time info is unavailable on non-linux or appengine environment.")
  33. })
  34. }
  35. // GetCPUTime returns the how much CPU time has passed since the start of this process.
  36. // It always returns 0 under non-linux or appengine environment.
  37. func GetCPUTime() int64 {
  38. log()
  39. return 0
  40. }
  41. // Rusage is an empty struct under non-linux or appengine environment.
  42. type Rusage struct{}
  43. // GetRusage is a no-op function under non-linux or appengine environment.
  44. func GetRusage() (rusage *Rusage) {
  45. log()
  46. return nil
  47. }
  48. // CPUTimeDiff returns the differences of user CPU time and system CPU time used
  49. // between two Rusage structs. It a no-op function for non-linux or appengine environment.
  50. func CPUTimeDiff(first *Rusage, latest *Rusage) (float64, float64) {
  51. log()
  52. return 0, 0
  53. }
  54. // SetTCPUserTimeout is a no-op function under non-linux or appengine environments
  55. func SetTCPUserTimeout(conn net.Conn, timeout time.Duration) error {
  56. log()
  57. return nil
  58. }
  59. // GetTCPUserTimeout is a no-op function under non-linux or appengine environments
  60. // a negative return value indicates the operation is not supported
  61. func GetTCPUserTimeout(conn net.Conn) (int, error) {
  62. log()
  63. return -1, nil
  64. }