The NetworkPacketReceiver is an interface for handling received packets, needed by the INetworkInterface It either can be used in two main scenarios:
- Your API requires a pointer to memory that you own. Then you should use AllocateMemory(ref Int32), write to the memory and then AppendPacket(IntPtr, ref NetworkInterfaceEndPoint, Int32, NetworkPacketReceiver.AppendPacketMode) with NoCopyNeeded. You don't need to deallocate the memory
- Your API gives you a pointer that you don't own. In this case you should use AppendPacket(IntPtr, ref NetworkInterfaceEndPoint, Int32, NetworkPacketReceiver.AppendPacketMode) with None (default)
Gets the value of the last update time.
Sets the value of the receive error code
Calls NetworkDriver's AllocateMemory(ref Int32)
|System.Int32||dataLen||Size of memory to allocate in bytes. Must be > 0|
|System.IntPtr||Pointer to allocated memory or IntPtr.Zero if there is no space left (this function doesn't set ReceiveErrorCode! caller should decide if this is Out of memory or something else)|
When data is received this function should be called to pass it inside NetworkDriver
|System.IntPtr||data||Pointer to the data. If it is pointer to data that was received with AllocateMemory(ref Int32) make sure mode is NoCopyNeeded>|
|NetworkInterfaceEndPoint||address||Address where data was received from|
|System.Int32||dataLen||Length of in bytes|
|NetworkPacketReceiver.AppendPacketMode||mode||Extra flags, like NoCopyNeeded that means - no copy is needed, data is already in NetworkDriver's data stream|
|System.Boolean||True if no errors|
Check if an address is currently associated with a valid connection. This is mostly useful to keep interface internal lists of connections in sync with the correct state.