.UA - наш дом. Сделаем его лучшим!
Тестовый Сервер


POLL

Команда EPP <poll> предназначена для чтения служебных сообщений, которые сервер EPP направляет клиенту.

Если очередь сообщений не пуста, то успешный ответ на команду <poll> вернет первое сообщение из очереди сообщений. В ответе сервера содержится уникальный идентификатор сообщения (необходим для подтверждения получения сообщения) и счетчик, показывающий общее количество сообщений в очереди.

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

Изменение объектов, которые хранятся в Реестре, могут происходить:

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

Системные сообщения создаются для клиентов, попавших под действие над объектом. Например, информация о поступившей команде <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> с информацией, специфической для объекта:

  <?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://eunic.net.ua/epp/domain-1.1">
          <domain:name>example2.epp.ua</domain:name>
          <domain:trStatus>pending</domain:trStatus>
          <domain:reID>co.test</domain:reID>
          <domain:reDate>2010-06-15T16:37:35+03:00</domain:reDate>
          <domain:acID>co.eunic</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>CO-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> с подтвержденем чтения сообщения:

  <?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>CO-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>CO-20100615163739-665862-00002</svTRID>
      </trID>
    </response>
  </epp>

Коды ответов сервера на команду <poll>

1000    "Command completed successfully"
        "Команду виконано успішно"
        "Команда выполнена успешно"
	Ответ на успешно выполненную команду <poll op="ack">

1300 	"Command completed successfully; no messages"
	"Команду виконано успішно, повідомлень немає"
	"Команда выполнена успешно, нет сообщений"
	Ответ при успешном выполнении команды <poll>
	при пустой очереди сообщений.

1301	"Command completed successfully; ack to dequeue"
	"Команду виконано успішно, видалення з черги"
	"Команда выполнена успешно, исключение из очереди"
	Ответ при успешном выполнении команды <poll>,
	уведомляющее, что сообщение помечено как прочитанное 
	и удалено из очереди.

2001    "Command syntax error"
        "Синтаксична помилка команди"
        "Синтаксическая ошибка команды"