Форматы Данных
Сервер CommuniGate Pro обрабатывает большинство типов данных как абстрактные объекты. В этом разделе описывается абстрактные, базовые типы объектов, используемые всеми компонентами Сервера.
Для каждого типа объекта указывается текстовое представление объекта.
Когда объект сохраняется в файле, отправляется в ответ по команде CLI/API или извлекается с Сервера любым другим способом, то используется текстовое представление объекта.
Когда Сервер читает объект извне (из файла настроек, из команды CLI и т.д.), он преобразовывает полученное текстовое представление во внутренний объект.
Текстовое Представление
Объекты представляются в виде текста из одной или нескольких строк (в зависимости от контекста).
Элементы представления объекта могут разделяться "пустым пространством". В одностроковом представление в качестве "пустого пространства" может использоваться только символ пробела.
В многостроковом представлении пробел и символ "горизонтальной табуляции", а также символы EOL (обозначения конца строки, CR и/или LF) тоже считаются символами "пустого пространства". Дополнительно "пустым пространством" считается комментарий, который может состоять из:
- символов двойной косой черты (
//
) и всех символов, следующих за ними до символа EOL (конец строки) включительно. - последовательности символов косой черты и звёздочки (
/*
) и всех символов, следующих за ними до последовательности символов звёздочки и косой черты (*/
) включительно.
Простые Объекты
Простые объекты являются неструктурированными, обычными объектами одного из типов данных.
Строки
Строка является последовательностью байт, представляющих текст в кодировке UTF-8 и не содержащих двоичный нулевой байт.
Текстовое представление строки является либо атомарным - последовательностью букв латинского алфавита (в кодировке ASCII) и цифр, либо строкой в кавычках - последовательностью любых отображаемых символов (используя кодировку UTF-8), исключая символ кавычки и символ обратной косой черты, заключённой в кавычки ("
).
Примеры:
MyName
My2ndName
"Моё имя с пробелами and the . symbol"
Если вы хотите включить символ кавычки в строку в кавычках, укажите символ обратной косой черты и кавычки, а если вы хотите включить символ обратной косой черты в строку в кавычках, укажите два символа обратной косой черты подряд.
Примеры:
"a \"string\" within string"
"Single \\ backslash"
Вы можете использовать комбинацию символов \r
, чтобы включить в строку символ возврата каретки; вы можете использовать комбинацию символов \n
, чтобы включить в строку символ перевод строки и вы можете использовать комбинацию символов \e
, чтобы включить в строку независимую от операционной системы последовательность символов для Конца Строки.
Примеры:
"Line1\eLine2"
TEXT3\rTEXT67\nTEXT78"
Используйте комбинацию \r
или \n
для включения знаков возврата каретки и конца строки только если они НЕ используются как разделители строк.
Чтобы включить в строку символ табуляции, вы можете использовать комбинацию символов \t
.
Пример:
"Line1:\tField1\tField2\eLine2:\tField1\tField2"
Можно использовать комбинацию символов \nnn
, чтобы включить в строку любой символ; здесь nnn - трёхзначное десятичное число, равное коду ASCII требуемого символа.
Пример:
"Using the \012 (Vertical Tabulation) symbol"
Можно использовать комбинацию символов \u'nnn'
, чтобы включить в строку любой символ; здесь nnn - шестнадцатеричное число, равное коду Unicode требуемого символа.
Пример:
"Using the \u'2764' (Heavy black heart) symbol"
В многострочном представлении строка может быть представлена последовательностью двух и более строк, при необходимости разделённых одним и более символами "пустого пространства". Это позволяет записывать длинные строковые значения в несколько строк.
Блоки Данных
Блоки данных (datablock) являются базовыми, неструктурированными блоками двоичных данных. Они создаются как текстовые строки двоичных данных в кодировке Base64, заключённые в квадратные скобки.
Пример:
[HcqHfHI=]
это блок двоичных данных, содержащих следующие 5 двоичных байт данных:0x1D 0xCA 0x87 0x7C 0x72
Символы "пустого пространства" могут помещаться где угодно внутри квадратных скобок.
Числа
Числа (numbers) являются основными неструктурированными объектами данных. Каждый объект Число содержит одно 64-битное целое значение со знаком. Число представляется в виде текстовой строки, начинающейся с символа #
, за которым следует (необязательный) символ минуса (-
), за которым, в свою очередь, следует одна или более десятичная цифра или индикатор системы счисления с цифрами, разрешёнными в указанной системе счисления.
Индикатор основания системы счисления 0x
задаёт значение основания 16 (шестнадцатеричное число), индикатор 0o
задаёт значение основания 8 (восьмеричное число), индикатор 0b
задаёт значение 2 (двоичное число).
Примеры:
#-234657
#0x17EF
#-0b1000111000
Отметки времени
Отметки Времени (time stamps) являются основными неструктурированными объектами данных. Каждая Отметка Времени содержит одно значение глобального времени. Значение времени представляется в GMT времени как текстовая строка, начинающаяся с символов #T
и содержащая значение дня, месяца, года и, необязательно, часа, минуты и секунды.
Пример:
#T22-10-2009_15:24:45
Определены также две специальные Отметки Времени - одна для "далёкого прошлого" (#TPAST
) и другая для "далёкого будущего" (#TFUTURE
).
IP Адреса
IP Адреса (IP Addresses) являются основными неструктурированными объектами данных. Каждый объект IP Адрес содержит в себе IPv4 или IPv6 адрес и, необязательно, номер порта. IP Адрес представляется в виде текстовой строки, начинающейся с символов #I
и содержащей канонический IPv4 или IPv6 адрес, за которым через двоеточие может следовать номер порта.
Примеры:
#I[10.0.44.55]:25
#I[2001:470:1f01:2565::a:80f]:25
Нулевой Объект
Нулевой объект является уникальным простым объектом, представляющим отсутствие любого другого объекта.
Нулевой объект представляется в виде текстовой строки #NULL#
.
Другие Объекты
Когда сервер преобразует объекты из внутреннего в текстовое представление, в их структуре может встретится специфичный для приложения объект, для которого нет текстового представления. Такие объекты представляются в виде текста #(objectName:address)
, где objectName - строка из букв и цифр с именем класса объекта, а address -шестнадцатеричное число с адресом объекта в памяти.
Такие объекты НЕ должны использоваться в текстовом представлении, которое конвертируется в объект данных.
Структурированные Объекты
Массивы
Объект Массив (array) - это упорядоченный набор объектов (элементов массива).
Текстовое представление массива - список представлений его элементов, разделённых символами запятой (,
) и заключённый в круглые скобки.
Пример:
(Element1 , "Element2" , "Element 3")
Элементом массива может быть любой объект - строка, массив, словарь и т.д.
Пример:
(Element1 , ("Sub Element1", SubElement2) , "Element 3")
Любое число пробелов, символов табуляции и/или символов новой строки (символов конца строки) может находиться между скобками и элементом, а также между элементом и символом запятой.
Пример:
(
Element1 ,
( "Sub Element1",
SubElement2 )
,
"Element 3" )
Массив может содержать ноль элементов (пустой массив).
Пример:
()
Словари
Объект Словарь (dictionary) является набором пар ключ-значение. Ключи словаря являются строками. Каждый ключ в словаре должен быть уникальным. Ключи словаря обрабатываются как зависимые от регистра строки, за исключением случая, если явно не указано иное.
Любой объект может использоваться как значение, связанное с ключом.
Текстовым представлением словаря является последовательность его пар ключ/значение, заключённая в фигурные скобки.
Каждая пара представляется как строка с ключом, за которым следует знак равно (=
) и текстовое представление значения связанного объекта, оканчивающегося символом точка с запятой (;
).
Пример:
{Key1=Element1; Key2 ="Element2" ; "Third Key"="Element 3"; }
Значением объекта в любой паре ключ/значение может быть строка, массив, словарь или любой другой объект.
Пример:
{Key1=(Elem1,Elem2); Key2={Sub1="XXX 1"; Sub2=X245;}; }
Любое число пробелов, символов табуляции и/или символов новой строки (символов конца строки) может находиться между фигурными скобками и парой, рядом с символом равно и рядом с символом точка с запятой.
Пример:
{
Key1 = (Elem1,Elem2) ;
Key2 = { Sub1 = "XXX 1";
Sub2=X245; };
}
Словарь может иметь ноль элементов (пустой словарь).
Пример:
{}
XML
Объект XML является документом XML. Он имеет имя, набор пространств имён (строки), набор атрибутов со значениями типа строка и ноль, один или несколько элементов тела. Каждый элемент тела является либо строкой, либо объектом XML.
Текстовым представлением объекта XML является его стандартное текстовое представление, начинающееся с символа угловая скобка.
Правила Формального Синтаксиса
Ниже приводится формальное определение синтаксиса для текстовых представлений объектов базовых типов.
b-digit | 0 | 1 |
o-digit | 0 .. 7 |
d-digit | 0 .. 9 |
h-digit | d-digit | A .. F | a .. f |
a-symbol | A .. Z | a .. z | d-digit |
u-symbol | a-symbol | любой символ utf-8 не из ASCII таблицы |
l-symbol | u-symbol | . | - | _ | @ |
atom | 1* l-symbol |
b-symbol | a-symbol | + | / | = |
s-symbol | любой отображаемый символ кроме " и \ | \\ | \" | \r | \n | \e | \t | \ d-digit d-digit d-digit |
string | " 0* s-symbol " | atom |
datablock | [ 1* b-symbol ] |
day | 0 .. 3 d-digit (двухзначное число в диапазоне 1..31) |
month | 0 .. 1 d-digit (двухзначное число в диапазоне 1..12) |
year | 1 .. 2 d-digit d-digit d-digit (четырёхзначное число в диапазоне 1970..2038) |
hour | 0 .. 2 d-digit (двухзначное число в диапазоне 0..23) |
minute | 0 .. 5 d-digit (двухзначное число в диапазоне 0..59) |
second | 0 .. 5 d-digit (двухзначное число в диапазоне 0..59) |
number | # [ - ] 1* d-digit | # [- ] 0x 1* h-digit | # [- ] 0b 1* b-digit | # [- ] 0o 1* o-digit |
timestamp | #T day - month - year [ _ hour : minute : second ] |
ip4 | 1* d-digit . 1* d-digit . 1* d-digit . 1* d-digit |
ip6 | 0* (1* h-digit : ) [: [ 0*(1* h-digit : ) ] ] |
ip-address | #I[ [ ip4 | ip6 ] ] [ : 1* d-digit ] |
null-object | #NULL# |
array | ( [ object 0* ( , object ) ] ) |
dictionary | { 0* ( string = object ; ) } |
XML | < XML в стандартном формате \> |
object | string | datablock | number | timestamp | ip-address | null-object | array | dictionary | XML |
Объекты XML
CommuniGate Pro может преобразовывать сложные структуры (такие как vCards, iCalendar, SDP объекты) в простые объекты XML. Представление XML может также потребоваться для таких объектов как блоки данных, массивы или словари. Этот раздел описывает представление XML в CommuniGate Pro для всех таких объектов и сложных структур.
Строка
Строка представляется текстовым элементом.
Если это верхний элемент XML, то строка представляется как элемент XML object
с текстовым телом, содержащим эту строку.
Если строка содержит специальные символы, то она должна быть представлена как элемент binString
с текстовым телом в кодировке base64.
Пустая строка может быть представлена пустым элементом binString
.
Блок Данных
Блок данных представляется как элемент XML base64
.
Телом элемента XML является содержимое блока данных в кодировке base64.
Пример:
<base64>STYRyui=</base64>
Число
Число представляется как элемент XML number
.
Телом элемента XML является текстовое представление значения числового объекта (десятичное или, если указан индикатор системы счисления, шестнадцатеричное, восьмеричное или бинарное).
Примеры:
<number>123456</number>
<number>0x78FAB5</number>
Отметка Времени
Отметка Времени представляется как элемент XML date
.
Телом элемента XML является текстовое представление отметки времени в формате iCalendar.
Пример:
<date>20101122T123000Z</date>
IP Адреса
IP адрес представляются как элемент XML ipAddr
.
Телом элемента XML является текстовое представление IP адреса, заключённое в квадратные скобки и необязательное отделённое двоеточием десятичное число - номера порта.
Пример:
<ipAddr>[10.0.2.2]:8010</ipAddr>
Нулевое значение
Объект с нулевым значением представляется как пустой элемент XML null
.
Массив
Массив представляется как последовательность из одного или более XML элементов subValue
.
Тело элемента XML представляет элемент массива.
Пустой массив представляется как один элемент XML subValue
без тела.
Если верхний XML элемент, то массив представляется как элемент XML object
, с текстовым телом, содержащим элементы XML subValue
.
Пример:
<subValue>my string</subValue><subValue><number>123456</number></subValue>
Словарь
Словарь представляется как последовательность из одного или более элементов XML subKey
.
Атрибут key
элемента XML задаёт ключ элемента словаря, а тело XML представляет значение элемента словаря.
Пустой словарь представляется как один элемент XML subKey
без атрибута key
и без тела.
Если словарь является верхним элементом XML, то он представляется как элемент XML object
, с текстовым телом, содержащим элементы XML subKey
.
Пример:
<subKey key="firstKey">my string</subKey><subKey key="secondKey"><number>123456</number></subKey>
vCard
Этот элемент XML представляет объект vCard (согласно спецификации Jabber/XEP для документов XML vCard).
Атрибуты:
modified
Этот необязательный атрибут содержит значение свойства
REV
(время GMT в формате iCalendar).
Тело:
Содержит свойства vCard как XML элементы с такими же именами, преобразованными к верхнему регистру ASCII.
Каждый элемент свойства содержит:Атрибуты:
отсутствуют
Тело:
набор элементов XML, представляющих параметры свойства и значение свойства:
параметры
Элементы XML с такими же именами, как и имена параметров, преобразованные к верхнему регистру ASCII. Параметры
ENCODING
иQUOTED-PRINTABLE
свойств vCard используются для декодирования значений свойства, и поэтому они не сохраняются.значение:
структурированные значения (
N
,ORG
,ADR
)набор элементов XML с именами элементов структуры и текстовые тела, содержащие часть структурированного значения свойства.
двоичное значение
элемент XML
BINVAL
с текстовым телом, содержащим значение свойства в кодировке base64.текстовое значение
элемент XML
VALUE
с текстовым телом, содержащим значение свойства.
Пример:
begin:VCARD
source:ldap://cn=bjorn Jensen, o=university of Michigan, c=US
name:Bjorn Jensen
n:Jensen;bjorn;A;Mr;II
email;type=INTERNET:bjorn@umich.edu
org:U of Michigan;Computer Science Dept.
tel;type=WORK,MSG:+1 313 747-4454
key;type=x509;encoding=B:dGhpcyBjb3VsZCBiZSAKbXkgY2VydGlmaWNhdGUK
end:VCARD
<vCard>
<SOURCE><VALUE>ldap://cn=bjorn Jensen, o=university of Michigan, c=US</VALUE></SOURCE>
<NAME><VALUE>Bjorn Jensen</VALUE></NAME>
<N><FAMILY>Jensen</FAMILY><GIVEN>bjorn</GIVEN>
<MIDDLE>A</MIDDLE><PREFIX>Mr.</PREFIX><SUFFIX>II</SUFFIX></N>
<EMAIL><VALUE>bjorn@umich.edu</VALUE></EMAIL>
<ORG><ORGNAME>U of Michigan</ORGNAME><ORGUNIT>Computer Science Dept.</ORGUNIT></ORG>
<TEL><WORK /><MSG /><VALUE>+1 313 747-4454</VALUE></TEL>
<KEY><X509 /><BINVAL>dGhpcyBjb3VsZCBiZSAKbXkgY2VydGlmaWNhdGUK</BINVAL></KEY>
</vCard>
vCardGroup
Этот элемент XML представляет объект vCardGroup.
Атрибуты:
modified
Этот необязательный атрибут содержит значение свойства
REV
(время GMT в формате iCalendar).Тело:
Cвойства vCardGroup как XML элементы с такими же именами, преобразованные к верхнему регистру ASCII:
NAME
,NOTE
,UID
. Каждый элемент включает в себя элемент XMLVALUE
с текстовым телом, содержащим значение свойства.Ноль, один или несколько элементов XML
MEMBER
, по одному на каждого члена группы. Текстовым телом XML элемента является адрес члена группы, а необязательный атрибутCN
содержит "настоящее имя" элемента.Пример:
BEGIN:VGROUP
PRODID:CommuniGate Pro 6.1
VERSION:1.0
NAME:Basket Buddies
NOTE:My basketball team.
UID:594895837.1@team.dom
REV:20071214T174114Z
MEMBER;CN="Jack Nimble":jack@nimble.dom
MEMBER;CN="Tim Slow":tim@slow.dom
END:VGROUP
<vCardGroup modified="20071214T174114Z">
<NAME><VALUE>Basket Buddies</VALUE></NAME>
<NOTE><VALUE>My basketball team.</VALUE></NOTE>
<UID><VALUE>594895837.1@team.dom</VALUE></UID>
<MEMBER CN="Jack Nimble">jack@nimble.dom</MEMBER>
<MEMBER CN="Tim Slow">tim@slow.dom</MEMBER>
</vCardGroup>
iCalendar
Этот элемент XML представляет объект iCalendar.
Тело:
элемент
vCalendar
.
vCalendar
Этот элемент XML представляет объект vCalendar.
Атрибуты:
version
версия vCalendar (
2.0
для iCalendar)method
необязательный атрибут с методом vCalendar
prodid
необязательная строка, идентифицирующая продукт, использованный для создания этого объекта vCalendar.
Тело:
vtimezone
Этот элемент XML представляет объект VTIMEZONE.
Тело:
набор элементов XML:
tzid
: тело элемента содержит название часового пояса.standard
и, необязательно,daylight
: эти тела элементов содержат следующие XML элементы:tzoffsetto
: тело элемента содержит значение сдвига времени.tzoffsetfrom
(необязательно) тело элемента содержит значение сдвига времени.rrule
(необязательно): тело элемента содержит строку с описателем повторяемости.
Пример:
BEGIN:VTIMEZONE
TZID:Europe/Central
BEGIN:STANDARD
DTSTART:19710101T030000
TZOFFSETFROM:+0200
TZOFFSETTO:+0100
RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
END:STANDARD
BEGIN:DAYLIGHT
DTSTART:19710101T020000
TZOFFSETFROM:+0100
TZOFFSETTO:+0200
RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
END:DAYLIGHT
END:VTIMEZONE
<vtimezone>
<tzid>Europe/Central</tzid>
<standard>
<dtstart>19710101T030000</dtstart>
<tzoffsetto>+0100</tzoffsetto>
<rrule>FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU</rrule>
</standard>
<daylight>
<dtstart>19710101T020000</dtstart>
<tzoffsetto>+0200</tzoffsetto>
<rrule>FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU</rrule>
</daylight>
</vtimezone>
vevent
, vtodo
Эти элементы XML представляют объекты VEVENT и VTODO.
Атрибуты:
localTime
этот атрибут присутствует только для неповторяющихся календарных объектов. В нём содержится дата и время начала календарного объекта. Используется местное Время в Часовом Поясе, выбранном для текущего пользователя.
localStart
этот атрибут присутствует только для повторяющихся календарных объектов. В нём содержится время начала календарного объекта (секунды, начиная с полуночи). Используется местное Время в Часовом Поясе, выбранном для текущего пользователя.
Тело:
Набор элементов XML, каждый представляющий одно свойства.
Параметры свойства представляются как атрибуты элемента.
Значение свойства представляется в теле Элемента.
Если значение начинается с префиксаMAILTO:
, то этот префикс удаляется.
Если календарный объект имеет "исключения", добавляется элемент XMLexceptions
. Его дочерние элементы XML представляют исключения для объектов VEVENT и VTODO.
Пример:
BEGIN:VEVENT
ORGANIZER;CN="Jim Smith":MAILTO:jim_smith@example.com
RRULE:FREQ=WEEKLY;INTERVAL=2;BYDAY=MO,TU,WE,TH;UNTIL=20060305T000000Z
DTSTAMP:20051204T140844Z
UID:566852630.4@mail.example.com
SEQUENCE:1
SUMMARY:test - recurrent
DTSTART;TZID=NorthAmerica/Pacific:20051204T100000
DTEND;TZID=NorthAmerica/Pacific:20051204T110000
X-MICROSOFT-CDO-BUSYSTATUS:BUSY
LAST-MODIFIED:20051204T140844Z
CREATED:20051204T140844Z
PRIORITY:5
END:VEVENT
BEGIN:VEVENT
UID:566852630.4@mail.example.com
RECURRENCE-ID:20051206T180000Z
SUMMARY:test - recurrent (later this time)
DTSTART;TZID=NorthAmerica/Pacific:20051206T120000
DTEND;TZID=NorthAmerica/Pacific:20051206T130000
END:VEVENT
<vevent>
<organizer CN="Jim Smith">jim_smith@example.com</organizer>
<rrule>FREQ=WEEKLY;INTERVAL=2;BYDAY=MO,TU,WE,TH;UNTIL=20060305T000000Z</rrule>
<dtstamp>20051204T140844Z</dtstamp>
<uid>566852630.4@mail.example.com</uid>
<sequence>1</sequence>
<summary>test - recurrent</summary>
<dtstart tzid="NorthAmerica/Pacific">20051204T100000</dtstart>
<dtend tzid="NorthAmerica/Pacific">20051204T110000</dtend>
<busystatus>BUSY</busystatus>
<last-modified>20051204T140844Z</last-modified>
<created>20051204T140844Z</created>
<priority>5</priority>
<exceptions>
<uid>566852630.4@mail.example.com</uid>
<recurrenceId>20051206T180000Z</recurrenceId>
<summary>test - recurrent (later this time)</summary>
<dtstart tzid="NorthAmerica/Pacific">20051206T120000</dtstart>
<dtend tzid="NorthAmerica/Pacific">20051206T130000</dtend>
</exceptions>
</vevent>
vfreebusy
Эти элементы XML представляют объекты VFREEBUSY.
Атрибуты:
dtstart
начало временного периода, покрываемого объектом VFREEBUSY.
dtend
конец временного периода, покрываемого объектом VFREEBUSY.
dtstamp
время создания этого объекта VFREEBUSY.
Тело:
набор элементов XML
freebusy
, каждый из которых представляет один временной интервал. Временные интервалы не пересекаются.Атрибуты:
dtstart
начало временного интервала.
dtend
конец временного интервала.
fbtype
необязательный атрибут с типом занятости. Если он не указан, то интервал имеет статус
BUSY
.
Пример:
BEGIN:VFREEBUSY
DTSTART:20080329T075517Z
DTEND:20080604T075517Z
DTSTAMP:20080405T075517Z
FREEBUSY:20080329T075517Z/20080329T120000Z
FREEBUSY:20080330T070000Z/20080330T120000Z
FREEBUSY:20080331T070000Z/20080331T120000Z
END:VFREEBUSY
<vfreebusy dtend="20080604T075517Z" dtstamp="20080405T075517Z" dtstart="20080329T075517Z">
<freebusy dtend="20080329T120000Z" dtstart="20080329T075517Z" />
<freebusy dtend="20080330T120000Z" dtstart="20080330T070000Z" />
<freebusy dtend="20080331T120000Z" dtstart="20080331T070000Z" />
</vfreebusy>
xrule
Этот элемент XML представляет повторяющийся календарный объект.
Атрибуты:
freq
тип повторяемости.
interval
параметр с интервалом. Если отсутствует, интервал подразумевается равным 1.
wkst
название дня, с которого начинается неделя. Если отсутствует, то подразумевается
MO
(Понедельник).count
необязательный атрибут с целочисленным значением, в котором указывается параметр COUNT.
until
необязательный атрибут, указывающий параметр UNTIL в формате даты-времени iCalendar.
Тело:
набор элементов XML:
BYMONTH
,BYWEEKNO
,BYYEARDAY
,BYMONTHDAY
,BYSETPOS
тело каждого элемента содержит число - номер месяца, недели и т.п. За исключением элемента
BYMONTH
, число может быть отрицательным.BYDAY
каждое тело элемента содержит одно наименование дня (
MO
,TU
, ..SU
); каждый элемент может содержать необязательный числовой атрибутweek
- номер недели (он может быть отрицательным).
Пример:
RRULE:FREQ=WEEKLY;INTERVAL=2;BYDAY=MO,TU,WE,TH;UNTIL=20060305T000000Z
<xrule freq="WEEKLY" interval="2" until="20060305T000000Z">
<BYDAY>MO</BYDAY><BYDAY>TU</BYDAY><BYDAY>WE</BYDAY><BYDAY>TH</BYDAY>
</xrule>
Пример:
RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
<xrule freq="YEARLY">
<BYMONTH>10</BYMONTH><BYDAY week="-1">SU</BYDAY>
</xrule>
x509
Этот элемент XML представляет сертификат X.509.
Атрибуты:
version
версия формата сертификата.
subject
необязательный адрес E-Mail, связанный с сертификатом.
Тело:
набор элементов XML:
subject
,issuer
эти элементы XML содержат дочерние элементы XML с частями имени Сертификата и Издателя. Поддерживаются части
c
,country
,l
,city
, и т.д. Значением дочернего элемента является тело элемента.validFrom
,validTill
текстовые тела каждого элемента содержат в формате iCalendar период действия сертификата
base64
необязательный элемент - его тело содержит данные сертификата в формате base64.
sdp
Этот элемент XML представляет объект SDP.
Атрибуты:
ip
IP адрес медиа по умолчанию (необязательно).
origUser
поле с именем пользователя источника (необязательно).
sessionID
поле идентификатора сессии источника.
sessionVersion
поле версии сессии источника.
origIP
IP адрес, указанный в полях nettype, addrtype и unicast-address источника (необязательно).
subject
название сессии (необязательно). Если отсутствует, то используется название
-
.
Тело:
media
Этот элемент XML представляет объект SDP Медиа.
Атрибуты:
media
типа медиа (такой, как
audio
,video
). Если этот атрибут отсутствует, то используется значениеaudio
.ip
адрес и порт медиа.
protocol
медиа протокол (такой, как
udp
,tcp
,RTP/AVP
). Если этот атрибут отсутствует, то используется значениеRTP/AVP
.direction
направление медиа (
sendrecv
,sendonly
,recvonly
,inactive
).rtcp
адрес и порт rtcp (необязательно)
Тело:
codec
Этот элемент XML представляет кодек SDP Медиа.
Атрибуты:
id
идентификатор кодека - номер типа данных RTP (число из диапазона 0..127).
name
имя кодека (такое, как
PCMU/8000
).format
параметр формата кодека (необязательно).
attr
Этот элемент XML представляет атрибут объекта SDP или SDP Медиа.
Атрибуты:
name
имя атрибута.
Тело:
необязательная строка со значением атрибута.
info
Этот элемент XML представляет информационное поле объекта SDP или SDP Медиа. Поддерживаемые поля:
для SDP: info
, uri
, email
, phone
, phone
, bandwidth
, time
, repeat
, zone
и key
;
для SDP Медиа: title
, bandwidth
и key
;
Атрибуты:
отсутствуют.
Тело:
необязательная строка со значением поля.
Пример: образец документа SDP и его представления XML:
v=0
o=- 6385718 9999 IN IP4 192.168.1.65
s=-
e=support@communigatepro.ru
c=IN IP4 192.168.1.65
t=0 0
a=sdpattr1:sdpvalue
a=sdpattr2
m=audio 16398 RTP/AVP 0 4 8 101
t=title value
a=rtpmap:0 PCMU/8000
a=rtpmap:4 G723/8000
a=rtpmap:8 PCMA/8000
a=rtpmap:101 telephone-event/8000
a=fmtp:101 0-15
a=sendrecv
a=mediaattr1:mediavalue
a=mediaattr2
<sdp ip="[192.168.1.65]" origUser="-" sessionID="6385718" sessionVersion="9999" originIP="[192.168.1.65]">
<email>support@communigatepro.ru</email>
<attr name="sdpattr1">sdpvalue</attr>
<attr name="sdpattr2" />
<media media="audio" ip="[192.168.1.65]:16398" protocol="RTP/AVP" direction="sendrecv">
<codec id="0" name="PCMU/8000" />
<codec id="4" name="G723/8000" />
<codec id="8" name="PCMA/8000" />
<codec id="101" name="telephone-event/8000" format="0-15" />
<title>title value</title>
<attr name="mediaattr1">mediavalue</attr>
<attr name="mediaattr2" />
</media>
</sdp>
ASN.1
CommuniGate Pro может преобразовывать структуры в формате ASN.1 в объекты.
Каждый элемент данных ASN.1 преобразуется в массив.
Для элементов данных ASN.1 класса Universal элемент массива с индексом 0 содержит строку с именем типа: boolean
, integer
, bits
, octets
, null
, oid
, objdescr
, external
, real
, enum
, embed
, string
, reloid
, rsrv1
, rsrv2
, seq
, set
, stringNum
, stringPrint
, stringT61
, stringIA5
, string22
, timeUTC
, time
, stringGraphic
, stringISO64
, stringGeneral
, stringUniversal
, string29
, stringBMP
, string31
. Иначе элемент массива с индексом 0 содержит строку с именем класса (application, choice,private), элемент массива с индексом 1 содержит число - код элемента данных.
Для элементов данных типа "constructed" оставшиеся элементы массива (возможно - 0 элементов) содержат конвертированные элементы ASN.1.
Для "примитивных" элементов данных оставшиеся элементы массива содержат представление данных, которое зависит от типа элемента:
boolean
Нулевой Объект для "false", любой другой объект для "true"
integer
,enum
(не длиннее 8 байт)null
string
,_subtype_string
(данные не содержат бинарный нуль)time
,timeUTC
oid
,reloid
представление в виде Строки для идентификатора объекта (ObjectID) (nn.mm.ll.kk.rr)
другие типы данных