亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? network.h

?? 應(yīng)用非對(duì)稱密鑰系統(tǒng)RSA密碼系統(tǒng)進(jìn)行數(shù)據(jù)簽名的代碼
?? H
字號(hào):
#ifndef CRYPTOPP_NETWORK_H
#define CRYPTOPP_NETWORK_H

#include "config.h"

#ifdef HIGHRES_TIMER_AVAILABLE

#include "filters.h"
#include "hrtimer.h"

#include <deque>

NAMESPACE_BEGIN(CryptoPP)

class LimitedBandwidth
{
public:
	LimitedBandwidth(lword maxBytesPerSecond = 0)
		: m_maxBytesPerSecond(maxBytesPerSecond), m_timer(Timer::MILLISECONDS)
		, m_nextTransceiveTime(0)
		{ m_timer.StartTimer(); }

	lword GetMaxBytesPerSecond() const
		{ return m_maxBytesPerSecond; }

	void SetMaxBytesPerSecond(lword v)
		{ m_maxBytesPerSecond = v; }

	lword ComputeCurrentTransceiveLimit();

	double TimeToNextTransceive();

	void NoteTransceive(lword size);

public:
	/*! GetWaitObjects() must be called despite the 0 return from GetMaxWaitObjectCount();
	    the 0 is because the ScheduleEvent() method is used instead of adding a wait object */
	unsigned int GetMaxWaitObjectCount() const { return 0; }
	void GetWaitObjects(WaitObjectContainer &container, const CallStack &callStack);

private:	
	lword m_maxBytesPerSecond;

	typedef std::deque<std::pair<double, lword> > OpQueue;
	OpQueue m_ops;

	Timer m_timer;
	double m_nextTransceiveTime;

	void ComputeNextTransceiveTime();
	double GetCurTimeAndCleanUp();
};

//! a Source class that can pump from a device for a specified amount of time.
class CRYPTOPP_NO_VTABLE NonblockingSource : public AutoSignaling<Source>, public LimitedBandwidth
{
public:
	NonblockingSource(BufferedTransformation *attachment)
		: m_messageEndSent(false) , m_doPumpBlocked(false), m_blockedBySpeedLimit(false) {Detach(attachment);}

	//!	\name NONBLOCKING SOURCE
	//@{

	//! pump up to maxSize bytes using at most maxTime milliseconds
	/*! If checkDelimiter is true, pump up to delimiter, which itself is not extracted or pumped. */
	size_t GeneralPump2(lword &byteCount, bool blockingOutput=true, unsigned long maxTime=INFINITE_TIME, bool checkDelimiter=false, byte delimiter='\n');

	lword GeneralPump(lword maxSize=LWORD_MAX, unsigned long maxTime=INFINITE_TIME, bool checkDelimiter=false, byte delimiter='\n')
	{
		GeneralPump2(maxSize, true, maxTime, checkDelimiter, delimiter);
		return maxSize;
	}
	lword TimedPump(unsigned long maxTime)
		{return GeneralPump(LWORD_MAX, maxTime);}
	lword PumpLine(byte delimiter='\n', lword maxSize=1024)
		{return GeneralPump(maxSize, INFINITE_TIME, true, delimiter);}

	size_t Pump2(lword &byteCount, bool blocking=true)
		{return GeneralPump2(byteCount, blocking, blocking ? INFINITE_TIME : 0);}
	size_t PumpMessages2(unsigned int &messageCount, bool blocking=true);
	//@}

protected:
	virtual size_t DoPump(lword &byteCount, bool blockingOutput,
		unsigned long maxTime, bool checkDelimiter, byte delimiter) =0;

	bool BlockedBySpeedLimit() const { return m_blockedBySpeedLimit; }

private:
	bool m_messageEndSent, m_doPumpBlocked, m_blockedBySpeedLimit;
};

//! Network Receiver
class CRYPTOPP_NO_VTABLE NetworkReceiver : public Waitable
{
public:
	virtual bool MustWaitToReceive() {return false;}
	virtual bool MustWaitForResult() {return false;}
	//! receive data from network source, returns whether result is immediately available
	virtual bool Receive(byte* buf, size_t bufLen) =0;
	virtual unsigned int GetReceiveResult() =0;
	virtual bool EofReceived() const =0;
};

