errno.go 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. package go_zrfu
  2. import (
  3. "fmt"
  4. )
  5. var errBehaviorMap map[uint32]string = map[uint32]string{
  6. 0x0001: "NullPointerOfHandle",
  7. 0x0002: "NullHandle",
  8. 0x0003: "InvalidHandle",
  9. 0x0004: "StaleVersionHandle",
  10. 0x0005: "HandleIndexPastEnd",
  11. 0x0006: "HandleMapWrong",
  12. 0x0007: "NullBufferPtr",
  13. 0x0008: "IOError",
  14. 0x0009: "CBORDecodeError",
  15. 0x000A: "ProcNotFound",
  16. 0x000B: "ProcRegistryNameError",
  17. 0x000C: "ProcCallerNotInit",
  18. 0x000D: "ProcCallerRepeatlyInit",
  19. 0x000E: "ArgsCBORDecodeError",
  20. 0x000F: "ReturnCBOREncodeError",
  21. 0x0010: "NoDataToEncodeCBOR",
  22. 0x0011: "NoArgsNeed",
  23. 0x0012: "NoReturnProvided",
  24. 0x0013: "CanNotGetArgs",
  25. }
  26. var errPrefixMap map[uint32]string = map[uint32]string{
  27. 0x0000_0000: "generic",
  28. 0x0001_0000: "BytesVec",
  29. 0x0002_0000: "ProcCaller",
  30. 0x0101_0000: "ProcCallBasic",
  31. 0x0102_0000: "ProcCallInput",
  32. 0x0103_0000: "ProcCallReturn",
  33. 0x0201_0000: "ProcCalling",
  34. }
  35. func CheckRetVal(retcode int32) error {
  36. if retcode >= 0 {
  37. return nil
  38. }
  39. ecode := uint32(-retcode)
  40. beh := ecode & 0x0000FFFF
  41. prefix := ecode & 0xFFFF0000
  42. v1, ok := errPrefixMap[prefix]
  43. var ps string
  44. if ok {
  45. ps = v1
  46. } else {
  47. ps = "Unknown"
  48. }
  49. var bhs string
  50. v2, ok := errBehaviorMap[beh]
  51. if ok {
  52. bhs = v2
  53. } else {
  54. bhs = "Unknown"
  55. }
  56. return fmt.Errorf("zrfu calling error: %s.%s", ps, bhs)
  57. }