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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? channels.cpp

?? 加密函數(shù)庫:包括多種加密解密算法,數(shù)字簽名,散列算法
?? CPP
字號:
// channels.cpp - written and placed in the public domain by Wei Dai

#include "pch.h"
#include "channels.h"

NAMESPACE_BEGIN(CryptoPP)
USING_NAMESPACE(std)

#if 0
void MessageSwitch::AddDefaultRoute(BufferedTransformation &destination, const std::string &channel)
{
	m_defaultRoutes.push_back(Route(&destination, channel));
}

void MessageSwitch::AddRoute(unsigned int begin, unsigned int end, BufferedTransformation &destination, const std::string &channel)
{
	RangeRoute route(begin, end, Route(&destination, channel));
	RouteList::iterator it = upper_bound(m_routes.begin(), m_routes.end(), route);
	m_routes.insert(it, route);
}

/*
class MessageRouteIterator
{
public:
	typedef MessageSwitch::RouteList::const_iterator RouteIterator;
	typedef MessageSwitch::DefaultRouteList::const_iterator DefaultIterator;

	bool m_useDefault;
	RouteIterator m_itRouteCurrent, m_itRouteEnd;
	DefaultIterator m_itDefaultCurrent, m_itDefaultEnd;

	MessageRouteIterator(MessageSwitch &ms, const std::string &channel)
		: m_channel(channel)
	{
		pair<MapIterator, MapIterator> range = cs.m_routeMap.equal_range(channel);
		if (range.first == range.second)
		{
			m_useDefault = true;
			m_itListCurrent = cs.m_defaultRoutes.begin();
			m_itListEnd = cs.m_defaultRoutes.end();
		}
		else
		{
			m_useDefault = false;
			m_itMapCurrent = range.first;
			m_itMapEnd = range.second;
		}
	}

	bool End() const
	{
		return m_useDefault ? m_itListCurrent == m_itListEnd : m_itMapCurrent == m_itMapEnd;
	}

	void Next()
	{
		if (m_useDefault)
			++m_itListCurrent;
		else
			++m_itMapCurrent;
	}

	BufferedTransformation & Destination()
	{
		return m_useDefault ? *m_itListCurrent->first : *m_itMapCurrent->second.first;
	}

	const std::string & Message()
	{
		if (m_useDefault)
			return m_itListCurrent->second.get() ? *m_itListCurrent->second.get() : m_channel;
		else
			return m_itMapCurrent->second.second;
	}
};

void MessageSwitch::Put(byte inByte);
void MessageSwitch::Put(const byte *inString, unsigned int length);

void MessageSwitch::Flush(bool completeFlush, int propagation=-1);
void MessageSwitch::MessageEnd(int propagation=-1);
void MessageSwitch::PutMessageEnd(const byte *inString, unsigned int length, int propagation=-1);
void MessageSwitch::MessageSeriesEnd(int propagation=-1);
*/
#endif

class ChannelRouteIterator
{
public:
	typedef ChannelSwitch::RouteMap::const_iterator MapIterator;
	typedef ChannelSwitch::DefaultRouteList::const_iterator ListIterator;

	const std::string m_channel;
	bool m_useDefault;
	MapIterator m_itMapCurrent, m_itMapEnd;
	ListIterator m_itListCurrent, m_itListEnd;

	ChannelRouteIterator(ChannelSwitch &cs, const std::string &channel)
		: m_channel(channel)
	{
		pair<MapIterator, MapIterator> range = cs.m_routeMap.equal_range(channel);
		if (range.first == range.second)
		{
			m_useDefault = true;
			m_itListCurrent = cs.m_defaultRoutes.begin();
			m_itListEnd = cs.m_defaultRoutes.end();
		}
		else
		{
			m_useDefault = false;
			m_itMapCurrent = range.first;
			m_itMapEnd = range.second;
		}
	}

	bool End() const
	{
		return m_useDefault ? m_itListCurrent == m_itListEnd : m_itMapCurrent == m_itMapEnd;
	}

