Changeset 289
- Timestamp:
- 06/18/09 11:26:10 (15 years ago)
- Files:
-
- 1 modified
Legend:
- Unmodified
- Added
- Removed
-
vtcross/trunk/src/service_management_layer/ServiceManagementLayer.cpp
r288 r289 678 678 data.append((const char*) sqlite3_column_text(pStatement, 1)); 679 679 else { 680 //TODO could do shell output here if not in DB 680 681 printf("data_DB:: Data not yet in DB.\n"); 681 682 rc=31337; … … 910 911 char buffer[256]; 911 912 char buffer1[256]; 913 char *token; 912 914 int rc; 913 915 char *errorMsg; … … 918 920 LOG("ServiceManagementLayer:: Received PerformActiveMission command.\n"); 919 921 920 int t = atoi(buffer);922 int32_t t = atoi(buffer); 921 923 // printf("****%d****\n", t); 922 for(int k = 0; k < t; k++) {924 for(int32_t m = 0; m < t; m++) { 923 925 //printf("data=%s\n", data_obsv.c_str()); 924 926 memset(buffer1, 0, 256); … … 1001 1003 // printf("done\n"); 1002 1004 i=0; 1005 int32_t numstatements = 0; 1003 1006 data.clear(); 1004 1007 while(i < miss[activeMission].numServices) … … 1006 1009 if(miss[activeMission].services[i].name.compare("if")==0) 1007 1010 { 1008 // 1011 //printf("L0:if detected\n"); 1009 1012 input.clear(); 1010 1013 check.clear(); 1011 if(!miss[activeMission].services[i].input[0].empty()){ 1012 input=miss[activeMission].services[i].input[0]; 1013 check = "1@true@"; 1014 int t; 1015 for(t = 0; t < 5; t++){ 1016 if(!miss[activeMission].services[i].output[t].empty()){ 1017 //printf("i-numstmts = %d\n", i-numstatements-1); 1018 input=miss[activeMission].services[i-numstatements-1].output[t]; 1019 strcpy(_data_DB->command, "SELECT "); 1020 strcat(_data_DB->command, _data_DB->tablename); 1021 strcat(_data_DB->command, ".* from "); 1022 strcat(_data_DB->command, _data_DB->tablename); 1023 strcat(_data_DB->command, " where Tag=="); 1024 sprintf(_data_DB->command, "%s'%s';", _data_DB->command, input.c_str()); 1025 sqlite3_stmt * pStatement; 1026 rc = sqlite3_prepare_v2(_data_DB->db, _data_DB->command, -1, &pStatement, NULL); 1027 if (rc == SQLITE_OK){ 1028 if (sqlite3_step(pStatement) == SQLITE_ROW) 1029 data = (const char *) sqlite3_column_text(pStatement, 1); 1030 else { 1031 printf("1 data_DB:: Data not yet in DB.\n"); 1032 rc=31337; 1033 } 1034 } else { 1035 printf("data_DB:: Error executing SQL statement. rc = %i\n%s\n",rc,_data_DB->command); 1036 } 1037 sqlite3_finalize(pStatement); 1038 //printf("data=%s\n", data.c_str()); 1039 token = strtok((char *)data.c_str(), "@"); 1040 token = strtok(NULL, "@"); 1041 token = strtok(NULL, "@"); 1042 //printf("data=%s\n", token); 1043 break; 1044 } 1014 1045 } 1015 else{ 1016 input=miss[activeMission].services[i].input[1]; 1017 check = "1@false@"; 1046 //printf("L0:--- %s %s---\n", miss[activeMission].services[i].output[t].c_str(), token); 1047 if(!miss[activeMission].services[i].output[t].compare(token)){ 1048 //printf("L0:if taken\n"); 1049 for(uint16_t k = i+1; k <= i+miss[activeMission].services[i].num_conds; k++){ 1050 //printf("transacting data for k=%d\n", k); 1051 TransactData(k); 1052 } 1018 1053 } 1019 //printf("L0:input=%s\n", input.c_str()); 1020 1021 strcpy(_data_DB->command, "SELECT "); 1022 strcat(_data_DB->command, _data_DB->tablename); 1023 strcat(_data_DB->command, ".* from "); 1024 strcat(_data_DB->command, _data_DB->tablename); 1025 strcat(_data_DB->command, " where Tag=="); 1026 sprintf(_data_DB->command, "%s'%s';", _data_DB->command, input.c_str()); 1027 sqlite3_stmt * pStatement; 1028 rc = sqlite3_prepare_v2(_data_DB->db, _data_DB->command, -1, &pStatement, NULL); 1029 if (rc == SQLITE_OK){ 1030 if (sqlite3_step(pStatement) == SQLITE_ROW) 1031 data = (const char *) sqlite3_column_text(pStatement, 1); 1032 else { 1033 printf("1 data_DB:: Data not yet in DB. %d\n", i); 1034 rc=31337; 1035 } 1036 } else { 1037 printf("data_DB:: Error executing SQL statement. rc = %i\n%s\n",rc,_data_DB->command); 1038 } 1039 1040 sqlite3_finalize(pStatement); 1041 // printf("L0:data=%s, check=%s\n", data.c_str(), check.c_str()); 1042 // printf("L0:--- %d %d---\n", miss[activeMission].services[i].num_conds, i); 1043 if(data.compare(check)==0){ 1044 //printf("L0:if taken\n"); 1045 1046 for(int k = i + 1; k <= i + miss[activeMission].services[i].num_conds; k++){ 1047 //printf("k=%d\n", k); 1048 if(miss[activeMission].services[k].name.compare("if")==0) 1049 { 1050 //printf("L1:if detected\n"); 1051 input.clear(); 1052 check.clear(); 1053 if(!miss[activeMission].services[k].input[0].empty()){ 1054 input=miss[activeMission].services[k].input[0]; 1055 check = "1@true@"; 1056 } 1057 else{ 1058 input=miss[activeMission].services[k].input[1]; 1059 check = "1@false@"; 1060 } 1061 //printf("input=%s\n", input.c_str()); 1062 1054 numstatements +=miss[activeMission].services[i].num_conds+1; 1055 i+=miss[activeMission].services[i].num_conds; 1056 //printf("doneif %d, %d, %d\n", numstatements, miss[activeMission].services[i].num_conds, i); 1057 } 1058 else if(miss[activeMission].services[i].name.compare("while")==0) 1059 { 1060 numstatements=0; 1061 //printf("while detected\n"); 1062 while(true){ 1063 data.clear(); 1064 printf("L0:if detected\n"); 1065 input.clear(); 1066 check.clear(); 1067 int t; 1068 for(t = 0; t < 5; t++){ 1069 if(!miss[activeMission].services[i].output[t].empty()){ 1070 input=miss[activeMission].services[i-1].output[t]; 1063 1071 strcpy(_data_DB->command, "SELECT "); 1064 1072 strcat(_data_DB->command, _data_DB->tablename); 1065 1073 strcat(_data_DB->command, ".* from "); 1066 1074 strcat(_data_DB->command, _data_DB->tablename); 1067 1075 strcat(_data_DB->command, " where Tag=="); 1068 1076 sprintf(_data_DB->command, "%s'%s';", _data_DB->command, input.c_str()); 1069 1077 sqlite3_stmt * pStatement; … … 1073 1081 data = (const char *) sqlite3_column_text(pStatement, 1); 1074 1082 else { 1075 printf("1 data_DB:: Data not yet in DB. %d\n", k);1083 printf("1 data_DB:: Data not yet in DB.\n"); 1076 1084 rc=31337; 1077 1085 } … … 1079 1087 printf("data_DB:: Error executing SQL statement. rc = %i\n%s\n",rc,_data_DB->command); 1080 1088 } 1081 1082 1089 sqlite3_finalize(pStatement); 1083 //printf("L1:data=%s, check=%s\n", data.c_str(), check.c_str()); 1084 //printf("L1:--- %d %d---\n", miss[activeMission].services[i].num_conds, k); 1085 if(data.compare(check)==0){ 1086 //printf("L1:if taken\n"); 1087 for(int j = k + 1; j <= k + miss[activeMission].services[k].num_conds; j++){ 1088 // printf("j=%d\n", k); 1089 //printf("name!!!! = %s\n", miss[activeMission].services[j].name.c_str()); 1090 if(miss[activeMission].services[j].name.compare("if")==0) 1091 { 1092 // printf("L2:if detected\n"); 1093 input.clear(); 1094 check.clear(); 1095 if(!miss[activeMission].services[j].input[0].empty()){ 1096 input=miss[activeMission].services[j].input[0]; 1097 check = "1@true@"; 1098 } 1099 else{ 1100 input=miss[activeMission].services[j].input[1]; 1101 check = "1@false@"; 1102 } 1103 //printf("L2:input=%s\n", input.c_str()); 1104 1105 strcpy(_data_DB->command, "SELECT "); 1106 strcat(_data_DB->command, _data_DB->tablename); 1107 strcat(_data_DB->command, ".* from "); 1108 strcat(_data_DB->command, _data_DB->tablename); 1109 strcat(_data_DB->command, " where Tag=="); 1110 sprintf(_data_DB->command, "%s'%s';", _data_DB->command, input.c_str()); 1111 sqlite3_stmt * pStatement; 1112 rc = sqlite3_prepare_v2(_data_DB->db, _data_DB->command, -1, &pStatement, NULL); 1113 if (rc == SQLITE_OK){ 1114 if (sqlite3_step(pStatement) == SQLITE_ROW) 1115 data = (const char *) sqlite3_column_text(pStatement, 1); 1116 else { 1117 printf("1 data_DB:: Data not yet in DB. %d\n", k); 1118 rc=31337; 1119 } 1120 } else { 1121 printf("data_DB:: Error executing SQL statement. rc = %i\n%s\n",rc,_data_DB->command); 1122 } 1123 1124 sqlite3_finalize(pStatement); 1125 // printf("L2:data=%s, check=%s\n", data.c_str(), check.c_str()); 1126 // printf("L2:--- %d %d---\n", miss[activeMission].services[i].num_conds, k); 1127 if(data.compare(check)==0){ 1128 //printf("L2:if taken\n"); 1129 for(int p = j + 1; p <= j + miss[activeMission].services[j].num_conds; p++) 1130 TransactData(p); 1131 } 1132 else{ 1133 //printf("L2:if not taken %d\n", miss[activeMission].services[j].num_conds); 1134 } 1135 j+=miss[activeMission].services[j].num_conds; 1136 } 1137 1138 else if(miss[activeMission].services[j].name.compare("while")==0) 1139 { 1140 //printf("while detected\n"); 1141 while(true){ 1142 data.clear(); 1143 input.clear(); 1144 check.clear(); 1145 if(!miss[activeMission].services[j].input[0].empty()){ 1146 input=miss[activeMission].services[j].input[0]; 1147 check = "1@true@"; 1148 } 1149 else{ 1150 input=miss[activeMission].services[j].input[1]; 1151 check = "1@false@"; 1152 } 1153 strcpy(_data_DB->command, "select "); 1154 strcat(_data_DB->command, _data_DB->tablename); 1155 strcat(_data_DB->command, ".* from "); 1156 strcat(_data_DB->command, _data_DB->tablename); 1157 strcat(_data_DB->command, " where Tag=="); 1158 sprintf(_data_DB->command, "%s'%s';", _data_DB->command, input.c_str()); 1159 sqlite3_stmt * pStatement; 1160 rc = sqlite3_prepare_v2(_data_DB->db, _data_DB->command, -1, &pStatement, NULL); 1161 if (rc == SQLITE_OK){ 1162 if (sqlite3_step(pStatement) == SQLITE_ROW) 1163 data = (const char *) sqlite3_column_text(pStatement, 1); 1164 else 1165 printf("1 data_DB:: Data not yet in DB. %d\n", i); 1166 } 1167 else { 1168 printf("data_DB:: Error executing SQL statement. rc = %i\n%s\n",rc,_data_DB->command); 1169 } 1170 1171 sqlite3_finalize(pStatement); 1172 printf("data=%s, check=%s\n", data.c_str(), check.c_str()); 1173 if(data.compare(check)==0){ 1174 printf("while taken\n"); 1175 for(int p = j + 1; p <= j + miss[activeMission].services[j].num_conds; p++) 1176 TransactData(p); 1177 } 1178 else{ 1179 printf("while not taken %d\n", miss[activeMission].services[k].num_conds); 1180 j+=miss[activeMission].services[j].num_conds; 1181 break; 1182 } 1183 } 1184 } 1185 else{ 1186 printf("L2: nocond transact\n"); 1187 TransactData(j);} 1188 j++; 1189 } 1190 } 1191 else{ 1192 //printf("if not taken %d\n", miss[activeMission].services[k].num_conds); 1193 } 1194 k+=miss[activeMission].services[k].num_conds; 1090 //printf("data=%s\n", data.c_str()); 1091 token = strtok((char *)data.c_str(), "@"); 1092 token = strtok(NULL, "@"); 1093 token = strtok(NULL, "@"); 1094 //printf("data=%s\n", token); 1095 break; 1195 1096 } 1196 else if(miss[activeMission].services[k].name.compare("while")==0) 1197 { 1198 //printf("while detected\n"); 1199 while(true){ 1200 data.clear(); 1201 input.clear(); 1202 check.clear(); 1203 if(!miss[activeMission].services[k].input[0].empty()){ 1204 input=miss[activeMission].services[k].input[0]; 1205 check = "1@true@"; 1206 } 1207 else{ 1208 input=miss[activeMission].services[k].input[1]; 1209 check = "1@false@"; 1210 } 1211 strcpy(_data_DB->command, "select "); 1212 strcat(_data_DB->command, _data_DB->tablename); 1213 strcat(_data_DB->command, ".* from "); 1214 strcat(_data_DB->command, _data_DB->tablename); 1215 strcat(_data_DB->command, " where Tag=="); 1216 sprintf(_data_DB->command, "%s'%s';", _data_DB->command, input.c_str()); 1217 sqlite3_stmt * pStatement; 1218 rc = sqlite3_prepare_v2(_data_DB->db, _data_DB->command, -1, &pStatement, NULL); 1219 if (rc == SQLITE_OK){ 1220 if (sqlite3_step(pStatement) == SQLITE_ROW) 1221 data = (const char *) sqlite3_column_text(pStatement, 1); 1222 else 1223 printf("1 data_DB:: Data not yet in DB. %d\n", i); 1224 } 1225 else { 1226 printf("data_DB:: Error executing SQL statement. rc = %i\n%s\n",rc,_data_DB->command); 1227 } 1228 1229 sqlite3_finalize(pStatement); 1230 printf("data=%s, check=%s\n", data.c_str(), check.c_str()); 1231 if(data.compare(check)==0){ 1232 printf("while taken\n"); 1233 for(int k = i + 1; k <= i + miss[activeMission].services[i].num_conds; k++) 1234 TransactData(k); 1235 } 1236 else{ 1237 printf("while not taken %d\n", miss[activeMission].services[k].num_conds); 1238 k+=miss[activeMission].services[k].num_conds; 1239 break; 1240 } 1241 } 1097 } 1098 printf("L0:--- %s %s---\n", miss[activeMission].services[i].output[t].c_str(), token); 1099 if(!miss[activeMission].services[i].output[t].compare(token)){ 1100 printf("L0:if taken\n"); 1101 for(uint16_t k = i+i; k <= i+miss[activeMission].services[i].num_conds; k++){ 1102 TransactData(k); 1242 1103 } 1243 else{ 1244 //printf("L1: nocond transact\n"); 1245 TransactData(k);} 1246 k++; 1247 } 1104 } 1105 else 1106 break; 1248 1107 } 1249 else{1250 printf("La2 if not taken %d\n", miss[activeMission].services[i].num_conds);1251 }1252 //printf("i=%d\n", i);1253 1108 i+=miss[activeMission].services[i].num_conds; 1254 //printf("i=%d\n", i); 1255 } 1256 else if(miss[activeMission].services[i].name.compare("while")==0) 1257 { 1258 //printf("while detected\n"); 1259 while(true){ 1260 data.clear(); 1261 input.clear(); 1262 check.clear(); 1263 if(!miss[activeMission].services[i].input[0].empty()){ 1264 input=miss[activeMission].services[i].input[0]; 1265 check = "1@true@"; 1266 } 1267 else{ 1268 input=miss[activeMission].services[i].input[1]; 1269 check = "1@false@"; 1270 } 1271 strcpy(_data_DB->command, "select "); 1272 strcat(_data_DB->command, _data_DB->tablename); 1273 strcat(_data_DB->command, ".* from "); 1274 strcat(_data_DB->command, _data_DB->tablename); 1275 strcat(_data_DB->command, " where Tag=="); 1276 sprintf(_data_DB->command, "%s'%s';", _data_DB->command, input.c_str()); 1277 sqlite3_stmt * pStatement; 1278 rc = sqlite3_prepare_v2(_data_DB->db, _data_DB->command, -1, &pStatement, NULL); 1279 if (rc == SQLITE_OK){ 1280 if (sqlite3_step(pStatement) == SQLITE_ROW) 1281 data = (const char *) sqlite3_column_text(pStatement, 1); 1282 else 1283 printf("1 data_DB:: Data not yet in DB. %d\n", i); 1284 } 1285 else { 1286 printf("data_DB:: Error executing SQL statement. rc = %i\n%s\n",rc,_data_DB->command); 1287 } 1288 1289 sqlite3_finalize(pStatement); 1290 //printf("data=%s, check=%s\n", data.c_str(), check.c_str()); 1291 if(data.compare(check)==0){ 1292 printf("while taken\n"); 1293 for(int k = i + 1; k <= i + miss[activeMission].services[i].num_conds; k++) 1294 TransactData(k); 1295 } 1296 else{ 1297 printf("while not taken %d\n", miss[activeMission].services[i].num_conds); 1298 i+=miss[activeMission].services[i].num_conds; 1299 break; 1300 } 1301 } 1109 //printf("doneif\n"); 1302 1110 } 1303 1111 else{ 1304 // printf("L0 nocond transact\n"); 1112 numstatements=0; 1113 //printf("L0 Neither if nor while\n"); 1305 1114 TransactData(i);} 1306 1115 i++; … … 1481 1290 cond_array[2]++; 1482 1291 } 1483 if(!strcmp(pChild3->Value(), "shell") ) {1292 if(!strcmp(pChild3->Value(), "shell") || conditional_2 != service_num) { 1484 1293 mList[mission_num].services[conditional_2].name = pChild3->Value(); 1485 mList[mission_num].services[conditional_2].output[0] = pChild3->Attribute("output1");1486 //printf("2shell detected\n");1487 }1488 else if(conditional_2 != service_num){1489 mList[mission_num].services[conditional_2].name = pChild3->Value();1490 if(pChild3->Attribute("input_t"))1491 mList[mission_num].services[conditional_2].input[0] = pChild3->Attribute("input_t");1492 if(pChild3->Attribute("input_f"))1493 mList[mission_num].services[conditional_2].input[1] = pChild3->Attribute("input_f");1494 1294 } 1495 1295 else{ 1496 1296 mList[mission_num].services[service_num].name = pChild3->Attribute("name"); 1297 } 1497 1298 if(pChild3->Attribute("input1")) 1498 mList[mission_num].services[ service_num].input[0] = pChild3->Attribute("input1");1299 mList[mission_num].services[conditional_2].input[0] = pChild3->Attribute("input1"); 1499 1300 if(pChild3->Attribute("input2")) 1500 mList[mission_num].services[ service_num].input[1] = pChild3->Attribute("input2");1301 mList[mission_num].services[conditional_2].input[1] = pChild3->Attribute("input2"); 1501 1302 if(pChild3->Attribute("input3")) 1502 mList[mission_num].services[ service_num].input[2] = pChild3->Attribute("input3");1303 mList[mission_num].services[conditional_2].input[2] = pChild3->Attribute("input3"); 1503 1304 if(pChild3->Attribute("input4")) 1504 mList[mission_num].services[ service_num].input[3] = pChild3->Attribute("input4");1305 mList[mission_num].services[conditional_2].input[3] = pChild3->Attribute("input4"); 1505 1306 if(pChild3->Attribute("input5")) 1506 mList[mission_num].services[ service_num].input[4] = pChild3->Attribute("input5");1307 mList[mission_num].services[conditional_2].input[4] = pChild3->Attribute("input5"); 1507 1308 if(pChild3->Attribute("output1")) 1508 mList[mission_num].services[ service_num].output[0] = pChild3->Attribute("output1");1309 mList[mission_num].services[conditional_2].output[0] = pChild3->Attribute("output1"); 1509 1310 if(pChild3->Attribute("output2")) 1510 mList[mission_num].services[ service_num].output[1] = pChild3->Attribute("output2");1311 mList[mission_num].services[conditional_2].output[1] = pChild3->Attribute("output2"); 1511 1312 if(pChild3->Attribute("output3")) 1512 mList[mission_num].services[ service_num].output[2] = pChild3->Attribute("output3");1313 mList[mission_num].services[conditional_2].output[2] = pChild3->Attribute("output3"); 1513 1314 if(pChild3->Attribute("output4")) 1514 mList[mission_num].services[ service_num].output[3] = pChild3->Attribute("output4");1315 mList[mission_num].services[conditional_2].output[3] = pChild3->Attribute("output4"); 1515 1316 if(pChild3->Attribute("output5")) 1516 mList[mission_num].services[service_num].output[4] = pChild3->Attribute("output5"); 1517 } 1317 mList[mission_num].services[conditional_2].output[4] = pChild3->Attribute("output5"); 1518 1318 mList[mission_num].services[conditional_2].num_conds = cond_array[2]; 1519 1319 cond_array[1]+=cond_array[2]+1; … … 1524 1324 } 1525 1325 //printf("here\n"); 1526 if(!strcmp(pChild2->Value(), "shell") ) {1326 if(!strcmp(pChild2->Value(), "shell") || conditional_1 != service_num) { 1527 1327 mList[mission_num].services[conditional_1].name = pChild2->Value(); 1528 mList[mission_num].services[conditional_1].output[0] = pChild2->Attribute("output1");1529 //printf("1shell detected\n");1530 }1531 else if(conditional_1 != service_num){1532 mList[mission_num].services[conditional_1].name = pChild2->Value();1533 if(pChild2->Attribute("input_t"))1534 mList[mission_num].services[conditional_1].input[0] = pChild2->Attribute("input_t");1535 if(pChild2->Attribute("input_f"))1536 mList[mission_num].services[conditional_1].input[1] = pChild2->Attribute("input_f");1537 1328 } 1538 1329 else{ 1539 1330 mList[mission_num].services[service_num].name = pChild2->Attribute("name"); 1540 if(pChild2->Attribute("input1")) 1541 mList[mission_num].services[service_num].input[0] = pChild2->Attribute("input1"); 1542 if(pChild2->Attribute("input2")) 1543 mList[mission_num].services[service_num].input[1] = pChild2->Attribute("input2"); 1331 } 1332 if(pChild2->Attribute("input1")) 1333 mList[mission_num].services[conditional_1].input[0] = pChild2->Attribute("input1"); 1334 if(pChild2->Attribute("input2")) 1335 mList[mission_num].services[conditional_1].input[1] = pChild2->Attribute("input2"); 1544 1336 if(pChild2->Attribute("input3")) 1545 mList[mission_num].services[ service_num].input[2] = pChild2->Attribute("input3");1337 mList[mission_num].services[conditional_1].input[2] = pChild2->Attribute("input3"); 1546 1338 if(pChild2->Attribute("input4")) 1547 mList[mission_num].services[ service_num].input[3] = pChild2->Attribute("input4");1339 mList[mission_num].services[conditional_1].input[3] = pChild2->Attribute("input4"); 1548 1340 if(pChild2->Attribute("input5")) 1549 mList[mission_num].services[ service_num].input[4] = pChild2->Attribute("input5");1341 mList[mission_num].services[conditional_1].input[4] = pChild2->Attribute("input5"); 1550 1342 if(pChild2->Attribute("output1")) 1551 mList[mission_num].services[ service_num].output[0] = pChild2->Attribute("output1");1343 mList[mission_num].services[conditional_1].output[0] = pChild2->Attribute("output1"); 1552 1344 if(pChild2->Attribute("output2")) 1553 mList[mission_num].services[ service_num].output[1] = pChild2->Attribute("output2");1345 mList[mission_num].services[conditional_1].output[1] = pChild2->Attribute("output2"); 1554 1346 if(pChild2->Attribute("output3")) 1555 mList[mission_num].services[ service_num].output[2] = pChild2->Attribute("output3");1347 mList[mission_num].services[conditional_1].output[2] = pChild2->Attribute("output3"); 1556 1348 if(pChild2->Attribute("output4")) 1557 mList[mission_num].services[ service_num].output[3] = pChild2->Attribute("output4");1349 mList[mission_num].services[conditional_1].output[3] = pChild2->Attribute("output4"); 1558 1350 if(pChild2->Attribute("output5")) 1559 mList[mission_num].services[ service_num].output[4] = pChild2->Attribute("output5");1560 }1351 mList[mission_num].services[conditional_1].output[4] = pChild2->Attribute("output5"); 1352 //printf("2%s %s\n", mList[mission_num].services[conditional_1].output[0].c_str(), mList[mission_num].services[conditional_1].output[1].c_str()); 1561 1353 1562 1354 mList[mission_num].services[conditional_1].num_conds = cond_array[1]; … … 1566 1358 } 1567 1359 1568 if(!strcmp(pChild1->Value(), "shell")) { 1569 //printf("shell detected\n"); 1360 if(!strcmp(pChild1->Value(), "shell") || conditional_0 != service_num) { 1570 1361 mList[mission_num].services[conditional_0].name = pChild1->Value(); 1571 mList[mission_num].services[conditional_0].output[0] = pChild1->Attribute("output1");1572 }1573 else if(conditional_0 != service_num){1574 mList[mission_num].services[conditional_0].name = pChild1->Value();1575 if(pChild1->Attribute("input_t"))1576 mList[mission_num].services[conditional_0].input[0] = pChild1->Attribute("input_t");1577 if(pChild1->Attribute("input_f"))1578 mList[mission_num].services[conditional_0].input[1] = pChild1->Attribute("input_f");1579 //printf("---input_t=%s\n", mList[mission_num].services[conditional_0].input[0].c_str());1580 1362 } 1581 1363 else{ 1582 1364 mList[mission_num].services[conditional_0].name = pChild1->Attribute("name"); 1365 } 1583 1366 //printf("name=%s\n", mList[mission_num].services[conditional_0].name.c_str()); 1584 1367 if(pChild1->Attribute("input1")) 1585 mList[mission_num].services[ service_num].input[0] = pChild1->Attribute("input1");1368 mList[mission_num].services[conditional_0].input[0] = pChild1->Attribute("input1"); 1586 1369 if(pChild1->Attribute("input2")) 1587 mList[mission_num].services[ service_num].input[1] = pChild1->Attribute("input2");1370 mList[mission_num].services[conditional_0].input[1] = pChild1->Attribute("input2"); 1588 1371 if(pChild1->Attribute("input3")) 1589 mList[mission_num].services[ service_num].input[2] = pChild1->Attribute("input3");1372 mList[mission_num].services[conditional_0].input[2] = pChild1->Attribute("input3"); 1590 1373 if(pChild1->Attribute("input4")) 1591 mList[mission_num].services[ service_num].input[3] = pChild1->Attribute("input4");1374 mList[mission_num].services[conditional_0].input[3] = pChild1->Attribute("input4"); 1592 1375 if(pChild1->Attribute("input5")) 1593 mList[mission_num].services[ service_num].input[4] = pChild1->Attribute("input5");1376 mList[mission_num].services[conditional_0].input[4] = pChild1->Attribute("input5"); 1594 1377 if(pChild1->Attribute("output1")) 1595 mList[mission_num].services[ service_num].output[0] = pChild1->Attribute("output1");1378 mList[mission_num].services[conditional_0].output[0] = pChild1->Attribute("output1"); 1596 1379 if(pChild1->Attribute("output2")) 1597 mList[mission_num].services[ service_num].output[1] = pChild1->Attribute("output2");1380 mList[mission_num].services[conditional_0].output[1] = pChild1->Attribute("output2"); 1598 1381 if(pChild1->Attribute("output3")) 1599 mList[mission_num].services[ service_num].output[2] = pChild1->Attribute("output3");1382 mList[mission_num].services[conditional_0].output[2] = pChild1->Attribute("output3"); 1600 1383 if(pChild1->Attribute("output4")) 1601 mList[mission_num].services[ service_num].output[3] = pChild1->Attribute("output4");1384 mList[mission_num].services[conditional_0].output[3] = pChild1->Attribute("output4"); 1602 1385 if(pChild1->Attribute("output5")) 1603 1386 mList[mission_num].services[service_num].output[4] = pChild1->Attribute("output4"); 1604 } 1605 1387 //printf("1%s %s\n", mList[mission_num].services[conditional_0].output[0].c_str(), mList[mission_num].services[conditional_0].output[1].c_str()); 1606 1388 mList[mission_num].services[conditional_0].num_conds = cond_array[0]; 1607 1389 cond_array[0] = 0;