Commit e009fab11c973a4c5e32cf73a9e94a9e1815ecb6
1 parent
bac43399
Exists in
devel
fix socket connection issues
Showing
3 changed files
with
34 additions
and
36 deletions
Show diff stats
extrator/src/extratorTXT.cpp
| @@ -10,6 +10,7 @@ | @@ -10,6 +10,7 @@ | ||
| 10 | **************************************************************************/ | 10 | **************************************************************************/ |
| 11 | 11 | ||
| 12 | #include "extratorTXT.h" | 12 | #include "extratorTXT.h" |
| 13 | +#include <iostream> | ||
| 13 | 14 | ||
| 14 | ExtratorTXT::ExtratorTXT(){ | 15 | ExtratorTXT::ExtratorTXT(){ |
| 15 | listeners = new list<ListenerTXT*>(); | 16 | listeners = new list<ListenerTXT*>(); |
| @@ -61,15 +62,14 @@ void ExtratorTXT::setFilePath(char* path){ | @@ -61,15 +62,14 @@ void ExtratorTXT::setFilePath(char* path){ | ||
| 61 | } | 62 | } |
| 62 | 63 | ||
| 63 | void ExtratorTXT::initialize(){ | 64 | void ExtratorTXT::initialize(){ |
| 64 | - file = new lavidlib::File(filePath); | ||
| 65 | - try{ | ||
| 66 | - file_io = new lavidlib::FileIO(file->getPath(), FileIO::MODE_READ); | ||
| 67 | - bff_reader = new BufferedReader(file_io); | ||
| 68 | - }catch(Exception &ex){ | 65 | + ifs_.open(this->filePath, std::ifstream::in); |
| 66 | + | ||
| 67 | + if(!(ifs_.is_open() && ifs_.good())) { | ||
| 69 | finish = true; | 68 | finish = true; |
| 70 | Logging::instance()->writeLog("extratorTXT.cpp <Error>: Arquivo de texto não encontrado."); | 69 | Logging::instance()->writeLog("extratorTXT.cpp <Error>: Arquivo de texto não encontrado."); |
| 71 | throw ExtratorException("Falha ao abrir o arquivo de texto! Verifique se o mesmo existe."); | 70 | throw ExtratorException("Falha ao abrir o arquivo de texto! Verifique se o mesmo existe."); |
| 72 | } | 71 | } |
| 72 | + | ||
| 73 | this->Start(); | 73 | this->Start(); |
| 74 | } | 74 | } |
| 75 | 75 | ||
| @@ -79,26 +79,19 @@ bool ExtratorTXT::isFinished(){ | @@ -79,26 +79,19 @@ bool ExtratorTXT::isFinished(){ | ||
| 79 | 79 | ||
| 80 | void ExtratorTXT::Run(){ | 80 | void ExtratorTXT::Run(){ |
| 81 | PRINTL(util::_INFO, "Extraindo Texto...\n"); | 81 | PRINTL(util::_INFO, "Extraindo Texto...\n"); |
| 82 | - int line_index = 0; | ||
| 83 | - bool hasNext = true; | ||
| 84 | - string line; | ||
| 85 | - | ||
| 86 | - while (hasNext) { | ||
| 87 | - try{ | ||
| 88 | - line = bff_reader->readLine(); | ||
| 89 | - if (line.length() > 0){ | ||
| 90 | - notifyListeners((unsigned char*) line.c_str()); | 82 | + |
| 83 | + int line_index = 0; | ||
| 84 | + string current_line; | ||
| 85 | + | ||
| 86 | + while (ifs_.good()) { | ||
| 87 | + getline(ifs_, current_line, '\n'); | ||
| 88 | + | ||
| 89 | + if (current_line.length() != 0) { | ||
| 90 | + notifyListeners((unsigned char*) current_line.c_str()); | ||
| 91 | line_index++; | 91 | line_index++; |
| 92 | } | 92 | } |
| 93 | - }catch (EOFException &ex){ | ||
| 94 | - if(line_index == 0) | ||
| 95 | - notifyListeners((unsigned char*)"ARQUIVO_INVALIDO"); | ||
| 96 | - hasNext = false; | ||
| 97 | - }catch (...){ | ||
| 98 | - Logging::instance()->writeLog("extratorTXT.cpp <Error>: Erro durante a leitura do arquivo de texto."); | ||
| 99 | - throw ExtratorException("Falha desconhecida na leitura do arquivo. Tente novamente."); | ||
| 100 | - } | ||
| 101 | } | 93 | } |
| 94 | + | ||
| 102 | finish = true; | 95 | finish = true; |
| 103 | notifyEndExtraction(line_index); | 96 | notifyEndExtraction(line_index); |
| 104 | } | 97 | } |
extrator/src/include/extratorTXT.h
| @@ -14,6 +14,8 @@ | @@ -14,6 +14,8 @@ | ||
| 14 | #include "listenerTXT.h" | 14 | #include "listenerTXT.h" |
| 15 | #include "extratorException.h" | 15 | #include "extratorException.h" |
| 16 | 16 | ||
| 17 | +#include <fstream> | ||
| 18 | + | ||
| 17 | using namespace jthread; | 19 | using namespace jthread; |
| 18 | using namespace std; | 20 | using namespace std; |
| 19 | 21 | ||
| @@ -73,8 +75,10 @@ public: | @@ -73,8 +75,10 @@ public: | ||
| 73 | void Run(); | 75 | void Run(); |
| 74 | 76 | ||
| 75 | private: | 77 | private: |
| 76 | - list<ListenerTXT*> *listeners; | ||
| 77 | - void encodingfiletoUTF8(); | 78 | + void encodingfiletoUTF8(); |
| 79 | + | ||
| 80 | + list<ListenerTXT*> *listeners; | ||
| 81 | + ifstream ifs_; | ||
| 78 | }; | 82 | }; |
| 79 | 83 | ||
| 80 | #endif /* EXTRATORTXT_H */ | 84 | #endif /* EXTRATORTXT_H */ |
renderer/src/renderer.cpp
| 1 | #include "renderer.h" | 1 | #include "renderer.h" |
| 2 | +#include <iostream> | ||
| 2 | 3 | ||
| 3 | Renderer::Renderer(char* path_Contents, char* id) { | 4 | Renderer::Renderer(char* path_Contents, char* id) { |
| 4 | this->pathOutVideo = path_Contents; | 5 | this->pathOutVideo = path_Contents; |
| @@ -94,33 +95,32 @@ void Renderer::exportGlosa() { | @@ -94,33 +95,32 @@ void Renderer::exportGlosa() { | ||
| 94 | if(glosaQueue.empty()) | 95 | if(glosaQueue.empty()) |
| 95 | throw lavidlib::RuntimeException("Fila de glosas vazia!"); | 96 | throw lavidlib::RuntimeException("Fila de glosas vazia!"); |
| 96 | 97 | ||
| 97 | - int glosaSize; | ||
| 98 | char* glosaBff; | 98 | char* glosaBff; |
| 99 | 99 | ||
| 100 | string glosaCpy = glosaQueue.front(); //Pega quem estiver na frente da fila | 100 | string glosaCpy = glosaQueue.front(); //Pega quem estiver na frente da fila |
| 101 | - glosaSize = strlen(glosaCpy.c_str())+1; | ||
| 102 | - glosaBff = new char[glosaSize]; | 101 | + int size = glosaCpy.length() + 1; |
| 102 | + glosaBff = new char[size]; | ||
| 103 | strcpy(glosaBff, glosaCpy.c_str()); | 103 | strcpy(glosaBff, glosaCpy.c_str()); |
| 104 | - | ||
| 105 | try { | 104 | try { |
| 106 | - cSocket->write(glosaBff, glosaSize); //Envia a glosa formatada p/ o player | 105 | + cSocket->write(glosaBff, size); //Envia a glosa formatada p/ o player |
| 106 | + usleep(1500); | ||
| 107 | }catch(lavidlib::IOException &ex){ | 107 | }catch(lavidlib::IOException &ex){ |
| 108 | - throw lavidlib::RuntimeException(ex.getMessage().c_str()); | 108 | + throw lavidlib::RuntimeException("Erro ao enviar glosa"); |
| 109 | } | 109 | } |
| 110 | 110 | ||
| 111 | - char* received = new char[3]; //Mensagem de confirmação de recebimento da glosa: "OK[3]; //Mensagem de confirmação de recebimento da glosa: "OK\0"" | 111 | + static char received[3]; //Mensagem de confirmação de recebimento da glosa: "OK[3]; //Mensagem de confirmação de recebimento da glosa: "OK\0"" |
| 112 | do { | 112 | do { |
| 113 | try { | 113 | try { |
| 114 | - cSocket->read(received, 3); //Aguarda a confirmação | ||
| 115 | - }catch(lavidlib::IOException &ex){ | ||
| 116 | - throw lavidlib::RuntimeException(ex.getMessage().c_str()); | 114 | + cSocket->receive(received, 3); //Aguarda a confirmação |
| 115 | + }catch(lavidlib::Exception &ex){ | ||
| 116 | + throw lavidlib::RuntimeException("Não foram recebidas respostas do player"); | ||
| 117 | } | 117 | } |
| 118 | }while(strcmp(received, OK_FLAG) != 0); //Verifica se é a confirmação correta | 118 | }while(strcmp(received, OK_FLAG) != 0); //Verifica se é a confirmação correta |
| 119 | 119 | ||
| 120 | glosaQueue.pop(); //Se o envio foi bem sucedido, remove a glosa da fila | 120 | glosaQueue.pop(); //Se o envio foi bem sucedido, remove a glosa da fila |
| 121 | 121 | ||
| 122 | delete [] glosaBff; | 122 | delete [] glosaBff; |
| 123 | - delete [] received; | 123 | + // delete [] received; |
| 124 | } | 124 | } |
| 125 | 125 | ||
| 126 | void Renderer::waitScreenShots() { | 126 | void Renderer::waitScreenShots() { |
| @@ -154,10 +154,11 @@ void Renderer::initialize() { | @@ -154,10 +154,11 @@ void Renderer::initialize() { | ||
| 154 | executeServerScript(); | 154 | executeServerScript(); |
| 155 | try{ | 155 | try{ |
| 156 | connectToUnityPlayer(); | 156 | connectToUnityPlayer(); |
| 157 | + this->Start(); | ||
| 157 | }catch(lavidlib::RuntimeException &ex){ | 158 | }catch(lavidlib::RuntimeException &ex){ |
| 158 | throw lavidlib::RuntimeException(ex.getMessage().c_str()); | 159 | throw lavidlib::RuntimeException(ex.getMessage().c_str()); |
| 159 | } | 160 | } |
| 160 | - this->Start(); | 161 | + |
| 161 | } | 162 | } |
| 162 | 163 | ||
| 163 | void Renderer::Run() { | 164 | void Renderer::Run() { |