.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.