class CRYPTOPP_NO_VTABLE NonblockingSinkInfo
{
public:
	virtual ~NonblockingSinkInfo() {}
	virtual size_t GetMaxBufferSize() const =0;
	virtual size_t GetCurrentBufferSize() const =0;
	virtual bool EofPending() const =0;
	//! compute the current speed of this sink in bytes per second
	virtual float ComputeCurrentSpeed() =0;
	//! get the maximum observed speed of this sink in bytes per second
	virtual float GetMaxObservedSpeed() const =0;
};

//! a Sink class that queues input and can flush to a device for a specified amount of time.
class CRYPTOPP_NO_VTABLE NonblockingSink : public Sink, public NonblockingSinkInfo, public LimitedBandwidth
{
public:
	NonblockingSink() : m_blockedBySpeedLimit(false) {}

	bool IsolatedFlush(bool hardFlush, bool blocking);

	//! flush to device for no more than maxTime milliseconds
	/*! This function will repeatedly attempt to flush data to some device, until
		the queue is empty, or a total of maxTime milliseconds have elapsed.
		If maxTime == 0, at least one attempt will be made to flush some data, but
		it is likely that not all queued data will be flushed, even if the device
		is ready to receive more data without waiting. If you want to flush as much data
		as possible without waiting for the device, call this function in a loop.
		For example: while (sink.TimedFlush(0) > 0) {}
		\return number of bytes flushed
	*/
	lword TimedFlush(unsigned long maxTime, size_t targetSize = 0);

	virtual void SetMaxBufferSize(size_t maxBufferSize) =0;
	//! set a bound which will cause sink to flush if exceeded by GetCurrentBufferSize()
	virtual void SetAutoFlushBound(size_t bound) =0;

protected:
	virtual lword DoFlush(unsigned long maxTime, size_t targetSize) = 0;

	bool BlockedBySpeedLimit() const { return m_blockedBySpeedLimit; }

private:
	bool m_blockedBySpeedLimit;
};

//! Network Sender
class CRYPTOPP_NO_VTABLE NetworkSender : public Waitable
{
public:
	virtual bool MustWaitToSend() {return false;}
	virtual bool MustWaitForResult() {return false;}
	virtual void Send(const byte* buf, size_t bufLen) =0;
	virtual unsigned int GetSendResult() =0;
	virtual bool MustWaitForEof() {return false;}
	virtual void SendEof() =0;
	virtual bool EofSent() {return false;}	// implement if MustWaitForEof() == true
};

//! Network Source
class CRYPTOPP_NO_VTABLE NetworkSource : public NonblockingSource
{
public:
	NetworkSource(BufferedTransformation *attachment);

	unsigned int GetMaxWaitObjectCount() const;
	void GetWaitObjects(WaitObjectContainer &container, CallStack const& callStack);

	bool SourceExhausted() const {return m_dataBegin == m_dataEnd && GetReceiver().EofReceived();}

protected:
	size_t DoPump(lword &byteCount, bool blockingOutput, unsigned long maxTime, bool checkDelimiter, byte delimiter);

	virtual NetworkReceiver & AccessReceiver() =0;
	const NetworkReceiver & GetReceiver() const {return const_cast<NetworkSource *>(this)->AccessReceiver();}

private:
	SecByteBlock m_buf;
	size_t m_putSize, m_dataBegin, m_dataEnd;
	bool m_waitingForResult, m_outputBlocked;
};

//! Network Sink
class CRYPTOPP_NO_VTABLE NetworkSink : public NonblockingSink
{
public:
	NetworkSink(unsigned int maxBufferSize, unsigned int autoFlushBound);

	unsigned int GetMaxWaitObjectCount() const;
	void GetWaitObjects(WaitObjectContainer &container, CallStack const& callStack);

	size_t Put2(const byte *inString, size_t length, int messageEnd, bool blocking);

	void SetMaxBufferSize(size_t maxBufferSize) {m_maxBufferSize = maxBufferSize; m_buffer.SetNodeSize(UnsignedMin(maxBufferSize, 16U*1024U+256U));}
	void SetAutoFlushBound(size_t bound) {m_autoFlushBound = bound;}

