1 #ifndef CRYPTOPP_MQUEUE_H 2 #define CRYPTOPP_MQUEUE_H 20 {m_queue.IsolatedInitialize(parameters); m_lengths.assign(1, 0U); m_messageCounts.assign(1, 0U);}
21 size_t Put2(
const byte *begin,
size_t length,
int messageEnd,
bool blocking)
23 CRYPTOPP_UNUSED(blocking);
24 m_queue.Put(begin, length);
25 m_lengths.back() += length;
28 m_lengths.push_back(0);
29 m_messageCounts.back()++;
34 {CRYPTOPP_UNUSED(hardFlush), CRYPTOPP_UNUSED(blocking);
return false;}
36 {CRYPTOPP_UNUSED(blocking); m_messageCounts.push_back(0);
return false;}
39 {
return m_lengths.front();}
41 {
return m_lengths.front() > 0;}
43 size_t TransferTo2(BufferedTransformation &target, lword &transferBytes,
const std::string &channel=
DEFAULT_CHANNEL,
bool blocking=
true);
44 size_t CopyRangeTo2(BufferedTransformation &target, lword &begin, lword end=LWORD_MAX,
const std::string &channel=
DEFAULT_CHANNEL,
bool blocking=
true)
const;
47 {
return m_queue.MaxRetrievable();}
49 {
return (
unsigned int)m_lengths.size()-1;}
50 bool GetNextMessage();
52 unsigned int NumberOfMessagesInThisSeries()
const 53 {
return m_messageCounts[0];}
54 unsigned int NumberOfMessageSeries()
const 55 {
return (
unsigned int)m_messageCounts.size()-1;}
57 unsigned int CopyMessagesTo(BufferedTransformation &target,
unsigned int count=UINT_MAX,
const std::string &channel=
DEFAULT_CHANNEL)
const;
59 const byte * Spy(
size_t &contiguousSize)
const;
65 std::deque<lword> m_lengths;
66 std::deque<unsigned int> m_messageCounts;
78 : m_throwIfNotEqual(throwIfNotEqual), m_mismatchDetected(false)
79 , m_firstChannel(firstChannel), m_secondChannel(secondChannel)
82 size_t ChannelPut2(
const std::string &channel,
const byte *begin,
size_t length,
int messageEnd,
bool blocking);
83 bool ChannelMessageSeriesEnd(
const std::string &channel,
int propagation=-1,
bool blocking=
true);
86 unsigned int MapChannel(
const std::string &channel)
const;
87 bool HandleMismatchDetected(
bool blocking);
89 bool m_throwIfNotEqual, m_mismatchDetected;
90 std::string m_firstChannel, m_secondChannel;
98 template<>
inline void swap(CryptoPP::MessageQueue &a, CryptoPP::MessageQueue &b)
Base class for all exceptions thrown by Crypto++.
Utility functions for the Crypto++ library.
size_t Put2(const byte *begin, size_t length, int messageEnd, bool blocking)
Input multiple bytes for processing.
unsigned int NumberOfMessages() const
Provides the number of meesages processed by this object.
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.
lword MaxRetrievable() const
Provides the number of bytes ready for retrieval.
EqualityComparisonFilter(BufferedTransformation *attachment=NULL, bool throwIfNotEqual=true, const std::string &firstChannel="0", const std::string &secondChannel="1")
bool AnyRetrievable() const
Determines whether bytes are ready for retrieval.
Classes for an unlimited queue to store bytes.
const std::string DEFAULT_CHANNEL
Default channel for BufferedTransformation.
Implementation of BufferedTransformation's attachment interface in cryptlib.h.
Base class for unflushable filters.
Provides auto signaling support.
A filter that checks messages on two channels for equality.
Crypto++ library namespace.
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.