void BELGE_KERNEL::GET_VARIABLES () { if ( m_mode EQ PRINT_TEST_VARS OR m_mode EQ PRINT_TEST_XXX ) { return; } m_header_variables.clear(); GET_HEADER_INFO(); // Satir sayisi kadar stringlist ayarla if (m_line_variables NE NULL) { delete m_line_variables; } m_line_variables = new QStringList[m_row_count]; m_kullanilan_satir_sayisi = 0; for (int i = 0 ; i < m_row_count ; i++) { m_kullanilan_satir_sayisi = i; GET_LINE_INFO(); } m_footer_variables.clear(); GET_FOOTER_INFO(); }
void*tdhs_decode(easy_message_t *m) { tdhs_packet_t *packet; uint32_t len, magic_code, com_or_resp, seq_id, reverse, datalen; uint32_t batch_request_num = 0; unsigned long long int now; size_t i; char *pos; //解析batch请求用 uint32_t left_length; //判断batch请求长度用 if ((len = m->input->last - m->input->pos) < TDH_SOCKET_HEADER_LENGTH) return NULL; // packet magic_code = ntohl(*((uint32_t *) (m->input->pos))); if (magic_code != TDHS_MAGIC_CODE) { easy_error_log("TDHS:magic_code is invalid: %d\n", magic_code); m->status = EASY_ERROR; return NULL; } GET_HEADER_INFO(com_or_resp, seq_id, reverse, datalen, m->input->pos) batch_request_num = com_or_resp == REQUEST_TYPE_BATCH ? reverse : 0; if (datalen > 0x4000000) { // 64M easy_error_log("TDHS:data_len is invalid: %d\n", datalen); m->status = EASY_ERROR; return NULL; } // 长度不够 len -= TDH_SOCKET_HEADER_LENGTH; if (len < datalen) { m->next_read_len = datalen - len; return NULL; } // alloc packet if ((packet = (tdhs_packet_t *) easy_pool_calloc(m->pool, sizeof(tdhs_packet_t) * (1 + batch_request_num))) == NULL) { m->status = EASY_ERROR; return NULL; } now = tdhs_micro_time(); packet->command_id_or_response_code = com_or_resp; packet->seq_id = seq_id; packet->reserved = reverse; packet->length = datalen; m->input->pos += TDH_SOCKET_HEADER_LENGTH; packet->rdata = (char *) m->input->pos; packet->pool = m->pool; //此处设置使用message的pool packet->start_time = now; //处理batch请求 pos = packet->rdata; left_length = packet->length; for (i = 0; i < batch_request_num; i++) { tdhs_packet_t *batch_packet = packet + 1 + i; if (left_length < TDH_SOCKET_HEADER_LENGTH) { //长度不全导致没法完整解析batch请求的头 easy_error_log( "TDHS:batch left_length is invalid: %d %d\n", left_length); m->status = EASY_ERROR; return NULL; } GET_HEADER_INFO(com_or_resp, seq_id, reverse, datalen, pos) pos += TDH_SOCKET_HEADER_LENGTH; left_length -= TDH_SOCKET_HEADER_LENGTH; if (left_length < datalen) { //长度不全导致没法完整解析batch请求 easy_error_log( "TDHS:batch data_len is invalid: %d ,the left_length is %d\n", datalen, left_length); m->status = EASY_ERROR; return NULL; } batch_packet->command_id_or_response_code = com_or_resp; batch_packet->seq_id = seq_id; //batch 目前不支持嵌套 ,所以不设置reserved batch_packet->length = datalen; batch_packet->rdata = pos; batch_packet->pool = m->pool; //此处设置使用message的pool batch_packet->start_time = now; (batch_packet - 1)->next = batch_packet; //形成链 pos += datalen; left_length -= datalen; } m->input->pos += packet->length; return packet; }