ИСПРАВЛЕНИЕ: Клиент запросил GapFill, но вместо этого я хочу отправить SequenceReset. Какая последовательность должна быть?

Итак, мой клиент запрашивает GapFill, потому что наши последовательности отключены. Вместо того, чтобы воспроизводить сообщения, я хочу вместо этого отправить SequenceReset. Мой вопрос прост: какой должна быть последовательность сообщений этого SequenceReset, который я собираюсь отправить ему? Я не хочу, чтобы мой клиент отбрасывал его, потому что он не распознает последовательность сообщений в моем SequenceReset, или не обнаруживает пробел и не запрашивает другой GapFill, что приведет меня к бесконечному циклу.

Должен ли я отправить свой SequenceReset с последовательностью первого сообщения, которое клиент запросил для повтора?

Сообщения сеанса повторно отправляются во время GapFill?

Отбрасывает ли клиент сеансовые сообщения, если их последовательность отключена? (я бы так подумал).

Итак, подводя итог, мой вопрос:

Какую последовательность следует использовать в SequenceReset после GapFill от клиента, чтобы мой клиент действительно мог обработать мой SequenceReset и продолжить работу?


person chrisapotek    schedule 03.07.2014    source источник


Ответы (1)


Существует два типа SequenceReset:

1. With GapFillFlag = 'Y'

2. With GapFillFlag = 'N'

Для 1. принимающая сторона должна ИГНОРИРОВАТЬ MsgSeq в сообщении и просто обработать его.

Для 2. отправляющая сторона должна сделать MsgSeq равным BeginSeq, чтобы принимающая сторона больше не запрашивала GapFill, как вы описали.

Из спецификации исправления:

Если поле GapFillFlag присутствует (и равно Y), MsgSeqNum должен соответствовать стандартным правилам упорядочения сообщений (т. е. MsgSeqNum сообщения Sequence Reset-GapFill должен представлять начальный MsgSeqNum в диапазоне GapFill, поскольку удаленная сторона ожидает, что следующий сообщение).

person rdalmeida    schedule 03.07.2014