檢視原始碼 snmpa_local_db (snmp v5.18)

SNMP 內建資料庫

模組 snmpa_local_db 包含使用 SNMP 內建資料庫實作表格(和變數)的函式。資料庫存在兩個實例,一個為暫時性,另一個為持久性。暫時性資料庫使用 ets 實作,持久性資料庫則使用 dets 實作。

此資料庫存在擴展性問題。

  • 對於大型表格,插入和刪除效率不高。

這個問題最好使用 Mnesia 來解決。

以下函式描述了 snmpa_local_db 的介面。每個函式都有一個 Mnesia 對應項。引數 NameDb 是一個 tuple {Name, Db},其中 Name 是受管理物件的符號名稱(如在 MIB 中定義),而 Dbvolatilepersistentmnesia 不可行,因為所有這些函式都是 snmpa_local_db 特有的。

通用資料類型

在以下定義的函式中,適用以下限制

  • Db = volatile | persistent

參見

ets(3), dets(3), snmp_generic(3)

摘要

函式

此函式可用於手動將資料庫轉儲到檔案。

在表格上執行 ets/dets 比對。

等同於 print/2

等同於 print/2

在螢幕上列印資料庫的內容。這對於除錯很有用,因為 STANDARD-MIBOTP-SNMPEA-MIB(以及您自己的 MIB)儲存在 snmpa_local_db 中。

建立表格。如果表格已存在,則會銷毀舊副本。

在表格中建立一行。Row 是一個 tuple,其中包含所有欄的值,包括索引欄。

刪除表格。

刪除表格中的行。

檢查表格是否存在。

從表格的行中取得欄的值(元素)。

Row 是一個 tuple,其中包含所有欄的值,包括索引欄。

更新此表格行的指定欄位物件。

函式

-spec dump() -> ok | {error, Reason} when Reason :: term().

此函式可用於手動將資料庫轉儲到檔案。

-spec match(Table, Pattern) -> [Match]
               when
                   Table :: snmpa:name_db() | snmpa:name(),
                   Pattern :: ets:match_pattern(),
                   Match :: term().

在表格上執行 ets/dets 比對。

有關 Pattern 和回傳值的說明,請參見 ets:match/2

-spec print() -> term().

等同於 print/2

-spec print(Table) -> term() when Table :: snmpa:name().

等同於 print/2

-spec print(Table, Db) -> term() when Table :: snmpa:name(), Db :: volatile | persistent.

在螢幕上列印資料庫的內容。這對於除錯很有用,因為 STANDARD-MIBOTP-SNMPEA-MIB(以及您自己的 MIB)儲存在 snmpa_local_db 中。

Table 是資料庫中表格的原子。如果未提供名稱,則會顯示整個資料庫。

請注意,這些函式實際上並不會列印,而是使用 io:format/2,它們(僅)回傳資訊。如果在 shell 中執行,則資訊將會顯示在那裡(可能會被截斷)。

更好的用法是

	  io:format("~p~n", [snmpa_local_db:print()]).
-spec table_create(Table) -> boolean() when Table :: snmpa:name_db() | snmpa:name().

建立表格。如果表格已存在,則會銷毀舊副本。

如果 NameDb 引數指定不正確,則回傳 false,否則回傳 true

資料庫(僅指定表格名稱)預設為 volatile

連結到此函式

table_create_row(Table, RowIndex, Row)

檢視原始碼
-spec table_create_row(Table, RowIndex, Row) -> boolean()
                          when
                              Table :: snmpa:name_db() | snmpa:name(),
                              RowIndex :: snmp:row_index(),
                              Row :: tuple().

在表格中建立一行。Row 是一個 tuple,其中包含所有欄的值,包括索引欄。

資料庫(僅指定表格名稱)預設為 volatile

-spec table_delete(Table) -> true when Table :: snmpa:name_db() | snmpa:name().

刪除表格。

資料庫(僅指定表格名稱)預設為 volatile

連結到此函式

table_delete_row(Table, RowIndex)

檢視原始碼
-spec table_delete_row(Table, RowIndex) -> boolean()
                          when Table :: snmpa:name_db() | snmpa:name(), RowIndex :: snmp:row_index().

刪除表格中的行。

資料庫(僅指定表格名稱)預設為 volatile

-spec table_exists(Table) -> boolean() when Table :: snmpa:name_db() | snmpa:name().

檢查表格是否存在。

資料庫(僅指定表格名稱)預設為 volatile

連結到此函式

table_get_element(Table, RowIndex, Col)

檢視原始碼 (自 OTP 27.0 起)
-spec table_get_element(Table, RowIndex, Col) -> {value, Value} | undefined
                           when
                               Table :: snmpa:name_db() | snmpa:name(),
                               RowIndex :: snmp:row_index(),
                               Col :: snmp:column(),
                               Value :: term().

從表格的行中取得欄的值(元素)。

資料庫(僅指定表格名稱)預設為 volatile

此函式存在已久,但沒有正確的 since 標籤,因此為了簡化,我們將 since 標籤設定為文件化的時間。

連結到此函式

table_get_row(Table, RowIndex)

檢視原始碼
-spec table_get_row(Table, RowIndex) -> Row | undefined
                       when
                           Table :: snmpa:name_db() | snmpa:name(),
                           RowIndex :: snmp:row_index(),
                           Row :: tuple().

Row 是一個 tuple,其中包含所有欄的值,包括索引欄。

資料庫(僅指定表格名稱)預設為 volatile

連結到此函式

table_set_elements(Table, RowIndex, Cols)

檢視原始碼 (自 OTP 27.0 起)
-spec table_set_elements(Table, RowIndex, Cols) -> boolean()
                            when
                                Table :: snmpa:name_db() | snmpa:name(),
                                RowIndex :: snmp:row_index(),
                                Cols :: [{Col, Value}],
                                Col :: snmp:column(),
                                Value :: term().

更新此表格行的指定欄位物件。

資料庫(僅指定表格名稱)預設為 volatile

此函式存在已久,但沒有正確的 since 標籤,因此為了簡化,我們將 since 標籤設定為文件化的時間。