ENetPacketPeer

Наследует: PacketPeer < RefCounted < Object

Класс-оболочка для ENetPeer.

Описание

Реализация PacketPeer, представляющая одноранговый узел ENetConnection.

Этот класс не может быть создан напрямую, но может быть извлечен во время ENetConnection.service() или через ENetConnection.get_peers().

Примечание: При экспорте в Android обязательно включите разрешение INTERNET в предустановке экспорта Android перед экспортом проекта или использованием развертывания в один клик. В противном случае сетевое взаимодействие любого рода будет заблокировано Android.

Обучающие материалы

Методы

int

get_channels() const

int

get_packet_flags() const

String

get_remote_address() const

int

get_remote_port() const

PeerState

get_state() const

float

get_statistic(statistic: PeerStatistic)

bool

is_active() const

void

peer_disconnect(data: int = 0)

void

peer_disconnect_later(data: int = 0)

void

peer_disconnect_now(data: int = 0)

void

ping()

void

ping_interval(ping_interval: int)

void

reset()

Error

send(channel: int, packet: PackedByteArray, flags: int)

void

set_timeout(timeout: int, timeout_min: int, timeout_max: int)

void

throttle_configure(interval: int, acceleration: int, deceleration: int)


Перечисления

enum PeerState: 🔗

PeerState STATE_DISCONNECTED = 0

Узел отключен.

PeerState STATE_CONNECTING = 1

В настоящее время пир пытается подключиться.

PeerState STATE_ACKNOWLEDGING_CONNECT = 2

Пир подтвердил запрос на соединение.

PeerState STATE_CONNECTION_PENDING = 3

В настоящее время пир подключается.

PeerState STATE_CONNECTION_SUCCEEDED = 4

Пир успешно подключился, но пока не готов к взаимодействию (STATE_CONNECTED).

PeerState STATE_CONNECTED = 5

В настоящее время пир подключен и готов к коммуникации.

PeerState STATE_DISCONNECT_LATER = 6

Ожидается, что одноранговый узел отключится, когда у него больше не останется исходящих пакетов для отправки.

PeerState STATE_DISCONNECTING = 7

В настоящее время соединение с пиром отключается.

PeerState STATE_ACKNOWLEDGING_DISCONNECT = 8

Пир подтвердил запрос на отключение.

PeerState STATE_ZOMBIE = 9

Соединение с одноранговым пир было потеряно, но оно не считается полностью отключенным (поскольку одноранговый пир не подтвердил запрос на отключение).


enum PeerStatistic: 🔗

PeerStatistic PEER_PACKET_LOSS = 0

Средняя потеря надежных пакетов как отношение к PACKET_LOSS_SCALE.

PeerStatistic PEER_PACKET_LOSS_VARIANCE = 1

Коэффициент потери пакетов.

PeerStatistic PEER_PACKET_LOSS_EPOCH = 2

Время последнего обновления статистики потери пакетов (в миллисекундах с момента начала соединения). Интервал обновления статистики потери пакетов составляет 10 секунд, и с момента последнего обновления статистики должен быть отправлен хотя бы один пакет.

PeerStatistic PEER_ROUND_TRIP_TIME = 3

Среднее время прохождения пакета туда и обратно для надежных пакетов.

PeerStatistic PEER_ROUND_TRIP_TIME_VARIANCE = 4

Разница среднего времени прохождения сигнала туда и обратно.

PeerStatistic PEER_LAST_ROUND_TRIP_TIME = 5

Последнее зафиксированное время прохождения надежного пакета туда и обратно.

PeerStatistic PEER_LAST_ROUND_TRIP_TIME_VARIANCE = 6

Разница во времени последней зафиксированной поездки.

PeerStatistic PEER_PACKET_THROTTLE = 7

Текущий статус дросселя однорангового пира.

PeerStatistic PEER_PACKET_THROTTLE_LIMIT = 8

Максимальное количество ненадежных пакетов, которые не должны быть отброшены. Это значение всегда больше или равно 1. Начальное значение равно PACKET_THROTTLE_SCALE.

PeerStatistic PEER_PACKET_THROTTLE_COUNTER = 9

Внутреннее значение, используемое для увеличения счетчика дросселя пакетов. Значение жестко закодировано в 7 и не может быть изменено. Вероятно, вместо этого вам следует взглянуть на PEER_PACKET_THROTTLE_ACCELERATION.

PeerStatistic PEER_PACKET_THROTTLE_EPOCH = 10

Время последнего обновления статистики дросселя (в миллисекундах с момента начала соединения). Интервал обновления статистики дросселя — PEER_PACKET_THROTTLE_INTERVAL.

PeerStatistic PEER_PACKET_THROTTLE_ACCELERATION = 11

Фактор ускорения дросселя. Более высокие значения заставят ENet быстрее адаптироваться к изменяющимся условиям сети, что приведет к отправке ненадежных пакетов чаще. Значение по умолчанию — 2.

PeerStatistic PEER_PACKET_THROTTLE_DECELERATION = 12

Фактор замедления дросселя. Более высокие значения заставят ENet быстрее адаптироваться к изменяющимся условиям сети, что приведет к отправке ненадежных пакетов реже часто. Значение по умолчанию — 2.

PeerStatistic PEER_PACKET_THROTTLE_INTERVAL = 13

Интервал, в течение которого должно измеряться наименьшее среднее время прохождения сигнала туда и обратно для использования механизмом дроссельной заслонки (в миллисекундах). Значение по умолчанию — 5000.


Константы

