6 #ifndef CRYPTOPP_MQUEUE_H 7 #define CRYPTOPP_MQUEUE_H 34 {m_queue.IsolatedInitialize(parameters); m_lengths.assign(1, 0U); m_messageCounts.assign(1, 0U);}
35 size_t Put2(
const byte *begin,
size_t length,
int messageEnd,
bool blocking)
37 CRYPTOPP_UNUSED(blocking);
38 m_queue.Put(begin, length);
39 m_lengths.back() += length;
42 m_lengths.push_back(0);
43 m_messageCounts.back()++;
48 {CRYPTOPP_UNUSED(hardFlush), CRYPTOPP_UNUSED(blocking);
return false;}
50 {CRYPTOPP_UNUSED(blocking); m_messageCounts.push_back(0);
return false;}
53 {
return m_lengths.front();}
55 {
return m_lengths.front() > 0;}
61 {
return m_queue.MaxRetrievable();}
63 {
return (
unsigned int)m_lengths.size()-1;}
64 bool GetNextMessage();
67 {
return m_messageCounts[0];}
69 {
return (
unsigned int)m_messageCounts.size()-1;}
84 const byte * Spy(
size_t &contiguousSize)
const;
92 std::deque<lword> m_lengths;
93 std::deque<unsigned int> m_messageCounts;
104 MismatchDetected() :
Exception(DATA_INTEGRITY_CHECK_FAILED,
"EqualityComparisonFilter: did not receive the same data on two channels") {}
116 : m_throwIfNotEqual(throwIfNotEqual), m_mismatchDetected(false)
117 , m_firstChannel(firstChannel), m_secondChannel(secondChannel)
118 {Detach(attachment);}
121 size_t ChannelPut2(
const std::string &channel,
const byte *begin,
size_t length,
int messageEnd,
bool blocking);
122 bool ChannelMessageSeriesEnd(
const std::string &channel,
int propagation=-1,
bool blocking=
true);
125 unsigned int MapChannel(
const std::string &channel)
const;
126 bool HandleMismatchDetected(
bool blocking);
129 bool m_throwIfNotEqual, m_mismatchDetected;
130 std::string m_firstChannel, m_secondChannel;
138 template<>
inline void swap(CryptoPP::MessageQueue &a, CryptoPP::MessageQueue &b)
Base class for all exceptions thrown by the library.
bool AnyRetrievable() const
Determines whether bytes are ready for retrieval.
Utility functions for the Crypto++ library.
size_t Put2(const byte *begin, size_t length, int messageEnd, bool blocking)
Input multiple bytes for processing.
Data structure used to store messages.
Abstract base classes that provide a uniform interface to this library.
bool IsolatedFlush(bool hardFlush, bool blocking)
Flushes data buffered by this object, without signal propagation.
bool IsolatedMessageSeriesEnd(bool blocking)
Marks the end of a series of messages, without signal propagation.
unsigned int NumberOfMessageSeries() const
Provides the number of messages in a series.
EqualityComparisonFilter(BufferedTransformation *attachment=NULL, bool throwIfNotEqual=true, const std::string &firstChannel="0", const std::string &secondChannel="1")
Construct an EqualityComparisonFilter.
unsigned int NumberOfMessagesInThisSeries() const
Provides the number of messages in a series.
Classes for an unlimited queue to store bytes.
const std::string DEFAULT_CHANNEL
Default channel for BufferedTransformation.
unsigned int NumberOfMessages() const
Provides the number of meesages processed by this object.
Data structure used to store byte strings.
Implementation of BufferedTransformation's attachment interface.
word64 lword
Large word type.
unsigned char byte
8-bit unsigned datatype
Base class for unflushable filters.
const lword LWORD_MAX
Large word type max value.
Provides auto signaling support.
lword MaxRetrievable() const
Provides the number of bytes ready for retrieval.
MismatchDetected()
Construct a MismatchDetected exception.
Different messages were detected.
Filter that checks messages on two channels for equality.
Crypto++ library namespace.
void swap(::SecBlock< T, A > &a, ::SecBlock< T, A > &b)
Swap two SecBlocks.
lword TotalBytesRetrievable() const
Provides the number of bytes ready for retrieval.
void IsolatedInitialize(const NameValuePairs ¶meters)
Initialize or reinitialize this object, without signal propagation.
Interface for retrieving values given their names.