void ByteQueue::LazyPut(const byte *inString, unsigned int size) { if (m_lazyLength > 0) FinalizeLazyPut(); m_lazyString = inString; m_lazyLength = size; }
void ByteQueue::LazyPutModifiable(byte *inString, size_t size) { if (m_lazyLength > 0) FinalizeLazyPut(); m_lazyString = inString; m_lazyLength = size; m_lazyStringModifiable = true; }
byte * ByteQueue::CreatePutSpace(size_t &size) { if (m_lazyLength > 0) FinalizeLazyPut(); if (m_tail->m_tail == m_tail->MaxSize()) { m_tail->next = new ByteQueueNode(STDMAX(m_nodeSize, size)); m_tail = m_tail->next; } size = m_tail->MaxSize() - m_tail->m_tail; return m_tail->buf + m_tail->m_tail; }
void ByteQueue::LazyPut(const byte *inString, size_t size) { if (m_lazyLength > 0) FinalizeLazyPut(); if (inString == m_tail->buf+m_tail->m_tail) Put(inString, size); else { m_lazyString = const_cast<byte *>(inString); m_lazyLength = size; m_lazyStringModifiable = false; } }
unsigned int ByteQueue::Put2(const byte *inString, unsigned int length, int messageEnd, bool blocking) { if (m_lazyLength > 0) FinalizeLazyPut(); unsigned int len; while ((len=m_tail->Put(inString, length)) < length) { m_tail->next = new ByteQueueNode(m_nodeSize); m_tail = m_tail->next; inString += len; length -= len; } return 0; }
size_t ByteQueue::Put2(const byte *inString, size_t length, int messageEnd, bool blocking) { if (m_lazyLength > 0) FinalizeLazyPut(); size_t len; while ((len=m_tail->Put(inString, length)) < length) { inString += len; length -= len; if (m_autoNodeSize && m_nodeSize < s_maxAutoNodeSize) do { m_nodeSize *= 2; } while (m_nodeSize < length && m_nodeSize < s_maxAutoNodeSize); m_tail->next = new ByteQueueNode(STDMAX(m_nodeSize, length)); m_tail = m_tail->next; } return 0; }