POLL
Команда EPP <poll>
призначена для читання службових повідомлень,
які сервер EPP направляє клієнтові.
Якщо черга повідомлень не порожня, то успішна відповідь на команду <poll op="req">
поверне перше повідомлення з черги повідомлень.
У відповіді серверу міститься унікальний ідентифікатор повідомлення
(необхідний для підтвердження отримання повідомлення) і лічильник, що показує загальну кількість повідомлень в черзі.
Отримавши повідомлення, клієнт повинен відповісти на нього явним підтвердженням прийому.
Отримавши підтвердження, сервер видалить повідомлення з черги,
зменшить лічильник черги і зробить доступним для читання
наступне повідомлення в черзі (якщо воно існує).
Зміна об'єктів, які зберігаються в Реєстрі, можуть відбуватися:
- за ініціативою спонсора об'єкту,
- як результат виконання команд іншого клієнта,
- у наслідок дій самого сервера.
Системні повідомлення створюються для клієнтів, що попали під дію над об'єктом.
Наприклад, інформація про команду, що поступила <transfer>
ставиться в чергу реєстраторові,
який уповноважений прийняти або відхилювати запит на трансфер.
Повідомлення в черзі зберігаються обмежений час, який визначається параметрами Реєстру.
Якщо клієнти дуже довго не видаляють прочитані повідомлення (підтверджують їх прийом),
то найстаріші повідомлення автоматично видалятимуться.
Команда <poll>
має атрибут "op", що визначає дію, що буде зроблена командою:
"req" - читання першого непрочитаного повідомлення з черги повідомлень;
"ack" - підтвердження прочитання повідомлення.
Приклад команди <poll op="req">
:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
<command>
<poll op="req" />
<clTRID>USER2-1276609056</clTRID>
</command>
</epp>
Приклад відповіді на команду <poll op="req">
з інформацією, специфічною для об'єкту:
<?xml version="1.0" encoding="UTF-8"?>
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
<response>
<result code="1301">
<msg lang="en">Command completed successfully; ack to dequeue</msg>
</result>
<msgQ count="5" id="12345">
<qDate>2010-06-15T16:37:35+03:00</qDate>
<msg>Transfer requested.</msg>
</msgQ>
<resData>
<domain:trnData xmlns:domain="http://hostmaster.ua/epp/domain-1.1">
<domain:name>example2.epp1.ua</domain:name>
<domain:trStatus>pending</domain:trStatus>
<domain:reID>ua.test</domain:reID>
<domain:reDate>2010-06-15T16:37:35+03:00</domain:reDate>
<domain:acID>ua.hostmaster</domain:acID>
<domain:acDate>2010-06-22T16:37:35+03:00</domain:acDate>
<domain:exDate>2012-06-10T22:58:28+03:00</domain:exDate>
</domain:trnData>
</resData>
<trID>
<clTRID>USER2-1276609056</clTRID>
<svTRID>UA-20100615163736-665862-00002</svTRID>
</trID>
</response>
</epp>
В атрибуті "id" елементу msgQ вказується номер поточного повідомлення
і кількість повідомлень, що залишилися в черзі.
Клієнт повинен підтвердити прийом кожної відповіді,
щоб виключити повідомлення з черги і зробити подальші повідомлення доступними для читання.
Команда <poll>
с атрибутом "ack" повинна мати додатковий атрибут "msgID",
вказуючий номер повідомлення в черзі.
Приклад підтвердження за допомогою команди <poll op="ack">
:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
<command>
<poll op="ack" msgID="12345" />
<clTRID>USER2-1276609057</clTRID>
</command>
</epp>
Приклад відповіді на команду <poll op="ack">
з підтвердженням читання повідомлення:
<?xml version="1.0" encoding="UTF-8"?>
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
<response>
<result code="1000">
<msg lang="en">Command completed successfully</msg>
</result>
<msgQ count="4" id="12345" />
<trID>
<clTRID>USER2-1276609057</clTRID>
<svTRID>UA-20100615163737-665862-00002</svTRID>
</trID>
</response>
</epp>
В атрибуті "id" в елементі msgQ вказується номер видаленого повідомлення
і кількість повідомлень, що залишилися в черзі.
Приклад відповіді на команду <poll op="req">
, який показує, що черга повідомлень порожня:
<?xml version="1.0" encoding="UTF-8"?>
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
<response>
<result code="1300">
<msg lang="en">Command completed successfully; no messages</msg>
</result>
<trID>
<clTRID>USER2-1276609059</clTRID>
<svTRID>UA-20100615163739-665862-00002</svTRID>
</trID>
</response>
</epp>
Коди відповідей сервера на команду <poll>
1000 "Command completed successfully"
"Команду виконано успішно"
"Команда выполнена успешно"
Відповідь на успішно виконану команду <poll op="ack">
1300 "Command completed successfully; no messages"
"Команду виконано успішно, повідомлень немає"
"Команда выполнена успешно, нет сообщений"
Відповідь при успішному виконанні команди <poll op="req">
при порожній черзі повідомлень.
1301 "Command completed successfully; ack to dequeue"
"Команду виконано успішно, видалення з черги"
"Команда выполнена успешно, исключение из очереди"
Відповідь при успішному виконанні команди <poll op="req">
,
яка повідомляє, що повідомлення помічене як прочитане
і може бути видалене з черги.
2001 "Command syntax error"
"Синтаксична помилка команди"
"Синтаксическая ошибка команды"
2004 "Parameter value range error"
"Помилка в значенні параметра"
"Ошибка в значении параметра"
Відповідь при успішному виконанні команди <poll op="ack">
,
яка повідомляє, що повідомлення з вказаним номером не знайдене в черзі.