	void Next()
	{
		if (m_useDefault)
			++m_itListCurrent;
		else
			++m_itMapCurrent;
	}

	BufferedTransformation & Destination()
	{
		return m_useDefault ? *m_itListCurrent->first : *m_itMapCurrent->second.first;
	}

	const std::string & Channel()
	{
		if (m_useDefault)
			return m_itListCurrent->second.get() ? *m_itListCurrent->second.get() : m_channel;
		else
			return m_itMapCurrent->second.second;
	}
};

unsigned int ChannelSwitch::ChannelPut2(const std::string &channel, const byte *begin, unsigned int length, int messageEnd, bool blocking)
{
	if (!blocking)
		throw BlockingInputOnly("ChannelSwitch");

	ChannelRouteIterator it(*this, channel);
	while (!it.End())
	{
		it.Destination().ChannelPut2(it.Channel(), begin, length, messageEnd, blocking);
		it.Next();
	}
	return 0;
}

void ChannelSwitch::ChannelInitialize(const std::string &channel, const NameValuePairs &parameters/* =g_nullNameValuePairs */, int propagation/* =-1 */)
{
	if (channel.empty())
	{
		m_routeMap.clear();
		m_defaultRoutes.clear();
	}

	ChannelRouteIterator it(*this, channel);
	while (!it.End())
	{
		it.Destination().ChannelInitialize(it.Channel(), parameters, propagation);
		it.Next();
	}
}

bool ChannelSwitch::ChannelFlush(const std::string &channel, bool completeFlush, int propagation, bool blocking)
{
	if (!blocking)
		throw BlockingInputOnly("ChannelSwitch");

	ChannelRouteIterator it(*this, channel);
	while (!it.End())
	{
		it.Destination().ChannelFlush(it.Channel(), completeFlush, propagation, blocking);
		it.Next();
	}
	return false;
}

bool ChannelSwitch::ChannelMessageSeriesEnd(const std::string &channel, int propagation, bool blocking)
{
	if (!blocking)
		throw BlockingInputOnly("ChannelSwitch");

	ChannelRouteIterator it(*this, channel);
	while (!it.End())
	{
		it.Destination().ChannelMessageSeriesEnd(it.Channel(), propagation);
		it.Next();
	}
	return false;
}

byte * ChannelSwitch::ChannelCreatePutSpace(const std::string &channel, unsigned int &size)
{
	ChannelRouteIterator it(*this, channel);
	if (!it.End())
	{
		BufferedTransformation &target = it.Destination();
		it.Next();
		if (it.End())	// there is only one target channel
			return target.ChannelCreatePutSpace(it.Channel(), size);
	}
	size = 0;
	return NULL;
}

unsigned int ChannelSwitch::ChannelPutModifiable2(const std::string &channel, byte *inString, unsigned int length, int messageEnd, bool blocking)
{
	if (!blocking)
		throw BlockingInputOnly("ChannelSwitch");

	ChannelRouteIterator it(*this, channel);
	if (!it.End())
	{
		BufferedTransformation &target = it.Destination();
		const std::string &targetChannel = it.Channel();
		it.Next();
		if (it.End())	// there is only one target channel
			return target.ChannelPutModifiable2(targetChannel, inString, length, messageEnd, blocking);
	}
	ChannelPut2(channel, inString, length, messageEnd, blocking);
	return false;
}

void ChannelSwitch::AddDefaultRoute(BufferedTransformation &destination)
{
	m_defaultRoutes.push_back(DefaultRoute(&destination, value_ptr<std::string>(NULL)));
}

void ChannelSwitch::RemoveDefaultRoute(BufferedTransformation &destination)
{
	for (DefaultRouteList::iterator it = m_defaultRoutes.begin(); it != m_defaultRoutes.end(); ++it)
		if (it->first == &destination && !it->second.get())
		{
			m_defaultRoutes.erase(it);
			break;
		}
}

void ChannelSwitch::AddDefaultRoute(BufferedTransformation &destination, const std::string &outChannel)
{
	m_defaultRoutes.push_back(DefaultRoute(&destination, outChannel));
}