	size_t GetMaxBufferSize() const {return m_maxBufferSize;}
	size_t GetCurrentBufferSize() const {return (size_t)m_buffer.CurrentSize();}

	void ClearBuffer() { m_buffer.Clear(); }

	bool EofPending() const { return m_eofState > EOF_NONE && m_eofState < EOF_DONE; }

	//! compute the current speed of this sink in bytes per second
	float ComputeCurrentSpeed();
	//! get the maximum observed speed of this sink in bytes per second
	float GetMaxObservedSpeed() const;

protected:
	lword DoFlush(unsigned long maxTime, size_t targetSize);

	virtual NetworkSender & AccessSender() =0;
	const NetworkSender & GetSender() const {return const_cast<NetworkSink *>(this)->AccessSender();}

private:
	enum EofState { EOF_NONE, EOF_PENDING_SEND, EOF_PENDING_DELIVERY, EOF_DONE };

	size_t m_maxBufferSize, m_autoFlushBound;
	bool m_needSendResult, m_wasBlocked;
	EofState m_eofState;
	ByteQueue m_buffer;
	size_t m_skipBytes;
	Timer m_speedTimer;
	float m_byteCountSinceLastTimerReset, m_currentSpeed, m_maxObservedSpeed;
};

NAMESPACE_END

#endif	// #ifdef HIGHRES_TIMER_AVAILABLE

