Changeset 461
- Timestamp:
- 09/03/09 12:29:03 (15 years ago)
- Location:
- vtcross/trunk/src
- Files:
-
- 2 modified
Legend:
- Unmodified
- Added
- Removed
-
vtcross/trunk/src/include/vtcross/components.h
r440 r461 138 138 void DeregisterComponent(); 139 139 140 /* Starts the SML Server and watches it for incoming messages141 */142 void StartSMLServer();140 /* Starts the SML Server and watches it for incoming messages 141 */ 142 void StartSMLServer(); 143 143 144 144 private: … … 157 157 */ 158 158 void ReceiveServices(int32_t ID); 159 159 void DeregisterServices(int32_t ID); 160 160 161 161 /* Change the active mission of the radio to a new one and adjust radio … … 197 197 int16_t CEPort; 198 198 int16_t SMLport; 199 uint16_t numberOfCognitiveEngines; 199 200 uint32_t numberOfCognitiveEngines; 201 200 202 int32_t cogEngSrv; 201 203 int32_t activeMission; 204 202 205 uint32_t Current_ID; 206 203 207 bool CE_Present; 204 208 CE_Reg *CE_List; -
vtcross/trunk/src/service_management_layer/ServiceManagementLayer.cpp
r448 r461 57 57 58 58 59 typedef struct services_s *services_DB;60 typedef struct data_s *data_DB;61 62 59 using namespace std; 63 60 61 62 /* Internal structs used to keep track of sqlite database information. */ 64 63 struct services_s { 65 64 string filename; … … 78 77 }; 79 78 80 services_DB _services_DB; 81 data_DB _data_DB; 79 typedef struct services_s *services_DB_t; 80 typedef struct data_s *data_DB_t; 81 82 /* Global tracking of the services and parameters that this instance of SML is 83 * aware of. */ 84 services_DB_t services_DB; 85 data_DB_t data_DB; 86 87 /* The filename of the SML configuration, used if the SML is told to reload it's 88 * configuration. */ 82 89 string _SML_Config; 83 bool shellFound; 84 85 /* Callback function used internally by some of the SQLite3 commands */ 90 91 /* Keeps track of whether or not the 'shell' component is used by the active 92 * mission. */ 93 bool shellUsed; 94 95 96 /* Callback function used internally by some of the SQLite3 commands for debug 97 * output. Code provided by sqlite documentation. */ 86 98 int32_t 87 99 callback(void *notUsed, int32_t argc, char **argv, char **azColName) … … 94 106 return 0; 95 107 } 108 96 109 97 110 /* Useful for spotchecking what's in the database */ … … 101 114 /* 102 115 LOG("\n\n\n"); 103 _data_DB->command = "select ";104 _data_DB->command.append(_data_DB->tablename);105 _data_DB->command.append(".* from ");106 _data_DB->command.append(_data_DB->tablename);107 _data_DB->command.append(";");116 data_DB->command = "select "; 117 data_DB->command.append(data_DB->tablename); 118 data_DB->command.append(".* from "); 119 data_DB->command.append(data_DB->tablename); 120 data_DB->command.append(";"); 108 121 109 122 char *errorMsg; 110 int32_t rc = sqlite3_exec( _data_DB->db, _data_DB->command.c_str(), callback, 0, &errorMsg);123 int32_t rc = sqlite3_exec(data_DB->db, data_DB->command.c_str(), callback, 0, &errorMsg); 111 124 if((rc != SQLITE_OK) && (rc != 101)) 112 125 WARNING("SQL error: %s\n", errorMsg); 113 126 114 LOG("database %s, table %s:\n", _data_DB->filename, _data_DB->tablename);127 LOG("database %s, table %s:\n", data_DB->filename, data_DB->tablename); 115 128 LOG("\n\n\n"); 116 129 */ … … 137 150 int32_t rc; /* sqlite command return code */ 138 151 139 _services_DB->command = "drop table ";140 _services_DB->command.append(_services_DB->tablename);141 rc = sqlite3_exec( _services_DB->db, _services_DB->command.c_str(), callback, 0, &errorMsg);152 services_DB->command = "drop table "; 153 services_DB->command.append(services_DB->tablename); 154 rc = sqlite3_exec(services_DB->db, services_DB->command.c_str(), callback, 0, &errorMsg); 142 155 if((rc != SQLITE_OK) && (rc != 101)) 143 156 WARNING("ServiceManagementLayer::Destructor services 'drop table' error: %s\n", errorMsg); 144 157 145 _services_DB->command = "vacuum";146 rc = sqlite3_exec( _services_DB->db, _services_DB->command.c_str(), callback, 0, &errorMsg);158 services_DB->command = "vacuum"; 159 rc = sqlite3_exec(services_DB->db, services_DB->command.c_str(), callback, 0, &errorMsg); 147 160 if((rc != SQLITE_OK) && (rc != 101)) 148 161 WARNING("ServiceManagementLayer::Destructor services 'vacuum' error: %s\n", errorMsg); 149 162 150 free( _services_DB);151 152 _data_DB->command = "drop table ";153 _data_DB->command.append(_data_DB->tablename);154 rc = sqlite3_exec( _data_DB->db, _data_DB->command.c_str(), callback, 0, &errorMsg);163 free(services_DB); 164 165 data_DB->command = "drop table "; 166 data_DB->command.append(data_DB->tablename); 167 rc = sqlite3_exec(data_DB->db, data_DB->command.c_str(), callback, 0, &errorMsg); 155 168 if((rc != SQLITE_OK) && (rc != 101)) 156 169 WARNING("ServiceManagementLayer::Destructor data 'drop table' error: %s\n", errorMsg); 157 170 158 _data_DB->command = "vacuum";159 rc = sqlite3_exec( _data_DB->db, _data_DB->command.c_str(), callback, 0, &errorMsg);171 data_DB->command = "vacuum"; 172 rc = sqlite3_exec(data_DB->db, data_DB->command.c_str(), callback, 0, &errorMsg); 160 173 if((rc != SQLITE_OK) && (rc != 101)) 161 174 WARNING("ServiceManagementLayer::Destructor data 'vacuum' error: %s\n", errorMsg); 162 175 163 free( _data_DB);176 free(data_DB); 164 177 } 165 178 … … 204 217 int32_t rc; /* sqlite command return code */ 205 218 206 _services_DB = new services_s;207 _services_DB->filename="Services_Table";208 sqlite3_open( _services_DB->filename.c_str(), &(_services_DB->db));219 services_DB = new services_s; 220 services_DB->filename="Services_Table"; 221 sqlite3_open(services_DB->filename.c_str(), &(services_DB->db)); 209 222 210 223 char *cols[] = {(char *)"ID_Num", (char *)"Service_Name"}; 211 224 212 _services_DB->tablename="Services";225 services_DB->tablename="Services"; 213 226 214 227 /* ifprogram execution ends in anything other than a ordered shutdown, DB's will still 215 228 * be there for next run. Need to get rid of it so that old data isn't inadvertantly 216 229 * used in the next execution cycle. */ 217 _services_DB->command = "DROP TABLE ifEXISTS Services;";218 219 rc = sqlite3_prepare_v2( _services_DB->db, _services_DB->command.c_str(), 128, &ppStmt, &pzTail);230 services_DB->command = "DROP TABLE ifEXISTS Services;"; 231 232 rc = sqlite3_prepare_v2(services_DB->db, services_DB->command.c_str(), 128, &ppStmt, &pzTail); 220 233 if((rc != SQLITE_OK) && (rc != 101)) 221 234 WARNING("ServiceManagementLayer::CreateServicesDB 'prepare_stmt' error %d\n", rc); … … 225 238 WARNING("ServiceManagementLayer::CreateServicesDB 'step' error\n"); 226 239 227 _services_DB->num_columns = 2;240 services_DB->num_columns = 2; 228 241 229 242 /* Generate command */ 230 _services_DB->command="CREATE TABLE ";231 _services_DB->command.append(_services_DB->tablename);232 _services_DB->command.append("(");233 _services_DB->command.append(cols[0]);234 _services_DB->command.append(" INT, ");235 _services_DB->command.append(cols[1]);236 _services_DB->command.append(" TEXT);");243 services_DB->command="CREATE TABLE "; 244 services_DB->command.append(services_DB->tablename); 245 services_DB->command.append("("); 246 services_DB->command.append(cols[0]); 247 services_DB->command.append(" INT, "); 248 services_DB->command.append(cols[1]); 249 services_DB->command.append(" TEXT);"); 237 250 238 251 /* Execute create table command */ 239 rc = sqlite3_prepare_v2( _services_DB->db, _services_DB->command.c_str(), 128, &ppStmt, &pzTail);252 rc = sqlite3_prepare_v2(services_DB->db, services_DB->command.c_str(), 128, &ppStmt, &pzTail); 240 253 if((rc != SQLITE_OK) && (rc != 101)) 241 254 WARNING("ServiceManagementLayer::CreateServicesDB 'prepare_stmt' error %d\n", rc); … … 259 272 int32_t rc; /* sqlite command return code */ 260 273 261 _data_DB = new data_s;262 263 _data_DB->filename="Data_Table";264 sqlite3_open( _data_DB->filename.c_str(), &(_data_DB->db));274 data_DB = new data_s; 275 276 data_DB->filename="Data_Table"; 277 sqlite3_open(data_DB->filename.c_str(), &(data_DB->db)); 265 278 266 279 char *cols[] = {(char *)"Tag", (char *)"Data"}; 267 280 268 _data_DB->tablename = "Data";269 _data_DB->command = "DROP TABLE ifEXISTS Data;";270 271 rc = sqlite3_prepare_v2( _data_DB->db, _data_DB->command.c_str(), 128, &ppStmt, &pzTail);281 data_DB->tablename = "Data"; 282 data_DB->command = "DROP TABLE ifEXISTS Data;"; 283 284 rc = sqlite3_prepare_v2(data_DB->db, data_DB->command.c_str(), 128, &ppStmt, &pzTail); 272 285 if((rc != SQLITE_OK) && (rc != 101)) 273 286 WARNING("ServiceManagementLayer::CreateDataDB 'prepare_stmt' error %d\n", rc); … … 277 290 WARNING("ServiceManagementLayer::CreateDataDB 'step' error\n"); 278 291 279 _data_DB->num_columns = 2;292 data_DB->num_columns = 2; 280 293 281 294 /* Generate command */ 282 _data_DB->command = "CREATE TABLE ";283 _data_DB->command.append(_data_DB->tablename);284 _data_DB->command.append("(");285 _data_DB->command.append(cols[0]);295 data_DB->command = "CREATE TABLE "; 296 data_DB->command.append(data_DB->tablename); 297 data_DB->command.append("("); 298 data_DB->command.append(cols[0]); 286 299 287 300 /* First column is the name of the data (corresponding to the name of the output/input pair) 288 301 * It is the primary key so any subsequent data with the same name will replace the row. */ 289 _data_DB->command.append(" TEXT PRIMARY KEY ON CONFLICT REPLACE, ");290 _data_DB->command.append(cols[1]);291 _data_DB->command.append(" TEXT);");292 293 rc = sqlite3_prepare_v2( _data_DB->db, _data_DB->command.c_str(), 128, &ppStmt, &pzTail);302 data_DB->command.append(" TEXT PRIMARY KEY ON CONFLICT REPLACE, "); 303 data_DB->command.append(cols[1]); 304 data_DB->command.append(" TEXT);"); 305 306 rc = sqlite3_prepare_v2(data_DB->db, data_DB->command.c_str(), 128, &ppStmt, &pzTail); 294 307 if((rc != SQLITE_OK) && (rc != 101)) 295 308 WARNING("ServiceManagementLayer::CreateDataDB 'prepare_stmt' error %d\n", rc); … … 574 587 575 588 /* Generate command */ 576 _services_DB->command = "insert into ";577 _services_DB->command.append(_services_DB->tablename);578 _services_DB->command.append(" (");579 _services_DB->command.append(cols[0]);580 _services_DB->command.append(", ");581 _services_DB->command.append(cols[1]);582 _services_DB->command.append(") ");583 _services_DB->command.append(" values(");589 services_DB->command = "insert into "; 590 services_DB->command.append(services_DB->tablename); 591 services_DB->command.append(" ("); 592 services_DB->command.append(cols[0]); 593 services_DB->command.append(", "); 594 services_DB->command.append(cols[1]); 595 services_DB->command.append(") "); 596 services_DB->command.append(" values("); 584 597 585 598 char temp[3]; … … 587 600 sprintf(temp, "%d", ID); 588 601 589 _services_DB->command.append(temp);590 _services_DB->command.append(", '");591 _services_DB->command.append(buffer);592 _services_DB->command.append("');");602 services_DB->command.append(temp); 603 services_DB->command.append(", '"); 604 services_DB->command.append(buffer); 605 services_DB->command.append("');"); 593 606 594 607 /* Execute add command */ 595 608 char *errorMsg; 596 int rc = sqlite3_exec( _services_DB->db, _services_DB->command.c_str(), callback, 0, &errorMsg);609 int rc = sqlite3_exec(services_DB->db, services_DB->command.c_str(), callback, 0, &errorMsg); 597 610 if((rc != SQLITE_OK) && (rc != 101)) 598 611 WARNING("ServiceManagementLayer::RecieveServices DB Error %s\n", errorMsg); … … 633 646 /* ifit is a service, search the database of registered services to find 634 647 * the ID of the component that registered it */ 635 _services_DB->command="select ";636 _services_DB->command.append(_services_DB->tablename);637 _services_DB->command.append(".* from ");638 _services_DB->command.append( _services_DB->tablename);639 _services_DB->command.append(" where Service_Name=='");640 _services_DB->command.append(miss[activeMission].services[i].name);641 _services_DB->command.append("';");648 services_DB->command="select "; 649 services_DB->command.append(services_DB->tablename); 650 services_DB->command.append(".* from "); 651 services_DB->command.append( services_DB->tablename); 652 services_DB->command.append(" where Service_Name=='"); 653 services_DB->command.append(miss[activeMission].services[i].name); 654 services_DB->command.append("';"); 642 655 643 656 sqlite3_stmt * pStatement; 644 int32_t rc = sqlite3_prepare_v2( _services_DB->db, _services_DB->command.c_str(), \657 int32_t rc = sqlite3_prepare_v2(services_DB->db, services_DB->command.c_str(), \ 645 658 -1, &pStatement, NULL); 646 659 if(rc == SQLITE_OK) { … … 655 668 } else { 656 669 WARNING("services_DB:: Error executing SQL statement. rc = %i\n%s\n", \ 657 rc, _services_DB->command.c_str());670 rc, services_DB->command.c_str()); 658 671 } 659 672 … … 691 704 /* Send a message directly to the shell */ 692 705 if(miss[activeMission].services[sourceID].name.find("shell") != string::npos) { 693 shell Found=true;706 shellUsed=true; 694 707 695 708 int32_t k = 0; … … 702 715 for(int32_t t = 0; t < k; t++) { 703 716 memset(buffer, 0 , 256); 704 _data_DB->command="select ";705 _data_DB->command.append(_data_DB->tablename);706 _data_DB->command.append(".* from ");707 _data_DB->command.append(_data_DB->tablename);708 _data_DB->command.append(" where Tag=='");709 _data_DB->command.append(miss[activeMission].input[t]);710 _data_DB->command.append("';");717 data_DB->command="select "; 718 data_DB->command.append(data_DB->tablename); 719 data_DB->command.append(".* from "); 720 data_DB->command.append(data_DB->tablename); 721 data_DB->command.append(" where Tag=='"); 722 data_DB->command.append(miss[activeMission].input[t]); 723 data_DB->command.append("';"); 711 724 sqlite3_stmt * pStatement; 712 725 713 int32_t rc = sqlite3_prepare_v2( _data_DB->db, _data_DB->command.c_str(), \726 int32_t rc = sqlite3_prepare_v2(data_DB->db, data_DB->command.c_str(), \ 714 727 -1, &pStatement, NULL); 715 728 if(rc == SQLITE_OK) { … … 717 730 data=((const char*) sqlite3_column_text(pStatement, 1)); 718 731 else { 719 LOG("3data_DB:: Data not yet in DB., %s\n", _data_DB->command.c_str());732 LOG("3data_DB:: Data not yet in DB., %s\n", data_DB->command.c_str()); 720 733 rc = 31337; 721 734 } … … 723 736 else { 724 737 WARNING("data_DB:: Error executing SQL statement. rc = %i\n%s\n", \ 725 rc, _data_DB->command.c_str());738 rc,data_DB->command.c_str()); 726 739 } 727 740 … … 768 781 ServiceManagementLayer::PerformActiveMission() 769 782 { 770 shell Found = false;783 shellUsed = false; 771 784 std::string data_param; 772 785 std::string data_obsv; … … 797 810 memset(buffer1, 0, 256); 798 811 ReadMessage(shellSocketFD, buffer1); 799 _data_DB->command="insert into ";800 _data_DB->command.append(_data_DB->tablename);801 _data_DB->command.append(" (");802 _data_DB->command.append(cols[0]);803 _data_DB->command.append(", ");804 _data_DB->command.append(cols[1]);805 _data_DB->command.append(") ");812 data_DB->command="insert into "; 813 data_DB->command.append(data_DB->tablename); 814 data_DB->command.append(" ("); 815 data_DB->command.append(cols[0]); 816 data_DB->command.append(", "); 817 data_DB->command.append(cols[1]); 818 data_DB->command.append(") "); 806 819 807 820 memset(buffer, 0, 256); 808 821 ReadMessage(shellSocketFD, buffer); 809 _data_DB->command.append(" values('");810 _data_DB->command.append(buffer1);811 _data_DB->command.append("', '1@");812 _data_DB->command.append(buffer1);813 _data_DB->command.append("@");814 _data_DB->command.append(buffer);815 _data_DB->command.append("');");816 817 rc = sqlite3_exec( _data_DB->db, _data_DB->command.c_str(), callback, 0, &errorMsg);822 data_DB->command.append(" values('"); 823 data_DB->command.append(buffer1); 824 data_DB->command.append("', '1@"); 825 data_DB->command.append(buffer1); 826 data_DB->command.append("@"); 827 data_DB->command.append(buffer); 828 data_DB->command.append("');"); 829 830 rc = sqlite3_exec(data_DB->db, data_DB->command.c_str(), callback, 0, &errorMsg); 818 831 if((rc != SQLITE_OK) && (rc != 101)) 819 832 WARNING("SQL error: %s\n", errorMsg); … … 830 843 input = miss[activeMission].services[i - numstatements[0] - 1].output[t]; 831 844 832 _data_DB->command="SELECT ";833 _data_DB->command.append(_data_DB->tablename);834 _data_DB->command.append(".* from ");835 _data_DB->command.append(_data_DB->tablename);836 _data_DB->command.append(" where Tag=='");837 _data_DB->command.append(input);838 _data_DB->command.append("';");845 data_DB->command="SELECT "; 846 data_DB->command.append(data_DB->tablename); 847 data_DB->command.append(".* from "); 848 data_DB->command.append(data_DB->tablename); 849 data_DB->command.append(" where Tag=='"); 850 data_DB->command.append(input); 851 data_DB->command.append("';"); 839 852 840 853 sqlite3_stmt *pStatement; 841 rc = sqlite3_prepare_v2( _data_DB->db, _data_DB->command.c_str(), \854 rc = sqlite3_prepare_v2(data_DB->db, data_DB->command.c_str(), \ 842 855 -1, &pStatement, NULL); 843 856 if(rc == SQLITE_OK) { … … 850 863 } else { 851 864 WARNING("data_DB:: Error executing SQL statement. rc = %i\n%s\n", \ 852 rc, _data_DB->command.c_str());865 rc,data_DB->command.c_str()); 853 866 } 854 867 … … 865 878 if(miss[activeMission].services[i].output[t].find(">") != string::npos) { 866 879 std::string data2; 867 _data_DB->command="SELECT ";868 _data_DB->command.append(_data_DB->tablename);869 _data_DB->command.append(".* from ");870 _data_DB->command.append(_data_DB->tablename);871 _data_DB->command.append(" where Tag=='");872 _data_DB->command.append(miss[activeMission].services[i].output[t].erase(0, 1));873 _data_DB->command.append("';");880 data_DB->command="SELECT "; 881 data_DB->command.append(data_DB->tablename); 882 data_DB->command.append(".* from "); 883 data_DB->command.append(data_DB->tablename); 884 data_DB->command.append(" where Tag=='"); 885 data_DB->command.append(miss[activeMission].services[i].output[t].erase(0, 1)); 886 data_DB->command.append("';"); 874 887 sqlite3_stmt *pStatement; 875 888 876 rc = sqlite3_prepare_v2( _data_DB->db, _data_DB->command.c_str(), \889 rc = sqlite3_prepare_v2(data_DB->db, data_DB->command.c_str(), \ 877 890 -1, &pStatement, NULL); 878 891 if(rc == SQLITE_OK) { … … 885 898 } else { 886 899 WARNING("data_DB:: Error executing SQL statement. rc = %i\n%s\n", \ 887 rc, _data_DB->command.c_str());900 rc, data_DB->command.c_str()); 888 901 } 889 902 … … 907 920 if(!miss[activeMission].services[k].output[t].empty()) { 908 921 input = miss[activeMission].services[k - numstatements[1] - 1].output[t]; 909 _data_DB->command="SELECT ";910 _data_DB->command.append(_data_DB->tablename);911 _data_DB->command.append(".* from ");912 _data_DB->command.append(_data_DB->tablename);913 _data_DB->command.append(" where Tag=='");914 _data_DB->command.append(input);915 _data_DB->command.append("';");922 data_DB->command="SELECT "; 923 data_DB->command.append(data_DB->tablename); 924 data_DB->command.append(".* from "); 925 data_DB->command.append(data_DB->tablename); 926 data_DB->command.append(" where Tag=='"); 927 data_DB->command.append(input); 928 data_DB->command.append("';"); 916 929 917 930 sqlite3_stmt *pStatement; 918 rc = sqlite3_prepare_v2( _data_DB->db, _data_DB->command.c_str(), \931 rc = sqlite3_prepare_v2(data_DB->db, data_DB->command.c_str(), \ 919 932 -1, &pStatement, NULL); 920 933 if(rc == SQLITE_OK) { … … 927 940 } else { 928 941 WARNING("data_DB:: Error executing SQL statement. rc = %i\n%s\n", \ 929 rc, _data_DB->command.c_str());942 rc,data_DB->command.c_str()); 930 943 } 931 944 … … 941 954 if(miss[activeMission].services[k].output[t].find(">") != string::npos) { 942 955 std::string data2; 943 _data_DB->command="SELECT ";944 _data_DB->command.append(_data_DB->tablename);945 _data_DB->command.append(".* from ");946 _data_DB->command.append(_data_DB->tablename);947 _data_DB->command.append(" where Tag=='");948 _data_DB->command.append(miss[activeMission].services[k].output[t].erase(0, 1));949 _data_DB->command.append("';");956 data_DB->command="SELECT "; 957 data_DB->command.append(data_DB->tablename); 958 data_DB->command.append(".* from "); 959 data_DB->command.append(data_DB->tablename); 960 data_DB->command.append(" where Tag=='"); 961 data_DB->command.append(miss[activeMission].services[k].output[t].erase(0, 1)); 962 data_DB->command.append("';"); 950 963 951 964 sqlite3_stmt *pStatement; 952 rc = sqlite3_prepare_v2( _data_DB->db, _data_DB->command.c_str(), \965 rc = sqlite3_prepare_v2(data_DB->db, data_DB->command.c_str(), \ 953 966 -1, &pStatement, NULL); 954 967 if(rc == SQLITE_OK) { … … 961 974 } else { 962 975 WARNING("data_DB:: Error executing SQL statement. rc = %i\n%s\n", \ 963 rc, _data_DB->command.c_str());976 rc, data_DB->command.c_str()); 964 977 } 965 978 … … 983 996 input = miss[activeMission].services[j - numstatements[2] - 1].output[t]; 984 997 985 _data_DB->command="SELECT ";986 _data_DB->command.append(_data_DB->tablename);987 _data_DB->command.append(".* from ");988 _data_DB->command.append(_data_DB->tablename);989 _data_DB->command.append(" where Tag=='");990 _data_DB->command.append(input);991 _data_DB->command.append("';");998 data_DB->command="SELECT "; 999 data_DB->command.append(data_DB->tablename); 1000 data_DB->command.append(".* from "); 1001 data_DB->command.append(data_DB->tablename); 1002 data_DB->command.append(" where Tag=='"); 1003 data_DB->command.append(input); 1004 data_DB->command.append("';"); 992 1005 993 1006 sqlite3_stmt *pStatement; 994 1007 995 rc = sqlite3_prepare_v2( _data_DB->db, _data_DB->command.c_str(), -1, &pStatement, NULL);1008 rc = sqlite3_prepare_v2(data_DB->db, data_DB->command.c_str(), -1, &pStatement, NULL); 996 1009 if(rc == SQLITE_OK) { 997 1010 if(sqlite3_step(pStatement) == SQLITE_ROW) … … 1003 1016 } else { 1004 1017 WARNING("data_DB:: Error executing SQL statement. rc = %i\n%s\n", \ 1005 rc, _data_DB->command.c_str());1018 rc, data_DB->command.c_str()); 1006 1019 } 1007 1020 … … 1017 1030 bool doit = false; 1018 1031 if(miss[activeMission].services[j].output[t].find(">") != string::npos) { 1019 _data_DB->command="SELECT ";1020 _data_DB->command.append(_data_DB->tablename);1021 _data_DB->command.append(".* from ");1022 _data_DB->command.append(_data_DB->tablename);1023 _data_DB->command.append(" where Tag=='");1024 _data_DB->command.append(miss[activeMission].services[j].output[t].erase(0, 1));1025 _data_DB->command.append("';");1032 data_DB->command="SELECT "; 1033 data_DB->command.append(data_DB->tablename); 1034 data_DB->command.append(".* from "); 1035 data_DB->command.append(data_DB->tablename); 1036 data_DB->command.append(" where Tag=='"); 1037 data_DB->command.append(miss[activeMission].services[j].output[t].erase(0, 1)); 1038 data_DB->command.append("';"); 1026 1039 1027 1040 sqlite3_stmt *pStatement; 1028 rc = sqlite3_prepare_v2( _data_DB->db, _data_DB->command.c_str(), -1, &pStatement, NULL);1041 rc = sqlite3_prepare_v2(data_DB->db, data_DB->command.c_str(), -1, &pStatement, NULL); 1029 1042 if(rc == SQLITE_OK) { 1030 1043 if(sqlite3_step(pStatement) == SQLITE_ROW) … … 1036 1049 } else { 1037 1050 WARNING("data_DB:: Error executing SQL statement. rc = %i\n%s\n", \ 1038 rc, _data_DB->command.c_str());1051 rc, data_DB->command.c_str()); 1039 1052 } 1040 1053 … … 1079 1092 if(!miss[activeMission].services[j].output[t].empty()){ 1080 1093 input=miss[activeMission].services[l-2].output[t]; 1081 _data_DB->command="SELECT ";1082 _data_DB->command.append(_data_DB->tablename);1083 _data_DB->command.append(".* from ");1084 _data_DB->command.append(_data_DB->tablename);1085 _data_DB->command.append(" where Tag=='");1086 _data_DB->command.append(input);1087 _data_DB->command.append("';");1094 data_DB->command="SELECT "; 1095 data_DB->command.append(data_DB->tablename); 1096 data_DB->command.append(".* from "); 1097 data_DB->command.append(data_DB->tablename); 1098 data_DB->command.append(" where Tag=='"); 1099 data_DB->command.append(input); 1100 data_DB->command.append("';"); 1088 1101 sqlite3_stmt *pStatement; 1089 1102 1090 rc = sqlite3_prepare_v2( _data_DB->db, _data_DB->command.c_str(), -1, &pStatement, NULL);1103 rc = sqlite3_prepare_v2(data_DB->db, data_DB->command.c_str(), -1, &pStatement, NULL); 1091 1104 if(rc == SQLITE_OK){ 1092 1105 if(sqlite3_step(pStatement) == SQLITE_ROW) 1093 1106 data = (const char *) sqlite3_column_text(pStatement, 1); 1094 1107 else { 1095 WARNING("7 data_DB:: Data not yet in DB.: %s\n", _data_DB->command.c_str());1108 WARNING("7 data_DB:: Data not yet in DB.: %s\n", data_DB->command.c_str()); 1096 1109 rc = 31337; 1097 1110 } 1098 1111 } else { 1099 1112 WARNING("data_DB:: SQL statement error. rc = %i\n%s\n", \ 1100 rc, _data_DB->command.c_str());1113 rc, data_DB->command.c_str()); 1101 1114 } 1102 1115 … … 1139 1152 if(!miss[activeMission].services[k].output[t].empty()) { 1140 1153 input = miss[activeMission].services[j - 1].output[t]; 1141 _data_DB->command="SELECT ";1142 _data_DB->command.append(_data_DB->tablename);1143 _data_DB->command.append(".* from ");1144 _data_DB->command.append(_data_DB->tablename);1145 _data_DB->command.append(" where Tag=='");1146 _data_DB->command.append(input);1147 _data_DB->command.append("';");1154 data_DB->command="SELECT "; 1155 data_DB->command.append(data_DB->tablename); 1156 data_DB->command.append(".* from "); 1157 data_DB->command.append(data_DB->tablename); 1158 data_DB->command.append(" where Tag=='"); 1159 data_DB->command.append(input); 1160 data_DB->command.append("';"); 1148 1161 1149 1162 sqlite3_stmt *pStatement; 1150 rc = sqlite3_prepare_v2( _data_DB->db, _data_DB->command.c_str(), -1, &pStatement, NULL);1163 rc = sqlite3_prepare_v2(data_DB->db, data_DB->command.c_str(), -1, &pStatement, NULL); 1151 1164 if(rc == SQLITE_OK) { 1152 1165 if(sqlite3_step(pStatement) == SQLITE_ROW) … … 1158 1171 } else { 1159 1172 WARNING("data_DB:: Error executing SQL statement. rc = %i\n%s\n", \ 1160 rc, _data_DB->command.c_str());1173 rc, data_DB->command.c_str()); 1161 1174 } 1162 1175 … … 1199 1212 if(!miss[activeMission].services[i].output[t].empty()) { 1200 1213 input = miss[activeMission].services[k - 1].output[t]; 1201 _data_DB->command="SELECT ";1202 _data_DB->command.append(_data_DB->tablename);1203 _data_DB->command.append(".* from ");1204 _data_DB->command.append(_data_DB->tablename);1205 _data_DB->command.append(" where Tag=='");1206 _data_DB->command.append(input);1207 _data_DB->command.append("';");1214 data_DB->command="SELECT "; 1215 data_DB->command.append(data_DB->tablename); 1216 data_DB->command.append(".* from "); 1217 data_DB->command.append(data_DB->tablename); 1218 data_DB->command.append(" where Tag=='"); 1219 data_DB->command.append(input); 1220 data_DB->command.append("';"); 1208 1221 1209 1222 sqlite3_stmt *pStatement; 1210 rc = sqlite3_prepare_v2( _data_DB->db, _data_DB->command.c_str(), -1, &pStatement, NULL);1223 rc = sqlite3_prepare_v2(data_DB->db, data_DB->command.c_str(), -1, &pStatement, NULL); 1211 1224 if(rc == SQLITE_OK) { 1212 1225 if(sqlite3_step(pStatement) == SQLITE_ROW) … … 1218 1231 } else { 1219 1232 WARNING("data_DB:: Error executing SQL statement. rc = %i\n%s\n", \ 1220 rc, _data_DB->command.c_str());1233 rc, data_DB->command.c_str()); 1221 1234 } 1222 1235 … … 1244 1257 data.clear(); 1245 1258 1246 if(!shell Found) {1259 if(!shellUsed) { 1247 1260 int k = 0; 1248 1261 while(k < 10 && !miss[activeMission].input[k].empty()) { … … 1272 1285 ServiceManagementLayer::ListServices() 1273 1286 { 1274 _services_DB->command="select ";1275 _services_DB->command.append(_services_DB->tablename);1276 _services_DB->command.append(".* from ");1277 _services_DB->command.append(_services_DB->tablename);1278 _services_DB->command.append(";");1287 services_DB->command="select "; 1288 services_DB->command.append(services_DB->tablename); 1289 services_DB->command.append(".* from "); 1290 services_DB->command.append(services_DB->tablename); 1291 services_DB->command.append(";"); 1279 1292 1280 1293 // Execute print (select all) command 1281 1294 char *errorMsg; 1282 int32_t rc = sqlite3_exec( _services_DB->db, _services_DB->command.c_str(), callback, 0, &errorMsg);1295 int32_t rc = sqlite3_exec(services_DB->db, services_DB->command.c_str(), callback, 0, &errorMsg); 1283 1296 if((rc != SQLITE_OK) && (rc != 101)) 1284 1297 WARNING("SQL error: %s\n", errorMsg); 1285 1298 1286 LOG("database %s, table %s:\n", _services_DB->filename.c_str(), _services_DB->tablename.c_str());1299 LOG("database %s, table %s:\n", services_DB->filename.c_str(), services_DB->tablename.c_str()); 1287 1300 } 1288 1301 … … 1525 1538 memset(buffer, 0, 256); 1526 1539 ReadMessage(CE_List[ID].FD, buffer); 1527 _services_DB->command="DELETE FROM ";1528 _services_DB->command.append(_services_DB->tablename);1529 _services_DB->command.append(" WHERE ID_Num IN (SELECT ");1540 services_DB->command="DELETE FROM "; 1541 services_DB->command.append(services_DB->tablename); 1542 services_DB->command.append(" WHERE ID_Num IN (SELECT "); 1530 1543 1531 1544 char tmp[3]; 1532 1545 memset(tmp,0,3); 1533 1546 sprintf(tmp, "%d", ID); 1534 _services_DB->command.append(tmp);1535 _services_DB->command.append(" FROM ");1536 _services_DB->command.append(_services_DB->tablename);1537 _services_DB->command.append(" WHERE Service_Name");1538 _services_DB->command.append("=='");1539 _services_DB->command.append(buffer);1540 _services_DB->command.append("');");1547 services_DB->command.append(tmp); 1548 services_DB->command.append(" FROM "); 1549 services_DB->command.append(services_DB->tablename); 1550 services_DB->command.append(" WHERE Service_Name"); 1551 services_DB->command.append("=='"); 1552 services_DB->command.append(buffer); 1553 services_DB->command.append("');"); 1541 1554 1542 1555 char *errorMsg; 1543 int32_t rc = sqlite3_exec( _services_DB->db, _services_DB->command.c_str(), callback, 0, &errorMsg);1556 int32_t rc = sqlite3_exec(services_DB->db, services_DB->command.c_str(), callback, 0, &errorMsg); 1544 1557 if((rc != SQLITE_OK) && (rc != 101)) 1545 1558 WARNING("SQL error: %s\n", errorMsg); … … 1572 1585 1573 1586 //Deregister the services 1574 _services_DB->command="DELETE FROM ";1575 _services_DB->command.append(_services_DB->tablename);1576 _services_DB->command.append(" WHERE ");1577 _services_DB->command.append("ID_Num");1578 _services_DB->command.append("==");1587 services_DB->command="DELETE FROM "; 1588 services_DB->command.append(services_DB->tablename); 1589 services_DB->command.append(" WHERE "); 1590 services_DB->command.append("ID_Num"); 1591 services_DB->command.append("=="); 1579 1592 1580 1593 char tmp[3]; 1581 1594 memset(tmp,0,3); 1582 1595 sprintf(tmp, "%d", ID); 1583 _services_DB->command.append(tmp);1584 _services_DB->command.append(";");1596 services_DB->command.append(tmp); 1597 services_DB->command.append(";"); 1585 1598 1586 1599 char *errorMsg; 1587 int32_t rc = sqlite3_exec( _services_DB->db, _services_DB->command.c_str(), callback, 0, &errorMsg);1600 int32_t rc = sqlite3_exec(services_DB->db, services_DB->command.c_str(), callback, 0, &errorMsg); 1588 1601 if((rc != SQLITE_OK) && (rc != 101)) 1589 1602 WARNING("SQL error: %s\n", errorMsg);