Changeset 234 in flair-src for trunk/lib/FlairCore/src/FrameworkManager_impl.cpp
- Timestamp:
- Apr 10, 2018, 5:05:27 PM (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/lib/FlairCore/src/FrameworkManager_impl.cpp
r214 r234 193 193 Printf("Error udt::close %s", UDT::getlasterror().getErrorMessage()); 194 194 195 status = UDT::close(file_sock);196 if (status != 0)197 Printf("Error udt::close %s", UDT::getlasterror().getErrorMessage());198 199 195 SleepMS(200); // a revoir, sinon UDT::cleanup bloque en RT 200 196 UDT::cleanup(); … … 210 206 return; 211 207 } 208 this->address=address; 209 this->port=port; 212 210 213 211 UDT::startup(1024*256,1024*256,1024*256); … … 216 214 // socket file_socket, doit être créé en premier, cf station sol 217 215 Printf("Connecting to %s:%i\n", address.c_str(), port); 218 file_sock = GetSocket(address, port);219 com_sock = GetSocket( address, port);216 //file_sock = GetSocket(address, port); 217 com_sock = GetSocket(); 220 218 221 219 // receive buffer allocation … … 226 224 227 225 com = new ui_com(this, com_sock); 228 229 // file managment230 bool blocking = true;231 UDT::setsockopt(file_sock, 0, UDT_SNDSYN, &blocking, sizeof(bool));232 UDT::setsockopt(file_sock, 0, UDT_RCVSYN, &blocking, sizeof(bool));233 234 int timeout = 100; // ms235 UDT::setsockopt(com_sock, 0, UDT_RCVTIMEO, &timeout, sizeof(int));236 226 237 227 Start(); … … 292 282 while (!ToBeStopped()) { 293 283 ssize_t bytesRead; 294 295 284 bytesRead = com->Receive(rcv_buf, rcv_buf_size); 296 285 com->CheckConnection(); 286 //printf("%i\n",bytesRead); 297 287 if (bytesRead == (ssize_t)rcv_buf_size) 298 288 Err("FrameworkManager max receive size, augmenter le buffer size!\n"); 299 289 300 290 if (bytesRead > 0) { 301 // printf("recu %ld, trame %x\n",bytesRead,(uint8_t)rcv_buf[0]);302 //rcv_buf[bytesRead-1]=0;//pour affichage303 //printf("%s\n",rcv_buf);291 //printf("recu %ld, trame %x %lld\n",bytesRead,(uint8_t)rcv_buf[0],GetTime()/(1000000)); 292 //rcv_buf[bytesRead-1]=0;//pour affichage 293 //printf("%s\n",rcv_buf); 304 294 305 295 switch ((uint8_t)rcv_buf[0]) { … … 376 366 } 377 367 378 void FrameworkManager_impl::SendFile( string path, string name) {368 void FrameworkManager_impl::SendFile(UDTSOCKET socket,string path, string name) { 379 369 char *buf, *more_buf; 380 370 int size; … … 411 401 Printf("sending %s, size: %i\n", filename.c_str(), size); 412 402 // send file information 413 UDT::sendmsg( file_sock, buf, sizeof(uint8_t) + sizeof(int) + name.size(), -1,true);403 UDT::sendmsg(socket, buf, sizeof(uint8_t) + sizeof(int) + name.size(), -1,true); 414 404 415 405 more_buf = (char *)realloc((void *)buf, size); … … 424 414 pbuf->sgetn(buf, size); 425 415 // send the file 426 nb_write = UDT::sendmsg( file_sock, buf, size, -1, true);416 nb_write = UDT::sendmsg(socket, buf, size, -1, true); 427 417 428 418 if (nb_write < 0) { … … 436 426 } 437 427 438 void FrameworkManager_impl::FinishSending( ) {428 void FrameworkManager_impl::FinishSending(UDTSOCKET socket) { 439 429 char rm_cmd[256]; 440 430 441 431 // send orignal xml 442 SendFile( log_path, "setup.xml");432 SendFile(socket,log_path, "setup.xml"); 443 433 sprintf(rm_cmd, "rm %s/setup.xml", log_path.c_str()); 444 434 system(rm_cmd); … … 447 437 for (size_t i = 0; i < xml_changes.size(); i++) { 448 438 // Printf("%s\n",xml_changes.at(i).c_str()); 449 SendFile( log_path, xml_changes.at(i).c_str());439 SendFile(socket,log_path, xml_changes.at(i).c_str()); 450 440 sprintf(rm_cmd, "rm %s/%s", log_path.c_str(), xml_changes.at(i).c_str()); 451 441 system(rm_cmd); … … 454 444 455 445 // end notify 456 char buf = END ;457 int nb_write = UDT::sendmsg( file_sock, &buf, 1, -1, true);446 char buf = END_SENDING_FILES; 447 int nb_write = UDT::sendmsg(socket, &buf, 1, -1, true); 458 448 459 449 if (nb_write < 0) { … … 464 454 465 455 //wait end ACK 466 int nb_read = UDT::recvmsg( file_sock,&buf,1);456 int nb_read = UDT::recvmsg(socket,&buf,1); 467 457 if(nb_read<0) { 468 458 Err("UDT::recvmsg error (%s)\n",UDT::getlasterror().getErrorMessage()); … … 472 462 } 473 463 474 UDTSOCKET FrameworkManager_impl::GetSocket( string address, uint16_t port) {464 UDTSOCKET FrameworkManager_impl::GetSocket(void) { 475 465 while (1) { 476 466 UDTSOCKET new_fd; … … 854 844 caller->gcs_watchdog->Join(); 855 845 } 846 //create a socket for files 847 UDTSOCKET file_sock = caller->GetSocket(); 848 char data=START_SENDING_FILES; 849 ssize_t nb_write = UDT::sendmsg(file_sock, &data, 1, -1, true); 850 if (nb_write < 0) { 851 caller->Err("UDT::sendmsg error (%s)\n", UDT::getlasterror().getErrorMessage()); 852 if (UDT::getlasterror().getErrorCode() == CUDTException::ECONNLOST || 853 UDT::getlasterror().getErrorCode() == CUDTException::EINVSOCK) { 854 } 855 } else if (nb_write != 1) { 856 caller->Err("%s, code %i (%ld/%ld)\n", UDT::getlasterror().getErrorMessage(), 857 UDT::getlasterror().getErrorCode(), nb_write, 1); 858 } 856 859 for (size_t i = 0; i < logs.size(); i++) { 857 860 if (logs.at(i).dbtFile != NULL) { … … 859 862 860 863 string filename = caller->FileName(logs.at(i).device) + ".dbt"; 861 caller->SendFile( caller->log_path, filename);864 caller->SendFile(file_sock,caller->log_path, filename); 862 865 863 866 fstream txt_file; … … 870 873 txt_file.close(); 871 874 872 caller->SendFile( caller->log_path, filename);875 caller->SendFile(file_sock,caller->log_path, filename); 873 876 } 874 877 } 875 878 // a revoir celui ci est le xml enregistré et pas forcement l'actuel 876 879 // if(caller->xml_file!="") caller->SendFile(caller->xml_file); 877 caller->FinishSending(); 880 caller->FinishSending(file_sock); 881 882 int status = UDT::close(file_sock); 883 if (status != 0) 884 caller->Err("Error udt::close %s", UDT::getlasterror().getErrorMessage()); 878 885 879 886 logs.clear();
Note:
See TracChangeset
for help on using the changeset viewer.