#endif

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美性猛交xxxx乱大交退制版| 精品一区二区国语对白| 99久久精品免费看国产免费软件| 国产欧美日韩视频一区二区 | 视频在线观看一区二区三区| 欧美精品一二三区| 免费观看成人鲁鲁鲁鲁鲁视频| 精品美女一区二区三区| 国产成人在线免费观看| 国产精品久久久久久久久动漫 | 欧美激情艳妇裸体舞| 99精品在线观看视频| 亚洲国产三级在线| 日韩精品中文字幕一区二区三区| 国产永久精品大片wwwapp| 国产精品久久久久久久久快鸭| 91老师片黄在线观看| 亚洲成人精品一区| 日韩精品中文字幕一区 | 强制捆绑调教一区二区| 久久综合久久综合亚洲| 色综合天天视频在线观看| 日韩国产一二三区| 国产欧美精品区一区二区三区| 在线免费视频一区二区| 精品一区二区三区免费| 国产精品国产三级国产有无不卡| 精品视频一区 二区 三区| 国产麻豆成人传媒免费观看| 亚洲综合色丁香婷婷六月图片| 日韩精品一区二区三区视频| 91影视在线播放| 麻豆国产91在线播放| 亚洲美女在线一区| 久久婷婷久久一区二区三区| 欧美伦理视频网站| 不卡一区二区在线| 久久国产精品99精品国产| 一区二区三区不卡在线观看| 久久久久久久久久看片| 69堂亚洲精品首页| 91看片淫黄大片一级在线观看| 免费高清成人在线| 亚洲午夜久久久久| 国产欧美一区视频| 日韩欧美精品三级| 欧美视频一区二区三区四区 | 精品日韩在线观看| 欧美系列一区二区| 97久久人人超碰| 国产成人亚洲综合a∨婷婷图片| 日韩国产欧美在线观看| 亚洲一区二区av电影| 日韩美女视频一区| 国产日韩av一区| xfplay精品久久| 欧美一区二区在线不卡| 欧美视频在线一区二区三区| 一本大道久久精品懂色aⅴ| 东方欧美亚洲色图在线| 黄色成人免费在线| 日本91福利区| 日韩福利电影在线| 日韩成人一区二区三区在线观看| 亚洲欧美激情小说另类| 亚洲欧洲日韩女同| 中文字幕一区二区三区乱码在线| 欧美激情中文不卡| 国产日产欧美一区二区三区| 久久久99精品免费观看不卡| 精品久久久影院| 精品第一国产综合精品aⅴ| 欧美一区二区免费观在线| 91精品国产91综合久久蜜臀| 欧美一区二区三区公司| 91精品国产乱码久久蜜臀| 666欧美在线视频| 欧美一区二区三区视频在线| 日韩欧美一级特黄在线播放| 日韩亚洲欧美一区二区三区| 欧美成人性福生活免费看| 精品国产乱码久久久久久夜甘婷婷 | 婷婷久久综合九色综合绿巨人 | 欧美白人最猛性xxxxx69交| 欧美一级电影网站| 日韩免费观看2025年上映的电影| 精品国产精品一区二区夜夜嗨| 欧美va亚洲va在线观看蝴蝶网| 精品成a人在线观看| 国产日韩欧美精品在线| 中文字幕一区在线观看| 亚洲精品欧美激情| 午夜精品福利视频网站| 麻豆精品一二三| 国产成人综合在线观看| 91视频www| 在线播放91灌醉迷j高跟美女| 日韩欧美一卡二卡| 亚洲国产精华液网站w| 一区二区三区欧美| 青娱乐精品视频| 国产91综合一区在线观看| 日本乱人伦一区| 日韩三级.com| 国产精品国产三级国产| 亚洲va国产va欧美va观看| 激情综合色综合久久综合| 91香蕉国产在线观看软件| 欧美精品一卡二卡| 国产日产欧美一区| 亚洲国产精品综合小说图片区| 老汉av免费一区二区三区| 不卡av在线免费观看| 欧美日韩黄色影视| 久久久国际精品| 一区二区三区产品免费精品久久75| 免费看欧美女人艹b| 不卡av在线免费观看| 日韩午夜小视频| 国产精品国产三级国产普通话三级 | 欧美日本一区二区在线观看| 久久久综合九色合综国产精品| 一区二区三区在线观看国产| 老司机精品视频线观看86| 色综合天天综合网国产成人综合天| 欧美一区二区三区四区在线观看| 中文字幕一区免费在线观看| 日韩精品成人一区二区在线| 99久久伊人网影院| 欧美一区二区三区四区久久| 亚洲品质自拍视频| 国产激情91久久精品导航| 欧美精品欧美精品系列| 亚洲视频1区2区| 国产剧情一区二区| 欧美一区二区三区视频免费| 亚洲欧美日韩国产成人精品影院 | 中文字幕av资源一区| 免费观看在线色综合| 欧美吻胸吃奶大尺度电影| 亚洲国产精品传媒在线观看| 久久精品国产免费| 欧洲生活片亚洲生活在线观看| 国产日韩精品一区二区浪潮av| 日韩av一区二| 欧美日本韩国一区| 亚洲一区av在线| 91色九色蝌蚪| 国产精品美女久久久久高潮| 国产精品小仙女| 欧美va亚洲va| 蜜臀久久99精品久久久久久9| 欧美日韩国产乱码电影| 怡红院av一区二区三区| jlzzjlzz亚洲日本少妇| 国产日韩欧美亚洲| 国产寡妇亲子伦一区二区| 2021中文字幕一区亚洲| 麻豆91免费看| 日韩欧美资源站| 另类小说图片综合网| 日韩视频在线观看一区二区| 日本va欧美va精品发布| 欧美一区二区三区成人| 久久精品国产77777蜜臀| 日韩免费电影一区| 精品一二线国产| 久久久蜜臀国产一区二区| 国产精品一区二区三区四区| 国产日产欧美一区二区三区| 高清shemale亚洲人妖| 国产精品国产三级国产专播品爱网| 成人一区二区三区中文字幕| 亚洲欧洲精品一区二区三区| 91网站最新网址| 亚洲国产sm捆绑调教视频| 制服丝袜一区二区三区| 麻豆久久一区二区| 国产亚洲成aⅴ人片在线观看| 成人高清免费观看| 日韩毛片一二三区| 在线观看成人免费视频| 亚洲chinese男男1069| 日韩欧美高清一区| 国产成人av影院| 亚洲婷婷综合久久一本伊一区| 欧美在线观看你懂的| 日本亚洲一区二区| 国产清纯白嫩初高生在线观看91| 99热这里都是精品| 亚洲va在线va天堂| 欧美成人免费网站| 成人黄页在线观看| 亚洲bdsm女犯bdsm网站| 欧美v亚洲v综合ⅴ国产v| 粉嫩蜜臀av国产精品网站| 一区二区三区中文字幕精品精品| 欧美猛男男办公室激情| 国产乱理伦片在线观看夜一区| 亚洲欧美偷拍卡通变态|