Struct NetworkPacketReceiver
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 int), write to the memory and then AppendPacket(IntPtr, ref NetworkInterfaceEndPoint, int, 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, int, AppendPacketMode) with None (default)
Inherited Members
Namespace: Unity.Networking.Transport
Assembly: Unity.Networking.Transport.dll
Syntax
public struct NetworkPacketReceiver
Properties
LastUpdateTime
Gets the value of the last update time.
Declaration
public long LastUpdateTime { get; }
Property Value
| Type | Description |
|---|---|
| long |
ReceiveErrorCode
Sets the value of the receive error code
Declaration
public int ReceiveErrorCode { set; }
Property Value
| Type | Description |
|---|---|
| int |
Methods
AllocateMemory(ref int)
Calls NetworkDriver's AllocateMemory(ref int)
Declaration
public IntPtr AllocateMemory(ref int dataLen)
Parameters
| Type | Name | Description |
|---|---|---|
| int | dataLen | Size of memory to allocate in bytes. Must be > 0 |
Returns
| Type | Description |
|---|---|
| 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) |
AppendPacket(IntPtr, ref NetworkInterfaceEndPoint, int, AppendPacketMode)
When data is received this function should be called to pass it inside NetworkDriver
Declaration
public bool AppendPacket(IntPtr data, ref NetworkInterfaceEndPoint address, int dataLen, NetworkPacketReceiver.AppendPacketMode mode = AppendPacketMode.None)
Parameters
| Type | Name | Description |
|---|---|---|
| IntPtr | data | Pointer to the data. If it is pointer to data that was received with AllocateMemory(ref int) make sure mode is NoCopyNeeded> |
| NetworkInterfaceEndPoint | address | Address where data was received from |
| int | dataLen | Length of data in bytes |
| NetworkPacketReceiver.AppendPacketMode | mode | Extra flags, like NoCopyNeeded that means - no copy is needed, data is already in NetworkDriver's data stream |
Returns
| Type | Description |
|---|---|
| bool | True if no errors |
IsAddressUsed(NetworkInterfaceEndPoint)
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.
Declaration
public bool IsAddressUsed(NetworkInterfaceEndPoint address)
Parameters
| Type | Name | Description |
|---|---|---|
| NetworkInterfaceEndPoint | address | Address to check. |
Returns
| Type | Description |
|---|---|
| bool | Whether the address is used or not. |