mqueue.h

来自「一个俄国人实现的数据库系统」· C头文件 代码 · 共 62 行

H
62
字号
#ifndef CRYPTOPP_MQUEUE_H#define CRYPTOPP_MQUEUE_H#include "queue.h"#include "filters.h"#include <deque>NAMESPACE_BEGIN(CryptoPP)//! Message Queueclass MessageQueue : public BufferedTransformationWithAutoSignal{public:	MessageQueue(unsigned int nodeSize=256);	void Put(byte inByte)		{m_queue.Put(inByte); m_lengths.back()++;}	void Put(const byte *inString, unsigned int length)		{m_queue.Put(inString, length); m_lengths.back()+=length;}	unsigned long MaxRetrievable() const		{return m_lengths.front();}	bool AnyRetrievable() const		{return m_lengths.front() > 0;}	unsigned long TransferTo(BufferedTransformation &target, unsigned long transferMax=ULONG_MAX)		{return Got(m_queue.TransferTo(target, STDMIN(MaxRetrievable(), transferMax)));}	unsigned long CopyTo(BufferedTransformation &target, unsigned long copyMax=ULONG_MAX) const		{return m_queue.CopyTo(target, STDMIN(MaxRetrievable(), copyMax));}	void MessageEnd(int=-1)		{m_lengths.push_back(0);}	unsigned long TotalBytesRetrievable() const		{return m_queue.MaxRetrievable();}	unsigned int NumberOfMessages() const		{return m_lengths.size()-1;}	bool RetrieveNextMessage();	unsigned int CopyMessagesTo(BufferedTransformation &target, unsigned int count=UINT_MAX) const;	void swap(MessageQueue &rhs);private:	unsigned long Got(unsigned long length)		{assert(m_lengths.front() >= length); m_lengths.front() -= length; return length;}	ByteQueue m_queue;	std::deque<unsigned long> m_lengths;};NAMESPACE_ENDNAMESPACE_BEGIN(std)template<> inline void swap(CryptoPP::MessageQueue &a, CryptoPP::MessageQueue &b){	a.swap(b);}NAMESPACE_END#endif

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?