/vlib/x/net/errors.v

https://github.com/vlang/v · V · 44 lines · 38 code · 5 blank · 1 comment · 2 complexity · b36b304869007facc4dacc20589eb371 MD5 · raw file

  1. module net
  2. // Well defined errors that are returned from socket functions
  3. const (
  4. errors_base = 0
  5. err_new_socket_failed = error_with_code('net: new_socket failed to create socket', errors_base+1)
  6. err_option_not_settable = error_with_code('net: set_option_xxx option not settable', errors_base+2)
  7. err_option_wrong_type = error_with_code('net: set_option_xxx option wrong type', errors_base+3)
  8. err_port_out_of_range = error_with_code('', errors_base+5)
  9. err_no_udp_remote = error_with_code('', errors_base+6)
  10. err_connect_failed = error_with_code('net: connect failed', errors_base+7)
  11. err_connect_timed_out = error_with_code('net: connect timed out', errors_base+8)
  12. err_timed_out = error_with_code('net: op timed out', errors_base+9)
  13. err_timed_out_code = errors_base+9
  14. )
  15. pub fn socket_error(potential_code int) ?int {
  16. $if windows {
  17. if potential_code < 0 {
  18. last_error_int := C.WSAGetLastError()
  19. last_error := wsa_error(last_error_int)
  20. return error_with_code('net: socket error: ($last_error_int) $last_error', last_error)
  21. }
  22. }
  23. $else {
  24. if potential_code < 0 {
  25. last_error := error_code()
  26. return error_with_code('net: socket error: $last_error', last_error)
  27. }
  28. }
  29. return potential_code
  30. }
  31. pub fn wrap_error(error_code int) ? {
  32. $if windows {
  33. enum_error := wsa_error(error_code)
  34. return error_with_code('socket error: $enum_error', error_code)
  35. }
  36. $else {
  37. return error_with_code('net: socket error: $error_code', error_code)
  38. }
  39. }