PACKET_LOSS_SCALE = 65536 🔗

Опорная шкала для потери пакетов. См. get_statistic() и PEER_PACKET_LOSS.

PACKET_THROTTLE_SCALE = 32 🔗

Опорное значение для конфигурации дросселя. Значение по умолчанию — 32. См. throttle_configure().

FLAG_RELIABLE = 1 🔗

Пометить отправляемый пакет как надежный.

FLAG_UNSEQUENCED = 2 🔗

Отметить пакет, подлежащий отправке, как непоследовательный (ненадежный).

FLAG_UNRELIABLE_FRAGMENT = 8 🔗

Пометить отправляемый пакет как ненадежный, даже если пакет слишком большой и требует фрагментации (что увеличивает вероятность его потери).


Описания метода

int get_channels() const 🔗

Возвращает количество каналов, выделенных для связи с одноранговым узлом.


int get_packet_flags() const 🔗

Возвращает флаги ENet следующего пакета в полученной очереди. См. константы FLAG_* для доступных флагов пакетов. Обратите внимание, что не все флаги реплицируются от отправляющего узла к принимающему узлу.


String get_remote_address() const 🔗

Возвращает IP-адрес этого однорангового узла.


int get_remote_port() const 🔗

Возвращает удаленный порт данного однорангового узла.


PeerState get_state() const 🔗

Возвращает текущее состояние однорангового узла (Peer).


float get_statistic(statistic: PeerStatistic) 🔗

Возвращает запрошенную statistic для данного однорангового узла.


bool is_active() const 🔗

Возвращает true, если одноранговый узел в данный момент активен (т. е. связанный ENetConnection все еще действителен).


void peer_disconnect(data: int = 0) 🔗

Запрос на отключение от однорангового пира. ENetConnection.EVENT_DISCONNECT будет сгенерирована во время ENetConnection.service() после завершения отключения.


void peer_disconnect_later(data: int = 0) 🔗

Запросить отключение от пира, но только после того, как все исходящие пакеты в очереди будут отправлены. ENetConnection.EVENT_DISCONNECT будет сгенерирована во время ENetConnection.service() после завершения отключения.


void peer_disconnect_now(data: int = 0) 🔗

Принудительно выполнить немедленное отключение от однорангового пир. ENetConnection.EVENT_DISCONNECT не будет сгенерирован. Не гарантируется, что внешний одноранговый узел получит уведомление об отключении, и он немедленно сбрасывается после возврата из этой функции.


void ping() 🔗

Отправляет запрос ping на одноранговый узел. ENet автоматически пингует все подключенные одноранговые узлы через регулярные интервалы, однако эта функция может быть вызвана для обеспечения более частых запросов ping.


void ping_interval(ping_interval: int) 🔗

Устанавливает ping_interval в миллисекундах, с которым будут отправляться пинги на одноранговый пир. Пинги используются как для мониторинга активности соединения, так и для динамической регулировки дросселя в периоды низкого трафика, чтобы дроссель имел разумную скорость реагирования во время пиков трафика. Интервал пинга по умолчанию составляет 500 миллисекунд.


void reset() 🔗

Принудительно отключает одноранговый пир. Внешний хост, представленный одноранговым пир, не уведомляется об отключении и будет отключаться по тайм-ауту при подключении к локальному хосту.


Error send(channel: int, packet: PackedByteArray, flags: int) 🔗

Ставит в очередь packet для отправки по указанному channel. См. константы FLAG_* для доступных флагов пакетов.


void set_timeout(timeout: int, timeout_min: int, timeout_max: int) 🔗

Устанавливает параметры тайм-аута для однорангового пира. Параметры тайм-аута управляют тем, как и когда одноранговый узел будет выходить из-за неспособности подтвердить надежный трафик. Значения тайм-аута выражаются в миллисекундах.

timeout — это фактор, который, умноженный на значение, основанное на среднем времени кругового пути, определит предел тайм-аута для надежного пакета. Когда этот предел достигнут, тайм-аут будет удвоен, и одноранговый узел будет отключен, если этот предел достигнет timeout_min. Параметр timeout_max, с другой стороны, определяет фиксированный тайм-аут, в течение которого любой пакет должен быть подтвержден, иначе одноранговый узел будет отброшен.


void throttle_configure(interval: int, acceleration: int, deceleration: int) 🔗

Настраивает параметр дросселя для однорангового пир.

Ненадежные пакеты отбрасываются ENet в ответ на изменяющиеся условия интернет-подключения к одноранговому пир. Дроссель представляет собой вероятность того, что ненадежный пакет не будет отброшен и, таким образом, отправлен ENet одноранговому пиру. Измеряя колебания времени кругового пути надежных пакетов в течение указанного interval, ENet либо увеличит вероятность на величину, указанную в параметре acceleration, либо уменьшит ее на величину, указанную в параметре deceleration (оба являются отношениями к PACKET_THROTTLE_SCALE).

Когда дроссель имеет значение PACKET_THROTTLE_SCALE, ненадежные пакеты не отбрасываются ENet, и поэтому будет отправлено 100% всех ненадежных пакетов.

Когда дроссель имеет значение 0, все ненадежные пакеты отбрасываются ENet, и поэтому будет отправлено 0% всех ненадежных пакетов.

Промежуточные значения для дросселя представляют собой промежуточные вероятности между 0% и 100% ненадежных отправляемых пакетов. Ограничения пропускной способности локальных и внешних хостов учитываются для определения разумного предела для вероятности дросселя, выше которого он не должен подниматься даже в самых лучших условиях.