⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 channels_8cpp-source.html

📁 Crypto++是一个非常强大的密码学库,主要是功能全
💻 HTML
📖 第 1 页 / 共 2 页
字号:
00145 };00146 00147 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ChannelSwitch::ChannelPut2(<span class="keyword">const</span> std::string &amp;channel, <span class="keyword">const</span> byte *begin, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> length, <span class="keywordtype">int</span> messageEnd, <span class="keywordtype">bool</span> blocking)00148 {00149         <span class="keywordflow">if</span> (!blocking)00150                 <span class="keywordflow">throw</span> BlockingInputOnly(<span class="stringliteral">"ChannelSwitch"</span>);00151 00152         ChannelRouteIterator it(*<span class="keyword">this</span>, channel);00153         <span class="keywordflow">while</span> (!it.End())00154         {00155                 it.Destination().ChannelPut2(it.Channel(), begin, length, messageEnd, blocking);00156                 it.Next();00157         }00158         <span class="keywordflow">return</span> 0;00159 }00160 00161 <span class="keywordtype">void</span> ChannelSwitch::ChannelInitialize(<span class="keyword">const</span> std::string &amp;channel, <span class="keyword">const</span> <a class="code" href="class_name_value_pairs.html">NameValuePairs</a> &amp;parameters<span class="comment">/* =g_nullNameValuePairs */</span>, <span class="keywordtype">int</span> propagation<span class="comment">/* =-1 */</span>)00162 {00163         <span class="keywordflow">if</span> (channel.empty())00164         {00165                 m_routeMap.clear();00166                 m_defaultRoutes.clear();00167         }00168 00169         ChannelRouteIterator it(*<span class="keyword">this</span>, channel);00170         <span class="keywordflow">while</span> (!it.End())00171         {00172                 it.Destination().ChannelInitialize(it.Channel(), parameters, propagation);00173                 it.Next();00174         }00175 }00176 00177 <span class="keywordtype">bool</span> ChannelSwitch::ChannelFlush(<span class="keyword">const</span> std::string &amp;channel, <span class="keywordtype">bool</span> completeFlush, <span class="keywordtype">int</span> propagation, <span class="keywordtype">bool</span> blocking)00178 {00179         <span class="keywordflow">if</span> (!blocking)00180                 <span class="keywordflow">throw</span> BlockingInputOnly(<span class="stringliteral">"ChannelSwitch"</span>);00181 00182         ChannelRouteIterator it(*<span class="keyword">this</span>, channel);00183         <span class="keywordflow">while</span> (!it.End())00184         {00185                 it.Destination().ChannelFlush(it.Channel(), completeFlush, propagation, blocking);00186                 it.Next();00187         }00188         <span class="keywordflow">return</span> <span class="keyword">false</span>;00189 }00190 00191 <span class="keywordtype">bool</span> ChannelSwitch::ChannelMessageSeriesEnd(<span class="keyword">const</span> std::string &amp;channel, <span class="keywordtype">int</span> propagation, <span class="keywordtype">bool</span> blocking)00192 {00193         <span class="keywordflow">if</span> (!blocking)00194                 <span class="keywordflow">throw</span> BlockingInputOnly(<span class="stringliteral">"ChannelSwitch"</span>);00195 00196         ChannelRouteIterator it(*<span class="keyword">this</span>, channel);00197         <span class="keywordflow">while</span> (!it.End())00198         {00199                 it.Destination().ChannelMessageSeriesEnd(it.Channel(), propagation);00200                 it.Next();00201         }00202         <span class="keywordflow">return</span> <span class="keyword">false</span>;00203 }00204 00205 byte * ChannelSwitch::ChannelCreatePutSpace(<span class="keyword">const</span> std::string &amp;channel, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> &amp;size)00206 {00207         ChannelRouteIterator it(*<span class="keyword">this</span>, channel);00208         <span class="keywordflow">if</span> (!it.End())00209         {00210                 <a class="code" href="class_buffered_transformation.html">BufferedTransformation</a> &amp;target = it.Destination();00211                 it.Next();00212                 <span class="keywordflow">if</span> (it.End())   <span class="comment">// there is only one target channel</span>00213                         <span class="keywordflow">return</span> target.<a class="code" href="class_buffered_transformation.html#_zlib_decompressorz13_7">ChannelCreatePutSpace</a>(it.Channel(), size);00214         }00215         size = 0;00216         <span class="keywordflow">return</span> NULL;00217 }00218 00219 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ChannelSwitch::ChannelPutModifiable2(<span class="keyword">const</span> std::string &amp;channel, byte *inString, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> length, <span class="keywordtype">int</span> messageEnd, <span class="keywordtype">bool</span> blocking)00220 {00221         <span class="keywordflow">if</span> (!blocking)00222                 <span class="keywordflow">throw</span> BlockingInputOnly(<span class="stringliteral">"ChannelSwitch"</span>);00223 00224         ChannelRouteIterator it(*<span class="keyword">this</span>, channel);00225         <span class="keywordflow">if</span> (!it.End())00226         {00227                 <a class="code" href="class_buffered_transformation.html">BufferedTransformation</a> &amp;target = it.Destination();00228                 <span class="keyword">const</span> std::string &amp;targetChannel = it.Channel();00229                 it.Next();00230                 <span class="keywordflow">if</span> (it.End())   <span class="comment">// there is only one target channel</span>00231                         <span class="keywordflow">return</span> target.<a class="code" href="class_buffered_transformation.html#_zlib_decompressorz13_9">ChannelPutModifiable2</a>(targetChannel, inString, length, messageEnd, blocking);00232         }00233         ChannelPut2(channel, inString, length, messageEnd, blocking);00234         <span class="keywordflow">return</span> <span class="keyword">false</span>;00235 }00236 00237 <span class="keywordtype">void</span> ChannelSwitch::AddDefaultRoute(<a class="code" href="class_buffered_transformation.html">BufferedTransformation</a> &amp;destination)00238 {00239         m_defaultRoutes.push_back(DefaultRoute(&amp;destination, value_ptr&lt;std::string&gt;(NULL)));00240 }00241 00242 <span class="keywordtype">void</span> ChannelSwitch::RemoveDefaultRoute(<a class="code" href="class_buffered_transformation.html">BufferedTransformation</a> &amp;destination)00243 {00244         <span class="keywordflow">for</span> (DefaultRouteList::iterator it = m_defaultRoutes.begin(); it != m_defaultRoutes.end(); ++it)00245                 <span class="keywordflow">if</span> (it-&gt;first == &amp;destination &amp;&amp; !it-&gt;second.get())00246                 {00247                         m_defaultRoutes.erase(it);00248                         <span class="keywordflow">break</span>;00249                 }00250 }00251 00252 <span class="keywordtype">void</span> ChannelSwitch::AddDefaultRoute(<a class="code" href="class_buffered_transformation.html">BufferedTransformation</a> &amp;destination, <span class="keyword">const</span> std::string &amp;outChannel)00253 {00254         m_defaultRoutes.push_back(DefaultRoute(&amp;destination, outChannel));00255 }00256 00257 <span class="keywordtype">void</span> ChannelSwitch::RemoveDefaultRoute(<a class="code" href="class_buffered_transformation.html">BufferedTransformation</a> &amp;destination, <span class="keyword">const</span> std::string &amp;outChannel)00258 {00259         <span class="keywordflow">for</span> (DefaultRouteList::iterator it = m_defaultRoutes.begin(); it != m_defaultRoutes.end(); ++it)00260                 <span class="keywordflow">if</span> (it-&gt;first == &amp;destination &amp;&amp; (it-&gt;second.get() &amp;&amp; *it-&gt;second == outChannel))00261                 {00262                         m_defaultRoutes.erase(it);00263                         <span class="keywordflow">break</span>;00264                 }00265 }00266 00267 <span class="keywordtype">void</span> ChannelSwitch::AddRoute(<span class="keyword">const</span> std::string &amp;inChannel, <a class="code" href="class_buffered_transformation.html">BufferedTransformation</a> &amp;destination, <span class="keyword">const</span> std::string &amp;outChannel)00268 {00269         m_routeMap.insert(RouteMap::value_type(inChannel, Route(&amp;destination, outChannel)));00270 }00271 00272 <span class="keywordtype">void</span> ChannelSwitch::RemoveRoute(<span class="keyword">const</span> std::string &amp;inChannel, <a class="code" href="class_buffered_transformation.html">BufferedTransformation</a> &amp;destination, <span class="keyword">const</span> std::string &amp;outChannel)00273 {00274         <span class="keyword">typedef</span> ChannelSwitch::RouteMap::iterator MapIterator;00275         pair&lt;MapIterator, MapIterator&gt; range = m_routeMap.equal_range(inChannel);00276         00277         <span class="keywordflow">for</span> (MapIterator it = range.first; it != range.second; ++it)00278                 <span class="keywordflow">if</span> (it-&gt;second.first == &amp;destination &amp;&amp; it-&gt;second.second == outChannel)00279                 {00280                         m_routeMap.erase(it);00281                         <span class="keywordflow">break</span>;00282                 }00283 }00284 00285 NAMESPACE_END00286 00287 <span class="preprocessor">#endif</span></pre></div><hr size="1"><address style="align: right;"><small>Generated on Tue Jul 8 23:34:10 2003 for Crypto++ by<a href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border=0 > </a>1.3.2 </small></address></body></html>

⌨️ 快捷键说明

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