📄 mqueue_8cpp-source.html
字号:
00095 <span class="keywordflow">else</span>00096 {00097 <a class="code" href="class_message_queue.html">MessageQueue</a> &q1 = m_q[i], &q2 = m_q[1-i];00098 00099 <span class="keywordflow">if</span> (q2.<a class="code" href="class_buffered_transformation.html#_zlib_decompressorz9_2">AnyMessages</a>() && q2.<a class="code" href="class_message_queue.html#_message_queuea5">MaxRetrievable</a>() < length)00100 <span class="keywordflow">goto</span> mismatch;00101 00102 <span class="keywordflow">while</span> (length > 0 && q2.<a class="code" href="class_message_queue.html#_message_queuea6">AnyRetrievable</a>())00103 {00104 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> len = length;00105 <span class="keyword">const</span> byte *data = q2.<a class="code" href="class_message_queue.html#_message_queuea15">Spy</a>(len);00106 len = STDMIN(len, length);00107 <span class="keywordflow">if</span> (memcmp(inString, data, len) != 0)00108 <span class="keywordflow">goto</span> mismatch;00109 inString += len;00110 length -= len;00111 q2.<a class="code" href="class_buffered_transformation.html#_zlib_decompressorz7_11">Skip</a>(len);00112 }00113 00114 q1.<a class="code" href="class_buffered_transformation.html#_zlib_decompressorz1_0">Put</a>(inString, length);00115 00116 <span class="keywordflow">if</span> (messageEnd)00117 {00118 <span class="keywordflow">if</span> (q2.<a class="code" href="class_message_queue.html#_message_queuea6">AnyRetrievable</a>())00119 <span class="keywordflow">goto</span> mismatch;00120 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (q2.<a class="code" href="class_buffered_transformation.html#_zlib_decompressorz9_2">AnyMessages</a>())00121 q2.<a class="code" href="class_message_queue.html#_message_queuea11">GetNextMessage</a>();00122 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (q2.<a class="code" href="class_message_queue.html#_message_queuea13">NumberOfMessageSeries</a>() > 0)00123 <span class="keywordflow">goto</span> mismatch;00124 <span class="keywordflow">else</span>00125 q1.<a class="code" href="class_buffered_transformation.html#_zlib_decompressorz1_7">MessageEnd</a>();00126 }00127 00128 <span class="keywordflow">return</span> 0;00129 00130 mismatch:00131 <span class="keywordflow">return</span> HandleMismatchDetected(blocking);00132 }00133 }00134 00135 <span class="keywordtype">void</span> EqualityComparisonFilter::ChannelInitialize(<span class="keyword">const</span> std::string &channel, <span class="keyword">const</span> <a class="code" href="class_name_value_pairs.html">NameValuePairs</a> &parameters, <span class="keywordtype">int</span> propagation)00136 {00137 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = MapChannel(channel);00138 00139 <span class="keywordflow">if</span> (i == 2)00140 PropagateInitialize(parameters, propagation, channel);00141 <span class="keywordflow">else</span>00142 {00143 m_q[i].<a class="code" href="class_buffered_transformation.html#_windows_pipe_sinkz5_2">Initialize</a>();00144 m_mismatchDetected = <span class="keyword">false</span>;00145 }00146 }00147 00148 <span class="keywordtype">bool</span> EqualityComparisonFilter::ChannelMessageSeriesEnd(<span class="keyword">const</span> std::string &channel, <span class="keywordtype">int</span> propagation, <span class="keywordtype">bool</span> blocking)00149 {00150 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = MapChannel(channel);00151 00152 <span class="keywordflow">if</span> (i == 2)00153 {00154 OutputMessageSeriesEnd(4, propagation, blocking, channel);00155 <span class="keywordflow">return</span> <span class="keyword">false</span>;00156 }00157 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (m_mismatchDetected)00158 <span class="keywordflow">return</span> <span class="keyword">false</span>;00159 <span class="keywordflow">else</span>00160 {00161 <a class="code" href="class_message_queue.html">MessageQueue</a> &q1 = m_q[i], &q2 = m_q[1-i];00162 00163 <span class="keywordflow">if</span> (q2.<a class="code" href="class_message_queue.html#_message_queuea6">AnyRetrievable</a>() || q2.<a class="code" href="class_buffered_transformation.html#_zlib_decompressorz9_2">AnyMessages</a>())00164 <span class="keywordflow">goto</span> mismatch;00165 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (q2.<a class="code" href="class_message_queue.html#_message_queuea13">NumberOfMessageSeries</a>() > 0)00166 <span class="keywordflow">return</span> Output(2, (<span class="keyword">const</span> byte *)<span class="stringliteral">"\1"</span>, 1, 0, blocking) != 0;00167 <span class="keywordflow">else</span>00168 q1.<a class="code" href="class_buffered_transformation.html#_windows_pipe_sinkz5_4">MessageSeriesEnd</a>();00169 00170 <span class="keywordflow">return</span> <span class="keyword">false</span>;00171 00172 mismatch:00173 <span class="keywordflow">return</span> HandleMismatchDetected(blocking);00174 }00175 }00176 00177 <span class="keywordtype">bool</span> EqualityComparisonFilter::HandleMismatchDetected(<span class="keywordtype">bool</span> blocking)00178 {00179 m_mismatchDetected = <span class="keyword">true</span>;00180 <span class="keywordflow">if</span> (m_throwIfNotEqual)00181 <span class="keywordflow">throw</span> MismatchDetected();00182 <span class="keywordflow">return</span> Output(1, (<span class="keyword">const</span> byte *)<span class="stringliteral">"\0"</span>, 1, 0, blocking) != 0;00183 }00184 00185 NAMESPACE_END00186 00187 <span class="preprocessor">#endif</span></pre></div><hr size="1"><address style="align: right;"><small>Generated on Tue Jul 8 23:34:20 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 + -