123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292 |
- package net
- /*
- Retrieve a platform specific error code, for when the categorized cross-platform errors are not enough.
- Platforms specific returns:
- - Darwin: `posix.Errno` (`core:sys/posix`)
- - Linux: `linux.Errno` (`core:sys/linux`)
- - FreeBSD: `freebsd.Errno` (`core:sys/freebsd`)
- - Windows: `windows.System_Error` (`core:sys/windows`)
- */
- @(require_results)
- last_platform_error :: proc() -> i32 {
- return _last_platform_error()
- }
- /*
- Retrieve a stringified version of the last platform error.
- */
- @(require_results)
- last_platform_error_string :: proc() -> string {
- return _last_platform_error_string()
- }
- set_last_platform_error :: proc(err: i32) {
- _set_last_platform_error(err)
- }
- Create_Socket_Error :: enum i32 {
- None,
- // No network connection, or the network stack is not initialized.
- Network_Unreachable,
- // Not enough space in internal tables/buffers to create a new socket, or an unsupported protocol is given.
- Insufficient_Resources,
- // Invalid/unsupported family or protocol.
- Invalid_Argument,
- // The user has no permission to create a socket of this type and/or protocol.
- Insufficient_Permissions,
- // An error unable to be categorized in above categories, `last_platform_error` may have more info.
- Unknown,
- }
- Dial_Error :: enum i32 {
- None,
- // No network connection, or the network stack is not initialized.
- Network_Unreachable,
- // Not enough space in internal tables/buffers to create a new socket, or an unsupported protocol is given.
- Insufficient_Resources,
- // Invalid endpoint and/or options.
- Invalid_Argument,
- // An attempt was made to connect to a broadcast socket on a socket that doesn't support it.
- Broadcast_Not_Supported,
- // The socket is already connected.
- Already_Connected,
- // The socket is already in the progress of making a connection.
- Already_Connecting,
- // The address is already in use.
- Address_In_Use,
- // Could not reach the remote host.
- Host_Unreachable,
- // The remote host refused the connection or isn't listening.
- Refused,
- // The connection was reset by the remote host.
- Reset,
- // Timed out before making a connection.
- Timeout,
- // Non-blocking socket that would need to block waiting to connect.
- Would_Block,
- // Interrupted by a signal or other method of cancellation like WSACancelBlockingCall on Windows.
- Interrupted,
- // Endpoint given without a port, which is required.
- Port_Required,
- // An error unable to be categorized in above categories, `last_platform_error` may have more info.
- Unknown,
- }
- Bind_Error :: enum i32 {
- None,
- // No network connection, or the network stack is not initialized.
- Network_Unreachable,
- // Not enough space in internal tables/buffers to create a new socket, or an unsupported protocol is given.
- Insufficient_Resources,
- // Invalid socket or endpoint, or invalid combination of the two.
- Invalid_Argument,
- // The socket is already bound to an address.
- Already_Bound,
- // The address is protected and the current user has insufficient permissions to access it.
- Insufficient_Permissions_For_Address,
- // The address is already in use.
- Address_In_Use,
- // An error unable to be categorized in above categories, `last_platform_error` may have more info.
- Unknown,
- }
- Listen_Error :: enum i32 {
- None,
- // No network connection, or the network stack is not initialized.
- Network_Unreachable,
- // Not enough space in internal tables/buffers to create a new socket, or an unsupported protocol is given.
- Insufficient_Resources,
- // The socket or backlog is invalid.
- Invalid_Argument,
- // The socket is valid, but does not support listening.
- Unsupported_Socket,
- // The socket is already connected.
- Already_Connected,
- // The address is already in use.
- Address_In_Use,
- // An error unable to be categorized in above categories, `last_platform_error` may have more info.
- Unknown,
- }
- Accept_Error :: enum i32 {
- None,
- // No network connection, or the network stack is not initialized.
- Network_Unreachable,
- // Not enough space in internal tables/buffers to create a new socket, or an unsupported protocol is given.
- Insufficient_Resources,
- // Invalid socket, or options.
- Invalid_Argument,
- // The given socket does not support accepting connections.
- Unsupported_Socket,
- // accept called on a socket which is not listening.
- Not_Listening,
- // A connection arrived but was closed while in the listen queue.
- Aborted,
- // Timed out before being able to accept a connection.
- Timeout,
- // Non-blocking socket that would need to block waiting for a connection.
- Would_Block,
- // Interrupted by a signal or other method of cancellation like WSACancelBlockingCall on Windows.
- Interrupted,
- // An error unable to be categorized in above categories, `last_platform_error` may have more info.
- Unknown,
- }
- TCP_Recv_Error :: enum i32 {
- None,
- // No network connection, or the network stack is not initialized.
- Network_Unreachable,
- // Not enough space in internal tables/buffers to create a new socket, or an unsupported protocol is given.
- Insufficient_Resources,
- // Invalid socket or buffer given.
- Invalid_Argument,
- // The socket is not connected.
- Not_Connected,
- // Connection was closed/broken/shutdown while receiving data.
- Connection_Closed,
- // Timed out before being able to receive any data.
- Timeout,
- // Non-blocking socket that would need to block waiting on data.
- Would_Block,
- // Interrupted by a signal or other method of cancellation like WSACancelBlockingCall on Windows.
- Interrupted,
- // An error unable to be categorized in above categories, `last_platform_error` may have more info.
- Unknown,
- }
- UDP_Recv_Error :: enum i32 {
- None,
- // No network connection, or the network stack is not initialized.
- Network_Unreachable,
- // Not enough space in internal tables/buffers to create a new socket, or an unsupported protocol is given.
- Insufficient_Resources,
- // Invalid socket or buffer given.
- Invalid_Argument,
- // "Connection" was refused by remote, or closed/broken/shutdown while receiving data.
- Connection_Refused,
- // Timed out before being able to receive any data.
- Timeout,
- // Non-blocking socket that would need to block waiting on data.
- Would_Block,
- // Interrupted by a signal or other method of cancellation like WSACancelBlockingCall on Windows.
- Interrupted,
- // Linux and UDP only: indicates the buffer was too small to receive all data, and the excess is truncated and discarded.
- Excess_Truncated,
- // An error unable to be categorized in above categories, `last_platform_error` may have more info.
- Unknown,
- }
- TCP_Send_Error :: enum i32 {
- None,
- // No network connection, or the network stack is not initialized.
- Network_Unreachable,
- // Not enough space in internal tables/buffers to create a new socket, or an unsupported protocol is given.
- Insufficient_Resources,
- // Invalid socket or buffer given.
- Invalid_Argument,
- // Connection was closed/broken/shutdown while receiving data.
- Connection_Closed,
- // The socket is not connected.
- Not_Connected,
- // Could not reach the remote host.
- Host_Unreachable,
- // Timed out before being able to send any data.
- Timeout,
- // Non-blocking socket that would need to block waiting on the remote to be able to receive the data.
- Would_Block,
- // Interrupted by a signal or other method of cancellation like WSACancelBlockingCall on Windows.
- Interrupted,
- // An error unable to be categorized in above categories, `last_platform_error` may have more info.
- Unknown,
- }
- UDP_Send_Error :: enum i32 {
- None,
- // No network connection, or the network stack is not initialized.
- Network_Unreachable,
- // Not enough space in internal tables/buffers to create a new socket, or an unsupported protocol is given.
- Insufficient_Resources,
- // Invalid socket or buffer given.
- Invalid_Argument,
- // Could not reach the remote host.
- Host_Unreachable,
- // "Connection" was refused by remote, or closed/broken/shutdown while sending data.
- Connection_Refused,
- // Timed out before being able to send any data.
- Timeout,
- // Non-blocking socket that would need to block waiting on the remote to be able to receive the data.
- Would_Block,
- // Interrupted by a signal or other method of cancellation like WSACancelBlockingCall on Windows.
- Interrupted,
- // An error unable to be categorized in above categories, `last_platform_error` may have more info.
- Unknown,
- }
- Shutdown_Error :: enum i32 {
- None,
- // No network connection, or the network stack is not initialized.
- Network_Unreachable,
- // Socket is invalid or not connected, or the manner given is invalid.
- Invalid_Argument,
- // Connection was closed/aborted/shutdown.
- Connection_Closed,
- // An error unable to be categorized in above categories, `last_platform_error` may have more info.
- Unknown,
- }
- Socket_Info_Error :: enum i32 {
- None,
- // No network connection, or the network stack is not initialized.
- Network_Unreachable,
- // Not enough space in internal tables/buffers to create a new socket, or an unsupported protocol is given.
- Insufficient_Resources,
- // Socket is invalid or not connected, or the manner given is invalid.
- Invalid_Argument,
- // The socket is valid, but unsupported by this opperation.
- Unsupported_Socket,
- // Connection was closed/aborted/shutdown.
- Connection_Closed,
- // An error unable to be categorized in above categories, `last_platform_error` may have more info.
- Unknown,
- }
- Socket_Option_Error :: enum i32 {
- None,
- // No network connection, or the network stack is not initialized.
- Network_Unreachable,
- // Not enough space in internal tables/buffers to create a new socket, or an unsupported protocol is given.
- Insufficient_Resources,
- // Socket is invalid, not connected, or the connection has been closed/reset/shutdown.
- Invalid_Socket,
- // Unknown or unsupported option for the socket.
- Invalid_Option,
- // Invalid level or value.
- Invalid_Value,
- // An error unable to be categorized in above categories, `last_platform_error` may have more info.
- Unknown,
- }
- Set_Blocking_Error :: enum i32 {
- None,
- // No network connection, or the network stack is not initialized.
- Network_Unreachable,
- // Socket is invalid.
- Invalid_Argument,
- // An error unable to be categorized in above categories, `last_platform_error` may have more info.
- Unknown,
- }
|