Подсистема TCAP. Общие положения. Прикладная система возможности транзакций, страница 8

Тип OBJECT IDENTIFIER позволяет создавать уникальные, в глобальном смысле, пространства имен; предназначение и использование уникальных имен, созданных с помощью данного типа, не имеет значения. Суть данного типа – представление уникальных имен последовательностью простейших компонентов целого типа на основе древовидной иерархии. Каждый простейший компонент идентифицирует то или иное ребро на определенном уровне иерархии древовидной структуры. Таким образом, каждое уникальное имя представляет собой однозначную и непротиворечивую последовательность целых чисел, являющихся номерами ребер на всем пути от корня дерева к вершине, соответствующей этому имени. Переменная типа OBJECT IDENTIFIER может иметь любое число компонентов, и каждый компонент может иметь любое неотрицательное значение.

Строение уникальных имен с помощью типа OBJECT IDENTIFIER напоминает строение доменных имен в Internet иерархии.

Уникальные имена используются, например, для нумерации алгоритмов, форматов, типов записей, модулей.

Формат:

VarName OBJECT IDENTIFIER {component_1 ... component_n}

где

component_i = identifier_i или

component_i = identifier_i(value_i) или

component_i = value_i

identifier_1 ... identifier_n - идентификаторы,

value_1 ... value_n - необязательные значения целого типа, присваиваемые соответствующим идентификаторам.

Если используется форма component_i = identifier_i, то предполагается, что идентификатору identifier_i уже ранее присвоено некоторое значение.

Примеры:

md4 ::= { iso(1) member-body(2) us(840) rsadsi(113549) digestAlgorithm(2) 4 }

location-update-acn ::= {ccitt(0) identified-organization(4) etsi(0) mobileDomain(0) gsm-Network(1) map-ac(0) networkLocUp(1) version-3(3)}

Дерево иерархии OBJECT IDENTIFIER

ENUMERATED

Позволяет создавать наборы символьных идентификаторов, соответствующих определенным значениям и присваивать переменным данного типа созданные идентификаторы.

Формат:

VarName ENUMERATED {Ind_1(value_1), Ind_2(value_2),…, Ind_3(value_3)}

Пример определения типа:

protocolId ENUMERATED {

gsm-0408 (1),

   gsm-0806 (2),

   gsm-BSSMAP (3),

   ets-300102-1 (4)}

Пример присвоения:

protocolID ::= gsm-0408

SEQUENCE

Оператор SEQUENCE используется для представления совокупности переменных одного или различных типов, порядок следования которых существенен.

Формат:

SEQUENCE {ComponentList} или

SEQUENCE {ComponentList} (SIZE(size)) или

SEQUENCE {ComponentList} (SIZE(size1..size2))

С помощью необязательного служебного слова SIZE задается ограничение длины строки.

ComponentList - последовательность разделенных запятыми элементов следующего формата:

identifier Type [OPTIONAL или DEFAULT value]

Здесь:

identifier - идентификатор, задающий имя соответствующего компонента;

§  Type обозначает тип компонента;

§  ключевое слово OPTIONAL является необязательным параметром и используется для того, чтобы указать, что данный компонент является необязательным и может отсутствовать;

§  ключевое слово DEFAULT является необязательным параметром и используется для того, чтобы указать значение параметра по умолчанию;

Пример определения типа:

updateLocationArg SEQUENCE {

imsi OCTET STRING (SIZE (3..8)),

msc-Number OCTET STRING (SIZE (1..20)) (SIZE (1..9)),

vlr-Number OCTET STRING (SIZE (1..20)) (SIZE (1..9)),

lmsi OCTET STRING (SIZE(4)) OPTIONAL}

Пример присвоения:

updateLocationArg ::= {imsi "52009300105100f7", msc-Number "918713090000f0", vlr-Number "918713090000f0"}

CHOICE

Оператор CHOICE используется для выбора одного из нескольких возможных компонентов, причем компоненты могут быть разных типов. Оператор CHOICE не имеет собственного тэга, тэг имеют варианты оператора CHOICE.

Формат:

CHOICE {

Variant-1,

Variant-2,

...

Variant-n}

Здесь Variant-1..Variant-n – возможные варианты для выбора.

Пример определения типа:

ss-SubscriptionOption CHOICE {

cliRestrictionOption ENUMERATED {

permanent (0),

temporaryDefaultRestricted (1),

temporaryDefaultAllowed (2)},

overrideCategory ENUMERATED {

overrideEnabled (0),

overrideDisabled (1)}} OPTIONAL

Пример присвоения: