bool EqualityComparisonFilter::ChannelMessageSeriesEnd(const std::string &channel, int propagation, bool blocking) { unsigned int i = MapChannel(channel); if (i == 2) { OutputMessageSeriesEnd(4, propagation, blocking, channel); return false; } else if (m_mismatchDetected) return false; else { MessageQueue &q1 = m_q[i], &q2 = m_q[1-i]; if (q2.AnyRetrievable() || q2.AnyMessages()) goto mismatch; else if (q2.NumberOfMessageSeries() > 0) return Output(2, (const byte *)"\1", 1, 0, blocking) != 0; else q1.MessageSeriesEnd(); return false; mismatch: return HandleMismatchDetected(blocking); } }
void EqualityComparisonFilter::ChannelInitialize(const std::string &channel, const NameValuePairs ¶meters, int propagation) { unsigned int i = MapChannel(channel); if (i == 2) PropagateInitialize(parameters, propagation, channel); else { m_q[i].Initialize(); m_mismatchDetected = false; } }
unsigned int EqualityComparisonFilter::ChannelPut2(const std::string &channel, const byte *inString, unsigned int length, int messageEnd, bool blocking) { if (!blocking) throw BlockingInputOnly("EqualityComparisonFilter"); unsigned int i = MapChannel(channel); if (i == 2) return Output(3, inString, length, messageEnd, blocking, channel); else if (m_mismatchDetected) return 0; else { MessageQueue &q1 = m_q[i], &q2 = m_q[1-i]; if (q2.AnyMessages() && q2.MaxRetrievable() < length) goto mismatch; while (length > 0 && q2.AnyRetrievable()) { unsigned int len = length; const byte *data = q2.Spy(len); len = STDMIN(len, length); if (memcmp(inString, data, len) != 0) goto mismatch; inString += len; length -= len; q2.Skip(len); } q1.Put(inString, length); if (messageEnd) { if (q2.AnyRetrievable()) goto mismatch; else if (q2.AnyMessages()) q2.GetNextMessage(); else if (q2.NumberOfMessageSeries() > 0) goto mismatch; else q1.MessageEnd(); } return 0; mismatch: return HandleMismatchDetected(blocking); } }
INT32S Init2060(void) { INT32S re = 0; int32_t point = 0; Param_Point k[] = { {0, 2, { 0, 1}}, {0, 2, { 2, 3}}, {0, 2, { 4, 5}}, {0, 2, { 6, 7}}, {0, 2, { 8, 9}}, {0, 2, {10,11}}, {0, 2, {12,13}}, {0, 2, {14,15}}, {0, 2, {16,17}}, {1, 2, { 0, 1}}, {1, 2, { 2, 3}}, {1, 2, { 4, 5}}, {1, 2, { 6, 7}}, {1, 2, { 8, 9}}, {2, 2, { 0, 1}}, {2, 2, { 2, 3}}, {2, 2, { 4, 5}}, {2, 2, { 6, 7}}, {2, 2, { 8, 9}}, {3, 2, { 0, 1}}, {3, 2, { 2, 3}}, {3, 2, { 4, 5}}, {3, 2, { 6, 7}}, {3, 2, { 8, 9}}}; InitDataLimit(); InitRunTimeFlag(); InitEvent(); //memset(g_12Param.nMrsPtDataSize, 0, sizeof(INT32S)*_MAX_SIGNAL_CHANNEL_CNT); //memset(g_12Param.nMrsPtDataSize, sizeof(INT32S)*_MAX_SIGNAL_CHANNEL_CNT); //memset(g_12Param.nMrsPtDataSize0, sizeof(INT32S)*_MAX_SIGNAL_CHANNEL_CNT); Read12Param(&g_12Param); Init83Param(&g_83param,&g_12Param); RenewParam(&g_83param,&g_12Param); //re = InitNet(g_strHostIP,g_nTcpPort,g_nUdpPort); re = AllocMemery(_MAX_DYNAMIC_ARRAY_LTH,g_nTranGroupcnt); BuildSignalGroupTable(g_nChannelArrivalSequenceTable); MapChannel(); /*czx add begin * init 测点 */ g_83param.nMrsPtcnt = 24; for(point=0; point<g_83param.nMrsPtcnt; ++point) { g_83param.nMrsPtTable[point] = point; g_83param.nPtMrsNo[point].jkey = k[point].jkey; g_83param.nPtMrsNo[point].nChCnt = k[point].nChCnt; g_83param.nPtMrsNo[point].channel[0] = k[point].channel[0]; g_83param.nPtMrsNo[point].channel[1] = k[point].channel[1]; } //OSTaskCreate(receive_channel_data, 0, &TaskStk[4][TASK_STK_SIZE-1], Task1_Prio+PICK_TASK_PRIO); //OSTaskCreate(command_analys, 0, &TaskStk[3][TASK_STK_SIZE-1], Task1_Prio+COMMAND_ANALYS_TASK_PRIO); //OSTaskCreate(tff, 0, &TaskStk[3][TASK_STK_SIZE-1], Task1_Prio+COMMAND_ANALYS_TASK_PRIO); //OpenRealTimeValuePipe(); return re; }