| 71 | int GetXMLFromServer(int sockfd, Utility uList[], Parameter pList[], |
| 72 | Observable oList[], CE_Info *ce_info) |
| 73 | { |
| 74 | char buffer[256]; |
| 75 | int i,j; |
| 76 | |
| 77 | // read unitilities |
| 78 | // numUtilities |
| 79 | bzero(buffer,256); |
| 80 | ReadMessage(sockfd,buffer); |
| 81 | ce_info->numUtilities = atoi(buffer); |
| 82 | printf("number of utilities: %d\n", ce_info->numUtilities); |
| 83 | |
| 84 | for (i = 0; i < ce_info->numUtilities; i++){ |
| 85 | bzero(buffer,256); |
| 86 | ReadMessage(sockfd,buffer); |
| 87 | printf("Name: %s\n", buffer); |
| 88 | strcpy(uList[i].name, buffer); |
| 89 | |
| 90 | bzero(buffer,256); |
| 91 | ReadMessage(sockfd,buffer); |
| 92 | printf("Units: %s\n", buffer); |
| 93 | strcpy(uList[i].units, buffer); |
| 94 | |
| 95 | bzero(buffer,256); |
| 96 | ReadMessage(sockfd,buffer); |
| 97 | printf("Goal: %s\n", buffer); |
| 98 | strcpy(uList[i].goal, buffer); |
| 99 | |
| 100 | bzero(buffer,256); |
| 101 | ReadMessage(sockfd,buffer); |
| 102 | printf("Target: %s\n", buffer); |
| 103 | uList[i].target = atof(buffer); |
| 104 | } |
| 105 | |
| 106 | // read parameters |
| 107 | // numParameters |
| 108 | bzero(buffer,256); |
| 109 | ReadMessage(sockfd,buffer); |
| 110 | ce_info->numParameters = atoi(buffer); |
| 111 | printf("number of parameters: %d\n", ce_info->numParameters); |
| 112 | |
| 113 | for (i = 0; i < ce_info->numParameters; i++){ |
| 114 | bzero(buffer,256); |
| 115 | ReadMessage(sockfd,buffer); |
| 116 | printf("Name: %s\n", buffer); |
| 117 | strcpy(pList[i].name, buffer); |
| 118 | |
| 119 | bzero(buffer,256); |
| 120 | ReadMessage(sockfd,buffer); |
| 121 | printf("Units: %s\n", buffer); |
| 122 | strcpy(pList[i].units, buffer); |
| 123 | |
| 124 | bzero(buffer,256); |
| 125 | ReadMessage(sockfd,buffer); |
| 126 | printf("Min: %s\n", buffer); |
| 127 | pList[i].min = atof(buffer); |
| 128 | |
| 129 | bzero(buffer,256); |
| 130 | ReadMessage(sockfd,buffer); |
| 131 | printf("Max: %s\n", buffer); |
| 132 | pList[i].max = atof(buffer); |
| 133 | |
| 134 | bzero(buffer,256); |
| 135 | ReadMessage(sockfd,buffer); |
| 136 | printf("Step: %s\n", buffer); |
| 137 | pList[i].step = atof(buffer); |
| 138 | |
| 139 | // numAffects |
| 140 | bzero(buffer,256); |
| 141 | ReadMessage(sockfd,buffer); |
| 142 | pList[i].numAffects = atoi(buffer); |
| 143 | printf("number of affects: %d\n", pList[i].numAffects); |
| 144 | |
| 145 | for (j = 0; j < pList[i].numAffects; j++){ |
| 146 | bzero(buffer,256); |
| 147 | ReadMessage(sockfd,buffer); |
| 148 | printf("Utility name: %s\n", buffer); |
| 149 | strcpy(pList[i].affection_list[j].u.name, buffer); |
| 150 | |
| 151 | bzero(buffer,256); |
| 152 | ReadMessage(sockfd,buffer); |
| 153 | printf("Relation: %s\n", buffer); |
| 154 | strcpy(pList[i].affection_list[j].relation, buffer); |
| 155 | } |
| 156 | |
| 157 | } |
| 158 | |
| 159 | // read obervables |
| 160 | // numParameters |
| 161 | bzero(buffer,256); |
| 162 | ReadMessage(sockfd,buffer); |
| 163 | ce_info->numObservables = atoi(buffer); |
| 164 | printf("number of observables: %d\n", ce_info->numObservables); |
| 165 | |
| 166 | for (i = 0; i < ce_info->numObservables; i++){ |
| 167 | bzero(buffer,256); |
| 168 | ReadMessage(sockfd,buffer); |
| 169 | printf("Name: %s\n", buffer); |
| 170 | strcpy(pList[i].name, buffer); |
| 171 | |
| 172 | // numAffects |
| 173 | bzero(buffer,256); |
| 174 | ReadMessage(sockfd,buffer); |
| 175 | oList[i].numAffects = atoi(buffer); |
| 176 | printf("number of affects: %d\n", oList[i].numAffects); |
| 177 | |
| 178 | for (j = 0; j < oList[i].numAffects; j++){ |
| 179 | bzero(buffer,256); |
| 180 | ReadMessage(sockfd,buffer); |
| 181 | printf("Utility name: %s\n", buffer); |
| 182 | strcpy(oList[i].affection_list[j].u.name, buffer); |
| 183 | |
| 184 | bzero(buffer,256); |
| 185 | ReadMessage(sockfd,buffer); |
| 186 | printf("Relation: %s\n", buffer); |
| 187 | strcpy(oList[i].affection_list[j].relation, buffer); |
| 188 | } |
| 189 | } |
| 190 | |
| 191 | printf("xml reception done\n"); |
| 192 | |
| 193 | return 0; |
| 194 | } |
| 195 | |
| 196 | void print_current_config(Utility * uList[], Parameter * pList[], |
| 197 | Observable * oList[], CE_Info * ce_info) |
| 198 | { |
| 199 | int i = 0; |
| 200 | int j = 0; |
| 201 | |
| 202 | // utilities |
| 203 | for(i = 0; i < ce_info->numUtilities ; i++) { |
| 204 | cout << "Utility: " << uList[i]->name << endl; |
| 205 | cout << " Units: " << uList[i]->units << endl; |
| 206 | cout << " Goal: " << uList[i]->goal << endl; |
| 207 | cout << " Target: " << uList[i]->target << endl; |
| 208 | } |
| 209 | |
| 210 | // parameters |
| 211 | for(i = 0; i < ce_info->numParameters; i++) { |
| 212 | cout << "Parameter: " << pList[i]->name << endl; |
| 213 | cout << " Units: " << pList[i]->units << endl; |
| 214 | cout << " Min: " << pList[i]->min << endl; |
| 215 | cout << " Max: " << pList[i]->max << endl; |
| 216 | cout << " Step: " << pList[i]->step << endl; |
| 217 | for(j = 0; j < pList[i]->numAffects; j++) { |
| 218 | cout << " Affect: " << pList[i]->affection_list[j].u.name << " -> " << pList[i]->affection_list[j].relation << endl; |
| 219 | } |
| 220 | } |
| 221 | |
| 222 | // observables |
| 223 | for(i = 0; i < ce_info->numObservables; i++) { |
| 224 | cout << "Observable: " << oList[i]->name << endl; |
| 225 | for(j = 0; j < oList[i]->numAffects; j++) { |
| 226 | cout << " Affect: " << oList[i]->affection_list[j].u.name << " -> " << oList[i]->affection_list[j].relation << endl; |
| 227 | } |
| 228 | } |
| 229 | } |
| 230 | |
| 231 | |
104 | | int i, j; |
105 | | Utility uList[10]; |
106 | | Parameter pList[10]; |
107 | | Observable oList[10]; |
108 | | CE_Info ce_info; |
109 | | |
110 | | // read unitilities |
111 | | // numUtilities |
112 | | bzero(buffer,256); |
113 | | ReadMessage(sockfd,buffer); |
114 | | ce_info.numUtilities = atoi(buffer); |
115 | | printf("number of utilities: %d\n", ce_info.numUtilities); |
116 | | |
117 | | for (i = 0; i < ce_info.numUtilities; i++){ |
118 | | bzero(buffer,256); |
119 | | ReadMessage(sockfd,buffer); |
120 | | printf("Name: %s\n", buffer); |
121 | | strcpy(uList[i].name, buffer); |
122 | | |
123 | | bzero(buffer,256); |
124 | | ReadMessage(sockfd,buffer); |
125 | | printf("Units: %s\n", buffer); |
126 | | strcpy(uList[i].units, buffer); |
127 | | |
128 | | bzero(buffer,256); |
129 | | ReadMessage(sockfd,buffer); |
130 | | printf("Goal: %s\n", buffer); |
131 | | strcpy(uList[i].goal, buffer); |
132 | | |
133 | | bzero(buffer,256); |
134 | | ReadMessage(sockfd,buffer); |
135 | | printf("Target: %s\n", buffer); |
136 | | uList[i].target = atof(buffer); |
137 | | } |
138 | | |
139 | | // read parameters |
140 | | // numParameters |
141 | | bzero(buffer,256); |
142 | | ReadMessage(sockfd,buffer); |
143 | | ce_info.numParameters = atoi(buffer); |
144 | | printf("number of parameters: %d\n", ce_info.numParameters); |
145 | | |
146 | | for (i = 0; i < ce_info.numParameters; i++){ |
147 | | bzero(buffer,256); |
148 | | ReadMessage(sockfd,buffer); |
149 | | printf("Name: %s\n", buffer); |
150 | | strcpy(pList[i].name, buffer); |
151 | | |
152 | | bzero(buffer,256); |
153 | | ReadMessage(sockfd,buffer); |
154 | | printf("Units: %s\n", buffer); |
155 | | strcpy(pList[i].units, buffer); |
156 | | |
157 | | bzero(buffer,256); |
158 | | ReadMessage(sockfd,buffer); |
159 | | printf("Min: %s\n", buffer); |
160 | | pList[i].min = atof(buffer); |
161 | | |
162 | | bzero(buffer,256); |
163 | | ReadMessage(sockfd,buffer); |
164 | | printf("Max: %s\n", buffer); |
165 | | pList[i].max = atof(buffer); |
166 | | |
167 | | bzero(buffer,256); |
168 | | ReadMessage(sockfd,buffer); |
169 | | printf("Step: %s\n", buffer); |
170 | | pList[i].step = atof(buffer); |
171 | | |
172 | | // numAffects |
173 | | bzero(buffer,256); |
174 | | ReadMessage(sockfd,buffer); |
175 | | pList[i].numAffects = atoi(buffer); |
176 | | printf("number of affects: %d\n", pList[i].numAffects); |
177 | | |
178 | | for (j = 0; j < pList[i].numAffects; j++){ |
179 | | bzero(buffer,256); |
180 | | ReadMessage(sockfd,buffer); |
181 | | printf("Utility name: %s\n", buffer); |
182 | | strcpy(pList[i].affection_list[j].u.name, buffer); |
183 | | |
184 | | bzero(buffer,256); |
185 | | ReadMessage(sockfd,buffer); |
186 | | printf("Relation: %s\n", buffer); |
187 | | strcpy(pList[i].affection_list[j].relation, buffer); |
188 | | } |
189 | | |
190 | | } |
191 | | |
192 | | // read obervables |
193 | | // numParameters |
194 | | bzero(buffer,256); |
195 | | ReadMessage(sockfd,buffer); |
196 | | ce_info.numObservables = atoi(buffer); |
197 | | printf("number of observables: %d\n", ce_info.numObservables); |
198 | | |
199 | | for (i = 0; i < ce_info.numObservables; i++){ |
200 | | bzero(buffer,256); |
201 | | ReadMessage(sockfd,buffer); |
202 | | printf("Name: %s\n", buffer); |
203 | | strcpy(pList[i].name, buffer); |
204 | | |
205 | | // numAffects |
206 | | bzero(buffer,256); |
207 | | ReadMessage(sockfd,buffer); |
208 | | oList[i].numAffects = atoi(buffer); |
209 | | printf("number of affects: %d\n", oList[i].numAffects); |
210 | | |
211 | | for (j = 0; j < oList[i].numAffects; j++){ |
212 | | bzero(buffer,256); |
213 | | ReadMessage(sockfd,buffer); |
214 | | printf("Utility name: %s\n", buffer); |
215 | | strcpy(oList[i].affection_list[j].u.name, buffer); |
216 | | |
217 | | bzero(buffer,256); |
218 | | ReadMessage(sockfd,buffer); |
219 | | printf("Relation: %s\n", buffer); |
220 | | strcpy(oList[i].affection_list[j].relation, buffer); |
221 | | } |
222 | | } |
223 | | |
224 | | |
225 | | printf("xml transmission done\n"); |
| 272 | // get xml info from server |
| 273 | GetXMLFromServer(sockfd, uList, pList, oList, &ce_info); |
| 274 | |
| 275 | printf("utility:\n name: %s, units: %s, goal: %s, target: %f\n", |
| 276 | uList[0].name, uList[0].units, uList[0].goal, uList[0].target); |
| 277 | |
| 278 | //print_current_config(&uList, &pList, &oList, &ce_info); |