Задержка инициализации таблицы - PullRequest
0 голосов
/ 25 января 2011

Используя net-snmp API и mib2c для генерации кода скелета, возможно ли поддерживать отложенную инициализацию таблиц? Я имею в виду, что таблица не будет инициализирована, пока ни один из ее членов не будет запрошен напрямую. Причина этого в том, что данные о членах получены с другого сервера, и я хотел бы иметь возможность запустить демон snmpd, не требуя, чтобы другой сервер был подключен к сети / готов к запросам. Я подумал о том, чтобы, возможно, инициализировать таблицу фиктивными данными, которые обновляются с реальными значениями при запросе члена, но я не уверен, что это лучший способ.

Таблица также имеет только одну строку записей, поэтому использование mib2c.iterate.conf для генерации итераторов таблицы и обработка всего этого просто не нужны. Я подумал, может быть, просто реализовать последовательность, определенную в MIB, а не фактическую таблицу, но обычно это не так, как во всех примерах, которые я видел. Я посмотрел на /mibgroup/examples/delayed_instance.c, но это не совсем то, что я ищу. Использование mib2c с файлом конфигурации mib2c.create-dataset.conf было наиболее близким к тому, чтобы мне было легко это сделать, но этот файл конфигурации предполагает, что данные статические, а не внешние (оба из которых не соответствуют действительности в моем случае), это не сработает. Если это не легко сделать, я, вероятно, просто реализую последовательность, а не таблицу, но я надеюсь, что есть простой способ. Заранее спасибо.

1 Ответ

1 голос
/ 26 января 2011

Метод итератора будет работать просто отлично.Он не будет загружать данные, пока не вызовет ваши процедуры _first и _next.Таким образом, в этих подпрограммах и в подпрограмме _handler вам нужно запросить данные с удаленного сервера.На самом деле, по умолчанию он вообще не кэширует данные, поэтому он заставляет вас запрашивать удаленный сервер для каждого запроса.Это может быть медленным, если в таблице много данных, поэтому в этом случае рекомендуется добавить кэш для хранения данных в течение N секунд.

...