5 #ifndef CRYPTOPP_IMPORTS 12 : m_queue(nodeSize), m_lengths(1, 0U), m_messageCounts(1, 0U)
27 size_t blockedBytes = m_queue.
TransferTo2(target, transferBytes, channel, blocking);
28 m_lengths.front() -= transferBytes;
36 m_lengths.pop_front();
37 if (m_messageCounts[0] == 0 && m_messageCounts.size() > 1)
38 m_messageCounts.pop_front();
45 unsigned int MessageQueue::CopyMessagesTo(
BufferedTransformation &target,
unsigned int count,
const std::string &channel)
const 48 std::deque<lword>::const_iterator it = m_lengths.begin();
50 for (i=0; i<count && it != --m_lengths.end(); ++i, ++it)
53 if (GetAutoSignalPropagation())
61 m_queue.swap(rhs.m_queue);
62 m_lengths.swap(rhs.m_lengths);
65 const byte * MessageQueue::Spy(
size_t &contiguousSize)
const 67 const byte *result = m_queue.Spy(contiguousSize);
74 unsigned int EqualityComparisonFilter::MapChannel(
const std::string &channel)
const 76 if (channel == m_firstChannel)
78 else if (channel == m_secondChannel)
89 unsigned int i = MapChannel(channel);
92 return Output(3, inString, length, messageEnd, blocking, channel);
93 else if (m_mismatchDetected)
99 if (q2.AnyMessages() && q2.MaxRetrievable() < length)
102 while (length > 0 && q2.AnyRetrievable())
105 const byte *data = q2.Spy(len);
106 len =
STDMIN(len, length);
107 if (memcmp(inString, data, len) != 0)
114 q1.
Put(inString, length);
118 if (q2.AnyRetrievable())
120 else if (q2.AnyMessages())
122 else if (q2.NumberOfMessageSeries() > 0)
131 return HandleMismatchDetected(blocking);
137 unsigned int i = MapChannel(channel);
141 OutputMessageSeriesEnd(4, propagation, blocking, channel);
144 else if (m_mismatchDetected)
150 if (q2.AnyRetrievable() || q2.AnyMessages())
152 else if (q2.NumberOfMessageSeries() > 0)
153 return Output(2, (
const byte *)
"\1", 1, 0, blocking) != 0;
160 return HandleMismatchDetected(blocking);
164 bool EqualityComparisonFilter::HandleMismatchDetected(
bool blocking)
166 m_mismatchDetected =
true;
167 if (m_throwIfNotEqual)
169 return Output(1, (
const byte *)
"\0", 1, 0, blocking) != 0;
unsigned int NumberOfMessages() const
Provides the number of meesages processed by this object.
lword MaxRetrievable() const
Provides the number of bytes ready for retrieval.
bool AnyRetrievable() const
Determines whether bytes are ready for retrieval.
size_t TransferTo2(BufferedTransformation &target, lword &transferBytes, const std::string &channel=DEFAULT_CHANNEL, bool blocking=true)
Transfer bytes from this object to another BufferedTransformation.
bool ChannelMessageSeriesEnd(const std::string &channel, int propagation=-1, bool blocking=true)
Marks the end of a series of messages on a channel.
size_t CopyRangeTo2(BufferedTransformation &target, lword &begin, lword end=LWORD_MAX, const std::string &channel=DEFAULT_CHANNEL, bool blocking=true) const
Copy bytes from this object to another BufferedTransformation.
const T1 UnsignedMin(const T1 &a, const T2 &b)
Safe comparison of values that could be neagtive and incorrectly promoted.
const T & STDMIN(const T &a, const T &b)
Replacement function for std::min.
size_t ChannelPut2(const std::string &channel, const byte *begin, size_t length, int messageEnd, bool blocking)
Input multiple bytes for processing on a channel.
bool GetNextMessage()
Start retrieving the next message.
Crypto++ library namespace.
size_t TransferTo2(BufferedTransformation &target, lword &transferBytes, const std::string &channel=DEFAULT_CHANNEL, bool blocking=true)
Transfer bytes from this object to another BufferedTransformation.
size_t CopyRangeTo2(BufferedTransformation &target, lword &begin, lword end=LWORD_MAX, const std::string &channel=DEFAULT_CHANNEL, bool blocking=true) const
Copy bytes from this object to another BufferedTransformation.