.tx2buffrq - метод
| Назначение: | Для выбранного сокета (выбор выполняется через sock.num) заранее запрашивает numpages страниц буфера (1 страница = 256 байт) для буфера TX2 этого сокета. |
| Синтаксис: | sock.tx2buffrq(numpages as {byte | word}) as {byte | word} |
| Возвращает: | Число страниц, которое действительно можно выделить. |
| См. также: | sock.txbuffrq |
| Параметр | Описание |
| numpages | Запрашиваемое число страниц буфера. Пока что максимально допустимое значение - 255. |
Подробности
Буфер TX2 необходим, когда включены inband-команды (sock.inbandcommands = 1 - YES). Без него сокет не сможет передавать данные. Метод возвращает число страниц, которое действительно можно выделить. Фактически буфер выделяется при использовании метода sys.buffalloc. В отличие от буферов передачи (TX) и приёма (RX), свойства для считывания фактической ёмкости буфера TX2 в байтах нет. Ёмкость можно вычислить как num_pages * 256 - X (или = 0 при num_pages = 0), где "num_pages" - число страниц буфера, которое было ВЫДЕЛЕНО через sock.tx2buffrq. Вычитание "- X" связано с тем, что часть байт нужна для внутренних переменных буфера. X = 17 байт на 16-разрядных платформах и 33 байта на 32-разрядных. Тип платформы указан в документации на платформу.
Выделение буфера не сработает, если сокет, которому принадлежит этот буфер, не находится в состоянии простоя (sock.statesimple не равно 0 - PL_SSTS_CLOSED) на момент выполнения sys.buffalloc. Менять размеры буферов можно только у сокетов, находящихся в простое.
У старых устройств объём ОЗУ был меньше, поэтому аргумент numpages и возвращаемое методом значение имели тип byte. Максимально возможное число страниц поэтому не могло превышать 255. На новых устройствах с большим объёмом ОЗУ этот метод принимает и возвращает значения типа word. Чтобы узнать, какой тип используется, посмотрите объявление метода для вашей платформы.
Пока что максимальное число страниц, которое можно выделить для буфера приёма (RX), по-прежнему ограничено значением 255. Это ограничение будет снято в будущих версиях TiOS.