.varbuffrq - метод

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

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

Подробности

В буфере VAR хранится строка HTTP-запроса. Если ёмкость буфера VAR равна 0, сокет не может обрабатывать HTTP-запросы.

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

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

Буфер VAR нужен, только если сокет будет работать в режиме HTTP - см. свойства sock.httpmode и sock.httpportlist.

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

Внимание

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

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