.txbuffrq - метод

Назначение:Для выбранного сокета (выбор выполняется через sock.num) заранее запрашивает numpages страниц буфера (1 страница = 256 байт) для буфера передачи (TX) этого сокета.
Синтаксис:sock.txbuffrq(numpages as {byte | word}) as {byte | word}
Возвращает:Число страниц, которое действительно можно выделить.
См. также:sock.tx2buffrq

ПараметрОписание
numpagesЗапрашиваемое число страниц буфера. Пока что максимально допустимое значение - 255.

Подробности

Фактически буфер выделяется при использовании метода sys.buffalloc. Если ёмкость буфера передачи (TX) равна 0, сокет не может передавать данные. Текущую фактическую ёмкость буфера можно узнать через sock.txbuffsize, которое возвращает ёмкость в байтах. Связь между ними такая: sock.txbuffsize = num_pages * 256 - X (или = 0 при num_pages = 0), где "num_pages" - число страниц буфера, которое было ВЫДЕЛЕНО через sock.txbuffrq. Вычитание "- X" связано с тем, что часть байт нужна для внутренних переменных буфера. X = 17 байт на 16-разрядных платформах и 33 байта на 32-разрядных. Тип платформы указан в документации на платформу.

Выделение буфера не сработает, если сокет, которому принадлежит этот буфер, не находится в состоянии простоя (sock.statesimple не равно 0 - PL_SSTS_CLOSED) на момент выполнения sys.buffalloc. Менять размеры буферов можно только у сокетов, находящихся в простое.

У старых устройств объём ОЗУ был меньше, поэтому аргумент numpages и возвращаемое методом значение имели тип byte. Максимально возможное число страниц поэтому не могло превышать 255. На новых устройствах с большим объёмом ОЗУ этот метод принимает и возвращает значения типа word. Чтобы узнать, какой тип используется, посмотрите объявление метода для вашей платформы.

Внимание

Пока что максимальное число страниц, которое можно выделить для буфера приёма (RX), по-прежнему ограничено значением 255. Это ограничение будет снято в будущих версиях TiOS.

Исходный материал Tibbo обновлён 12 сентября 2022Оригинал на docs.tibbo.com · Сообщить об ошибке