TCPConnectionNotify
Уведомления для TCP-соединений.
Пример использования этого класса можно найти в документации для акторов TCPConnection и TCPListener.
interface ref TCPConnectionNotify
Общие функции
accepted
Вызывается, когда TCPConnection принимается TCPListener.
fun ref accepted( conn: TCPConnection ref) : None val
Параметры
- conn: TCPConnection ссылка
Возвращаемое значение
- None значение
proxy_via
Вызывается перед попыткой подключения к целевому серверу. Для подключения через прокси, верните хост и порт прокси-сервера.
Реализация этой функции может выглядеть так:
let _proxy_host = "some-proxy.example.com" let _proxy_service = "80" var _destination_host: ( None | String ) var _destination_service: ( None | String ) fun ref proxy_via(host: String, service: String): (String, String) => _destination_host = host _destination_service = service ( _proxy_host, _proxy_service )
fun ref proxy_via( host: String val, service: String val) : (String val , String val)
Параметры
Возвращаемое значение
connecting
Вызывается, если разрешение имени успешно выполнено для TCPConnection, и мы сейчас ждем успешного подключения к серверу. Значение count — количество попыток подключения. Уведомление будет информироваться каждый раз, когда count изменится, пока не будет установлено соединение или не будет вызван connect_failed().
fun ref connecting( conn: TCPConnection ref, count: U32 val) : None val
Параметры
- conn: TCPConnection ссылка
- count: U32 значение
Возвращаемое значение
- None значение
connected
Вызывается, когда мы успешно подключились к серверу.
fun ref connected( conn: TCPConnection ref) : None val
Параметры
- conn: TCPConnection ссылка
Возвращаемое значение
- None значение
connect_failed
Вызывается, когда подключение ко всем возможным адресам сервера не удалось. В этот момент соединение никогда не будет установлено.
Ожидается реализация обработки ошибок. Вы можете настроить игнорирование ошибок, как показано ниже:
fun ref connect_failed(conn: TCPConnection ref) => None
fun ref connect_failed( conn: TCPConnection ref) : None val
Параметры
- conn: TCPConnection ссылка
Возвращаемое значение
- None значение
auth_failed
У простого TCPConnection нет механизма аутентификации. Однако, когда протоколы обернуты в другие протоколы, это может быть использовано для сообщения об ошибке аутентификации в протоколе более низкого уровня (например, SSL).
fun ref auth_failed( conn: TCPConnection ref) : None val
Параметры
- conn: TCPConnection ссылка
Возвращаемое значение
- None значение
sent
Вызывается, когда данные отправляются по соединению. Это предоставляет уведомлению возможность изменить отправляемые данные перед записью. Для отбрасывания данных верните пустую строку.
fun ref sent( conn: TCPConnection ref, data: (String val | Array[U8 val] val)) : (String val | Array[U8 val] val)
Параметры
- conn: TCPConnection ссылка
- data: (Строка значение | Массив[U8 значение] значение)
Возвращаемое значение
sentv
Вызывается, когда несколько фрагментов данных отправляются по соединению в одном вызове. Это предоставляет уведомлению возможность изменить фрагменты отправляемых данных перед записью. Для отбрасывания отправки верните пустой массив [Строка].
fun ref sentv( conn: TCPConnection ref, data: ByteSeqIter val) : ByteSeqIter val
Параметры
- conn: TCPConnection ссылка
- data: ByteSeqIter значение
Возвращаемое значение
- ByteSeqIter значение
received
Вызывается, когда новые данные получены по соединению. Верните true, если хотите продолжить получение сообщений без ожидания, пока не будет прочитан max_size в TCPConnection. Верните false, чтобы заставить TCPConnection прерваться сейчас.
Включает количество вызовов received за текущее поведение. Это позволяет уведомлению регулярно завершать чтение.
fun ref received( conn: TCPConnection ref, data: Array[U8 val] iso, times: USize val) : Bool val
Параметры
- conn: TCPConnection ссылка
- data: Массив[U8 значение] изолированное
- times: USize значение
Возвращаемое значение
- Bool значение
expect
Вызывается, когда соединению указано ожидать определённого количества байтов. Это позволяет вложенным уведомлениям изменять ожидаемое количество, что позволяет протоколу более низкого уровня обрабатывать любые рамки (например, SSL).
fun ref expect( conn: TCPConnection ref, qty: USize val) : USize val
Параметры
- conn: TCPConnection ссылка
- qty: USize значение
Возвращаемое значение
- USize значение
closed
Вызывается, когда соединение закрыто.
fun ref closed( conn: TCPConnection ref) : None val
Параметры
- conn: TCPConnection ссылка
Возвращаемое значение
- None значение
throttled
Вызывается, когда соединение начинает испытывать обратную загрузку TCP. Вы должны ответить на это, приостановив дополнительные вызовы write и writev, пока вам не сообщат о снятии давления. Неправильный ответ на уведомление throttled приведёт к очереди исходящих данных в соединении и увеличению использования памяти.
fun ref throttled( conn: TCPConnection ref) : None val
Параметры
- conn: TCPConnection ссылка
Возвращаемое значение
- None значение
unthrottled
Вызывается, когда соединение перестаёт испытывать обратную загрузку TCP. После получения этого уведомления вы можете продолжить вызовы write и writev.
fun ref unthrottled( conn: TCPConnection ref) : None val
Параметры
- conn: TCPConnection ссылка
Возвращаемое значение
- None значение
© 2016-2020, The Pony Developers
© 2014-2015, Causality Ltd.
Licensed under the BSD 2-Clause License.
https://stdlib.ponylang.io/net-TCPConnectionNotify