Noble Connect
Add relays and punchthrough to Mirror or UNet
NobleConnect.Turn.AttributeProtocol Class Reference

An attribute that holds a socket ProtocolType More...

Inherits NobleConnect.Stun.Attribute.

Public Member Functions

 AttributeProtocol (AttributeType attributeType, ProtocolType protocol)
 Construct an AttributeProtocol of the provided AttributeType using the provided ProtocolType More...
 
 AttributeProtocol (AttributeType type, byte[] buffer, ref int offset)
 Construct an AttributeProtocol from the provided byte array More...
 
override void SerializeValues (BufferView buffer, ReadOnlyByteArray transactionID)
 Serializing values to payload as byte array More...
 
override ushort GetValueSize ()
 Get the serialized size of the attribute values More...
 
- Public Member Functions inherited from NobleConnect.Stun.Attribute
 Attribute (AttributeType type)
 Construct an Attribute of the provided AttributeType More...
 
 Attribute (AttributeType type, ref int offset)
 
void Serialize (BufferView buffer, ReadOnlyByteArray transactionID)
 Convert this attribute to a bunch of bytes and add them to the provided buffer More...
 
ushort GetSize ()
 

Public Attributes

readonly ProtocolType protocol = ProtocolType.Udp
 The transfer protocol More...
 
- Public Attributes inherited from NobleConnect.Stun.Attribute
readonly AttributeType attributeType
 The AttributeType of this Attribute More...
 

Additional Inherited Members

- Static Public Member Functions inherited from NobleConnect.Stun.Attribute
static ushort DeserializeLength (byte[] buffer, ref int offset)
 Read the Attribute length from a byte array. More...
 
static ushort GetNumPaddingBytes (int length)
 Calculate padding based on length More...
 
- Static Public Attributes inherited from NobleConnect.Stun.Attribute
const int HEADER_SIZE = 4
 

Detailed Description

An attribute that holds a socket ProtocolType

This will hold any ProtocolType but as per RFC 5766 Section 14.7 only UDP is ever actually used by the StunController.

0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Protocol | RFFU | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

The Protocol field specifies the desired protocol. The codepoints used in this field are taken from those allowed in the Protocol field This specification only allows the use of codepoint 17 (User Datagram Protocol). The RFFU field MUST be set to zero on transmission and MUST be ignored on reception. It is reserved for future uses.

Constructor & Destructor Documentation

◆ AttributeProtocol() [1/2]

NobleConnect.Turn.AttributeProtocol.AttributeProtocol ( AttributeType  attributeType,
ProtocolType  protocol 
)

Construct an AttributeProtocol of the provided AttributeType using the provided ProtocolType

This is called when constructing an Attribute to send to a Stun server.

Parameters
attributeType
protocol

◆ AttributeProtocol() [2/2]

NobleConnect.Turn.AttributeProtocol.AttributeProtocol ( AttributeType  type,
byte[]  buffer,
ref int  offset 
)

Construct an AttributeProtocol from the provided byte array

This is called when deserializing an AttributeProtocol received from a Stun server.

Parameters
type
buffer
offset

Member Function Documentation

◆ GetValueSize()

override ushort NobleConnect.Turn.AttributeProtocol.GetValueSize ( )
virtual

Get the serialized size of the attribute values

Returns
4

Reimplemented from NobleConnect.Stun.Attribute.

◆ SerializeValues()

override void NobleConnect.Turn.AttributeProtocol.SerializeValues ( BufferView  buffer,
ReadOnlyByteArray  transactionID 
)
virtual

Serializing values to payload as byte array

Four bytes long. First byte is the encoded protocol. The rest are 0.

Reimplemented from NobleConnect.Stun.Attribute.

Member Data Documentation

◆ protocol

readonly ProtocolType NobleConnect.Turn.AttributeProtocol.protocol = ProtocolType.Udp

The transfer protocol