mirror of
https://github.com/odin-lang/Odin.git
synced 2025-12-29 01:14:40 +00:00
46 lines
2.0 KiB
Odin
46 lines
2.0 KiB
Odin
/*
|
|
Copyright 2022 Tetralux <tetraluxonpc@gmail.com>
|
|
Copyright 2022 Colin Davidson <colrdavidson@gmail.com>
|
|
Copyright 2022 Jeroen van Rijn <nom@duclavier.com>.
|
|
Made available under Odin's BSD-3 license.
|
|
|
|
List of contributors:
|
|
Tetralux: Initial implementation
|
|
Colin Davidson: Linux platform code, OSX platform code, Odin-native DNS resolver
|
|
Jeroen van Rijn: Cross platform unification, code style, documentation
|
|
*/
|
|
|
|
/*
|
|
Package net implements cross-platform Berkeley Sockets, DNS resolution and associated procedures.
|
|
For other protocols and their features, see subdirectories of this package.
|
|
|
|
Features:
|
|
- Supports Windows, Linux and OSX.
|
|
- Opening and closing of TCP and UDP sockets.
|
|
- Sending to and receiving from these sockets.
|
|
- DNS name lookup, using either the OS or our own resolver.
|
|
|
|
Planned:
|
|
- Nonblocking IO
|
|
- `Connection` struct
|
|
A "fat socket" struct that remembers how you opened it, etc, instead of just being a handle.
|
|
- IP Range structs, CIDR/class ranges, netmask calculator and associated helper procedures.
|
|
- Use `context.temp_allocator` instead of stack-based arenas?
|
|
And check it's the default temp allocator or can give us 4 MiB worth of memory
|
|
without punting to the main allocator by comparing their addresses in an @(init) procedure.
|
|
Panic if this assumption is not met.
|
|
|
|
- Document assumptions about libc usage (or avoidance thereof) for each platform.
|
|
|
|
Assumptions:
|
|
- For performance reasons this package relies on the `context.temp_allocator` in some places.
|
|
|
|
You can replace the default `context.temp_allocator` with your own as long as it meets
|
|
this requirement: A minimum of 4 MiB of scratch space that's expected not to be freed.
|
|
|
|
If this expectation is not met, the package's @(init) procedure will attempt to detect
|
|
this and panic to avoid temp allocations prematurely overwriting data and garbling results,
|
|
or worse. This means that should you replace the temp allocator with an insufficient one,
|
|
we'll do our best to loudly complain the first time you try it.
|
|
*/
|
|
package net |