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

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

?? channels.cpp

?? 此文件是實現(xiàn)加解密算法的函數(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

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品久久久久久久久搜平片| 欧美刺激午夜性久久久久久久| 久久久久久电影| 欧美人妖巨大在线| 91日韩一区二区三区| 国产一区二区三区在线看麻豆| 日韩av在线免费观看不卡| 一区二区免费在线播放| 亚洲人快播电影网| 亚洲精品国久久99热| 亚洲综合小说图片| 亚洲午夜免费视频| 午夜亚洲国产au精品一区二区| 亚洲国产成人tv| 国产成人午夜精品影院观看视频| 国产成人欧美日韩在线电影| 欧美日韩一区小说| 日韩视频免费观看高清完整版 | 精品久久一区二区| 亚洲国产日韩精品| 91视视频在线观看入口直接观看www | 日韩激情中文字幕| 青草av.久久免费一区| 国产自产高清不卡| caoporen国产精品视频| 色欲综合视频天天天| 欧美这里有精品| 91精品福利在线一区二区三区 | 777久久久精品| 精品国产乱码久久久久久牛牛 | 麻豆一区二区三| 国产成人av在线影院| 欧美不卡在线视频| 久久精品国产亚洲一区二区三区| fc2成人免费人成在线观看播放| 久久久午夜精品| 国产一区欧美日韩| 国产亚洲欧美激情| 亚洲成人一区在线| 成人性生交大片| 欧美日韩中文一区| 亚洲18色成人| 欧美一区二区视频观看视频| 亚洲成a人片在线不卡一二三区| 欧美在线观看你懂的| 亚洲国产精品久久久久秋霞影院| 欧美伊人精品成人久久综合97 | 91丨九色丨蝌蚪丨老版| 亚洲色图欧美偷拍| 国产精品综合在线视频| 精品视频免费在线| 日韩电影在线观看电影| 日韩欧美区一区二| 国产麻豆一精品一av一免费 | 激情欧美一区二区三区在线观看| 精品国产一区二区三区四区四| 狠狠久久亚洲欧美| 国产精品视频在线看| 麻豆精品视频在线| 国产婷婷一区二区| 日本韩国欧美一区| 国产精品国产精品国产专区不蜜 | 99精品在线观看视频| 久久先锋影音av| 免费高清不卡av| 久久一区二区三区四区| a级精品国产片在线观看| 亚洲午夜久久久久久久久久久| 欧美一级片免费看| 成人毛片老司机大片| 亚洲成人一区二区| 久久久99久久精品欧美| 91香蕉国产在线观看软件| 天堂蜜桃一区二区三区 | 国产精品女同一区二区三区| 欧美自拍丝袜亚洲| 国产在线精品免费av| 亚洲主播在线播放| 久久久99精品免费观看不卡| 欧美午夜片在线观看| 国产福利精品一区二区| 夜色激情一区二区| 欧美激情一二三区| 成人福利在线看| **欧美大码日韩| av电影一区二区| 久久国产精品99久久久久久老狼 | 不卡的av在线播放| 蜜臀久久99精品久久久久久9| 综合色天天鬼久久鬼色| 精品久久久久久最新网址| 色婷婷综合久久久久中文| 国内精品久久久久影院色| 一区二区三区久久| 国产精品剧情在线亚洲| 久久综合网色—综合色88| 欧美日韩亚洲另类| 不卡av在线网| 国产成人日日夜夜| 激情图区综合网| 日韩和欧美一区二区| 亚洲综合一区二区| 日韩美女啊v在线免费观看| 国产色产综合产在线视频| 日韩三级在线观看| 在线播放/欧美激情| 欧美最猛性xxxxx直播| 色综合久久综合网| www.av精品| 99国产欧美久久久精品| 处破女av一区二区| 成人av电影在线| 成人禁用看黄a在线| 国产精品18久久久久久久网站| 久久爱www久久做| 精品一区二区三区在线观看| 国产精品久久久久久久裸模| 欧美国产精品专区| 国产女人水真多18毛片18精品视频 | 91 com成人网| 欧美日韩大陆一区二区| 欧美日韩国产电影| 欧美一区二区三区视频免费| 欧美一区二区成人6969| 日韩欧美亚洲另类制服综合在线| 欧美一区二区三区视频免费| 日韩片之四级片| 久久久久久久久久美女| 国产欧美一二三区| 日韩理论电影院| 亚洲一区在线观看免费观看电影高清| 一区二区三区四区五区视频在线观看| 亚洲一区二三区| 日韩高清在线一区| 麻豆91免费观看| 成人做爰69片免费看网站| 色综合久久精品| 在线观看91av| 色婷婷精品久久二区二区蜜臂av | 亚洲成人av资源| 免费看欧美美女黄的网站| 激情文学综合丁香| 99re热这里只有精品视频| 欧美私人免费视频| 日韩欧美国产成人一区二区| 欧美国产丝袜视频| 亚洲高清免费观看 | 成人午夜精品在线| 欧洲av在线精品| 日韩精品专区在线| 国产精品嫩草久久久久| 香蕉成人啪国产精品视频综合网| 美女性感视频久久| 91色视频在线| 欧美大片一区二区| 亚洲精品伦理在线| 加勒比av一区二区| 91成人免费网站| 久久―日本道色综合久久| 一区二区三区日韩欧美| 老司机精品视频导航| 97久久精品人人做人人爽| 在线播放91灌醉迷j高跟美女| 国产日韩欧美精品电影三级在线| 亚洲色图.com| 国产一区中文字幕| 欧美日韩高清在线播放| 国产精品你懂的在线欣赏| 蜜桃av一区二区| 一本在线高清不卡dvd| 亚洲精品一区二区三区影院 | 亚洲mv大片欧洲mv大片精品| 国产69精品久久久久毛片| 成人综合婷婷国产精品久久| 欧美日韩成人高清| 综合久久综合久久| 国产一区美女在线| 日韩一级精品视频在线观看| 亚洲精品国产视频| jvid福利写真一区二区三区| 精品久久久久久最新网址| 日本伊人午夜精品| 精品婷婷伊人一区三区三| ●精品国产综合乱码久久久久 | 2020国产精品自拍| 日韩av在线发布| 欧美日韩精品一区二区天天拍小说| 国产精品免费网站在线观看| 国产麻豆精品久久一二三| 日韩欧美激情四射| 日日噜噜夜夜狠狠视频欧美人 | 色成人在线视频| 亚洲欧洲韩国日本视频| 国产宾馆实践打屁股91| 久久一夜天堂av一区二区三区 | 亚洲高清免费视频| 欧美偷拍一区二区| 亚洲va韩国va欧美va| 欧美在线观看禁18| 亚洲国产成人91porn|