ENetPacketPeer
Наследует: PacketPeer < RefCounted < Object
Класс-оболочка для ENetPeer.
Описание
Реализация PacketPeer, представляющая одноранговый узел ENetConnection.
Этот класс не может быть создан напрямую, но может быть извлечен во время ENetConnection.service() или через ENetConnection.get_peers().
Примечание: При экспорте в Android обязательно включите разрешение INTERNET в предустановке экспорта Android перед экспортом проекта или использованием развертывания в один клик. В противном случае сетевое взаимодействие любого рода будет заблокировано Android.
Обучающие материалы
Методы
get_channels() const |
|
get_packet_flags() const |
|
get_remote_address() const |
|
get_remote_port() const |
|
get_state() const |
|
get_statistic(statistic: PeerStatistic) |
|
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() |
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_packet_flags() const 🔗
Возвращает флаги ENet следующего пакета в полученной очереди. См. константы FLAG_* для доступных флагов пакетов. Обратите внимание, что не все флаги реплицируются от отправляющего узла к принимающему узлу.
String get_remote_address() const 🔗
Возвращает IP-адрес этого однорангового узла.
Возвращает удаленный порт данного однорангового узла.
Возвращает текущее состояние однорангового узла (Peer).
float get_statistic(statistic: PeerStatistic) 🔗
Возвращает запрошенную statistic для данного однорангового узла.
Возвращает 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% ненадежных отправляемых пакетов. Ограничения пропускной способности локальных и внешних хостов учитываются для определения разумного предела для вероятности дросселя, выше которого он не должен подниматься даже в самых лучших условиях.