Метод .rxbuffrq

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

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

Подробности

Возвращает фактическое число страниц, которое можно выделить. Само выделение происходит при вызове метода sys.buffalloc. Если ёмкость буфера RX равна 0, сокет не может принимать данные. Фактическую текущую ёмкость буфера можно проверить свойством sock.rxbuffsize, которое возвращает ёмкость буфера в байтах.

Связь между ними такая: sock.rxbuffsize= num_pages * 256 - X (или 0, если num_pages = 0), где "num_pages" - число страниц буфера, которое было ВЫДЕЛЕНО через sock.rxbuffrq. Вычитание 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 · Сообщить об ошибке