errors.go 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. package gocql
  2. import "fmt"
  3. const (
  4. errServer = 0x0000
  5. errProtocol = 0x000A
  6. errCredentials = 0x0100
  7. errUnavailable = 0x1000
  8. errOverloaded = 0x1001
  9. errBootstrapping = 0x1002
  10. errTruncate = 0x1003
  11. errWriteTimeout = 0x1100
  12. errReadTimeout = 0x1200
  13. errSyntax = 0x2000
  14. errUnauthorized = 0x2100
  15. errInvalid = 0x2200
  16. errConfig = 0x2300
  17. errAlreadyExists = 0x2400
  18. errUnprepared = 0x2500
  19. )
  20. type RequestError interface {
  21. Code() int
  22. Message() string
  23. Error() string
  24. }
  25. type errorFrame struct {
  26. frameHeader
  27. code int
  28. message string
  29. }
  30. func (e errorFrame) Code() int {
  31. return e.code
  32. }
  33. func (e errorFrame) Message() string {
  34. return e.message
  35. }
  36. func (e errorFrame) Error() string {
  37. return e.Message()
  38. }
  39. func (e errorFrame) String() string {
  40. return fmt.Sprintf("[error code=%x message=%q]", e.code, e.message)
  41. }
  42. type RequestErrUnavailable struct {
  43. errorFrame
  44. Consistency Consistency
  45. Required int
  46. Alive int
  47. }
  48. func (e *RequestErrUnavailable) String() string {
  49. return fmt.Sprintf("[request_error_unavailable consistency=%s required=%d alive=%d]", e.Consistency, e.Required, e.Alive)
  50. }
  51. type RequestErrWriteTimeout struct {
  52. errorFrame
  53. Consistency Consistency
  54. Received int
  55. BlockFor int
  56. WriteType string
  57. }
  58. type RequestErrReadTimeout struct {
  59. errorFrame
  60. Consistency Consistency
  61. Received int
  62. BlockFor int
  63. DataPresent byte
  64. }
  65. type RequestErrAlreadyExists struct {
  66. errorFrame
  67. Keyspace string
  68. Table string
  69. }
  70. type RequestErrUnprepared struct {
  71. errorFrame
  72. StatementId []byte
  73. }