unsigned int Grouper::Put2(const byte *begin, unsigned int length, int messageEnd, bool blocking) { if (m_groupSize) { FILTER_BEGIN; while (m_inputPosition < length) { if (m_counter == m_groupSize) { FILTER_OUTPUT(1, m_seperator, m_seperator.size(), 0); m_counter = 0; } unsigned int len; FILTER_OUTPUT2(2, len = STDMIN(length-m_inputPosition, m_groupSize-m_counter), begin+m_inputPosition, len, 0); m_inputPosition += len; m_counter += len; } if (messageEnd) FILTER_OUTPUT(3, m_terminator, m_terminator.size(), messageEnd); FILTER_END_NO_MESSAGE_END } else return Output(0, begin, length, messageEnd, blocking);
size_t Grouper::Put2(const byte *begin, size_t length, int messageEnd, bool blocking) { FILTER_BEGIN; if (m_groupSize) { while (m_inputPosition < length) { if (m_counter == m_groupSize) { FILTER_OUTPUT(1, m_separator, m_separator.size(), 0); m_counter = 0; } size_t len; FILTER_OUTPUT2(2, len = STDMIN(length-m_inputPosition, m_groupSize-m_counter), begin+m_inputPosition, len, 0); m_inputPosition += len; m_counter += len; } } else FILTER_OUTPUT(3, begin, length, 0); if (messageEnd) { FILTER_OUTPUT(4, m_terminator, m_terminator.size(), messageEnd); m_counter = 0; } FILTER_END_NO_MESSAGE_END }