https://github.com/nahratzah/ilias_net2
Soft real time network library over udp.
https://github.com/nahratzah/ilias_net2
Last synced: about 1 month ago
JSON representation
Soft real time network library over udp.
- Host: GitHub
- URL: https://github.com/nahratzah/ilias_net2
- Owner: nahratzah
- Created: 2012-10-08T03:41:22.000Z (over 12 years ago)
- Default Branch: master
- Last Pushed: 2012-12-04T21:27:56.000Z (over 12 years ago)
- Last Synced: 2023-03-29T13:41:26.229Z (about 2 years ago)
- Language: C
- Size: 5.52 MB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README
Awesome Lists containing this project
README
net2: replace old net library.
Because the old code did too many things at once and got too complicated.Bottom layer: net2_connection
Deals with input and output.
The bottom layer receives data, sends data.
It invokes callbacks to get new data.
It detects transmission loss, but does not handle retransmit.
It guarantees at-most-once delivery.
The delivery and data acquisition happen from an acceptor object.
Performs measurement of bandwidth, packet loss.Middle layer: net2_windowmanager
Deals with reliability and scheduling.
Provides multiplexing (many windows can exist in a single connection).
Allows packets to be revoked either manually or automatically.
Performs datagram fragmentation and reassembly.
Provides barriers, where anything before the barrier will be received prior to
anything after the barrier.
Provides streaming capability.
Provides deadline scheduler, where a best attempt will be made to deliver
a packet (and thus anything of a prior barrier too) before a timer expires.
This may cause the packet to be sent multiple times, to reduce the chance
of packet loss.Top layer: net2_objmanager
Deals with objects and remote procedure invocation.
Connects objects and windows together.
Handles remote procedure result handling (usually invoking a callback provided
for this result at invocation time).
Handles object set transfer between nodes (subject to constraints in the
involved objects).Negotiation:
- a new connection acquires object ID 1, which is the connection meta object
- a new connection acquires windows ID 1, which is the meta window
The meta object controls the connection.
The meta window maintains communication between the local and remote metas.
The meta object and window are created at connection creation.