void ChannelSwitch::RemoveDefaultRoute(BufferedTransformation &destination, const std::string &outChannel)
{
	for (DefaultRouteList::iterator it = m_defaultRoutes.begin(); it != m_defaultRoutes.end(); ++it)
		if (it->first == &destination && (it->second.get() && *it->second == outChannel))
		{
			m_defaultRoutes.erase(it);
			break;
		}
}

void ChannelSwitch::AddRoute(const std::string &inChannel, BufferedTransformation &destination, const std::string &outChannel)
{
	m_routeMap.insert(RouteMap::value_type(inChannel, Route(&destination, outChannel)));
}

void ChannelSwitch::RemoveRoute(const std::string &inChannel, BufferedTransformation &destination, const std::string &outChannel)
{
	typedef ChannelSwitch::RouteMap::iterator MapIterator;
	pair<MapIterator, MapIterator> range = m_routeMap.equal_range(inChannel);
	
	for (MapIterator it = range.first; it != range.second; ++it)
		if (it->second.first == &destination && it->second.second == outChannel)
		{
			m_routeMap.erase(it);
			break;
		}
}

NAMESPACE_END

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产欧美精品一区| 777久久久精品| 亚洲欧洲在线观看av| 91猫先生在线| 亚洲国产cao| 欧美军同video69gay| 免费成人结看片| 91精品国产麻豆国产自产在线| 一区二区三区欧美日韩| 91精品国产综合久久蜜臀| 久久99久久久久| 国产精品久久久久久久久快鸭| 色诱视频网站一区| 免费亚洲电影在线| 国产免费成人在线视频| 91猫先生在线| 奇米四色…亚洲| 国产精品久久久久久久久动漫| 精品污污网站免费看| 久久精品国产久精国产| 国产精品视频九色porn| 欧美视频在线观看一区| 精品一区二区在线播放| 亚洲欧美日韩电影| 欧美一级在线观看| 成人污污视频在线观看| 婷婷六月综合亚洲| 久久久精品天堂| 欧美日韩免费一区二区三区视频| 国产在线不卡一卡二卡三卡四卡| 国产精品国模大尺度视频| 欧美久久久久久蜜桃| 国产白丝网站精品污在线入口| 亚洲午夜在线电影| 中文字幕第一页久久| 欧美巨大另类极品videosbest | 2014亚洲片线观看视频免费| 99麻豆久久久国产精品免费优播| 日本伊人精品一区二区三区观看方式| 欧美激情一区二区在线| 洋洋av久久久久久久一区| 精品国产不卡一区二区三区| 亚洲第一精品在线| 亚洲国产成人在线| 欧美一区二区三区在线视频| 91在线高清观看| 国产一区二区三区电影在线观看 | 91免费视频大全| 麻豆精品新av中文字幕| 亚洲午夜在线电影| 国产精品美女久久久久久久| 2023国产精品自拍| 91精品国产综合久久久久久久| 91麻豆精东视频| 国产精品99久久久久| 石原莉奈一区二区三区在线观看| 国产精品初高中害羞小美女文| 久久影院电视剧免费观看| 欧美日韩aaaaa| 欧美综合视频在线观看| 成人综合婷婷国产精品久久免费| 国产原创一区二区三区| 日韩vs国产vs欧美| 视频一区视频二区中文字幕| 亚洲综合色成人| 中文字幕一区二区不卡 | 国产精品三级电影| 欧美精品一区二区久久婷婷 | 国产精品亚洲一区二区三区在线| 蜜桃免费网站一区二区三区| 亚洲成人综合视频| 一个色在线综合| 亚洲综合另类小说| 一区二区三区.www| 亚洲国产日韩a在线播放性色| 亚洲人精品午夜| 亚洲欧美偷拍另类a∨色屁股| 国产精品美女一区二区三区| 国产精品久久久久影院老司| 国产精品久久99| 综合网在线视频| 最新高清无码专区| 亚洲一区欧美一区| 亚洲成人动漫在线免费观看| 亚洲高清视频中文字幕| 日韩电影网1区2区| 久热成人在线视频| 激情深爱一区二区| 国产91精品精华液一区二区三区| 国产91高潮流白浆在线麻豆 | 欧美自拍丝袜亚洲| 欧美久久婷婷综合色| 日韩欧美亚洲国产精品字幕久久久| 日韩精品一区二区三区在线| 国产拍欧美日韩视频二区| 中文字幕在线不卡一区| 日韩美女视频19| 一区二区免费在线播放| 日本一区中文字幕| 国产精品18久久久久久vr| 成人avav影音| 欧美日韩美女一区二区| 精品国产乱码久久久久久免费 | 国产精品三级电影| 亚洲自拍都市欧美小说| 久久99精品国产麻豆婷婷| 国产专区综合网| 91视频一区二区三区| 色欧美乱欧美15图片| 91精品国产一区二区三区香蕉| 欧美精品一区二区三区视频| 亚洲欧洲另类国产综合| 丝袜美腿亚洲色图| 国产制服丝袜一区| 欧美亚洲综合网| 久久嫩草精品久久久精品| 一区二区三区国产豹纹内裤在线| 久久精品999| 一本色道久久加勒比精品| 日韩免费性生活视频播放| 中文字幕一区二区三区四区不卡| 日韩中文字幕1| av毛片久久久久**hd| 日韩一卡二卡三卡四卡| 国产精品久久久久9999吃药| 奇米影视在线99精品| 99在线精品观看| 亚洲精品在线观看视频| 亚洲va国产va欧美va观看| 国产suv精品一区二区883| 宅男噜噜噜66一区二区66| 亚洲三级在线看| 国产麻豆日韩欧美久久| 欧美精品777| 亚洲乱码国产乱码精品精可以看| 麻豆精品在线看| 欧美性色综合网| 国产精品久久久久一区二区三区| 久久精品国产亚洲5555| 欧美性猛片aaaaaaa做受| 国产情人综合久久777777| 久久精品国产亚洲a| 欧美男生操女生| 亚洲免费观看高清在线观看| 懂色av中文字幕一区二区三区| 日韩视频免费观看高清在线视频| 亚洲精品久久嫩草网站秘色| 成人福利视频在线| www日韩大片| 久久成人av少妇免费| 欧美一区二区三区在线观看| 亚洲最新视频在线观看| 不卡的av网站| 国产精品看片你懂得| 国产精品99久久久久久似苏梦涵| 精品国偷自产国产一区| 日韩精品乱码av一区二区| 欧美日韩日本视频| 午夜精品久久久久久久99樱桃| 99国产麻豆精品| 国产精品传媒入口麻豆| 国产iv一区二区三区| 国产精品少妇自拍| 成人av电影在线播放| 国产精品网站导航| 成人av在线网站| 国产精品久久久久久久久免费相片| 国产高清精品网站| 国产欧美精品一区| 成人国产精品免费| 国产精品国产三级国产a | 亚洲午夜av在线| 欧美视频你懂的| 日韩在线播放一区二区| 91精品国产91久久久久久一区二区 | av成人免费在线| 亚洲色图制服丝袜| 色美美综合视频| 午夜伦欧美伦电影理论片| 51久久夜色精品国产麻豆| 久久99深爱久久99精品| 国产日韩精品视频一区| 99国产精品久久久久久久久久 | 欧美精品一区二区三区高清aⅴ| 久久精品72免费观看| 国产三级久久久| 色综合久久综合网欧美综合网| 亚洲一二三级电影| 日韩一区二区在线看片| 国产成人午夜高潮毛片| ㊣最新国产の精品bt伙计久久| 欧洲视频一区二区| 调教+趴+乳夹+国产+精品| 欧美成人伊人久久综合网| 丰满放荡岳乱妇91ww| 亚洲一二三区在线观看| 久久免费国产精品 | 7777精品伊人久久久大香线蕉的| 经典一区二区三区| 亚洲丝袜制服诱惑|