Commit 1129bcc2ff4844b4e0abe14fab9cc9e19fb12284
1 parent
e04353d6
Exists in
master
Remove a dependência da lavidlib e refaz a implementação do main.cpp para teste da libCorePlugin
Showing
8 changed files
with
87 additions
and
124 deletions
Show diff stats
.gitignore
Makefile
Makefile.build
... | ... | @@ -16,10 +16,10 @@ shared: |
16 | 16 | |
17 | 17 | clean: |
18 | 18 | @echo -n Cleaning... |
19 | - @rm -rf $(addprefix $(SRCDIR),$(OBJS)) $(PLUGINDIR) 2> /dev/null && \ | |
19 | + @rm -rf $(addprefix $(SRCDIR),$(OBJS)) $(PLUGINDIR) vlibras_test 2> /dev/null && \ | |
20 | 20 | echo " $(OK)" || (echo " $(FAILED)"; exit 1;) |
21 | 21 | |
22 | 22 | vlibras_test: |
23 | 23 | @echo -n Compiling source test file... |
24 | - @$(CXX) $(CFLAGS) $(SOURCES) $(TESTSDIR)/main.cpp $(LDFLAGS) -o $(TESTSDIR)/vlibras_test && \ | |
24 | + @$(CXX) $(CFLAGS) $(TESTSDIR)/main.cpp $(LDFLAGS) -o vlibras_test && \ | |
25 | 25 | echo " $(OK)" || (echo " $(FAILED)"; exit 1;) |
26 | 26 | \ No newline at end of file | ... | ... |
include/core_plugin.h
include/property.h
... | ... | @@ -17,26 +17,22 @@ |
17 | 17 | #include <stdlib.h> |
18 | 18 | #include <string> |
19 | 19 | #include <string.h> |
20 | - #include <lavidlib/io/BufferedReader.h> | |
21 | - #include <lavidlib/io/FileIO.h> | |
22 | - #include <lavidlib/io/IOException.h> | |
23 | - #include <lavidlib/io/EOFException.h> | |
24 | - #include <lavidlib/base/RuntimeException.h> | |
20 | + #include <exception> | |
21 | + #include <fstream> | |
25 | 22 | |
26 | - using namespace lavidlib; | |
23 | + #define MAX_BUFFER 1024 | |
27 | 24 | |
28 | 25 | namespace util { |
29 | 26 | |
30 | 27 | class PropertyHandler { |
31 | 28 | |
32 | 29 | public: |
33 | - PropertyHandler(std::string filename); | |
30 | + PropertyHandler(std::string _filename); | |
34 | 31 | virtual ~PropertyHandler(); |
35 | 32 | std::string getAttributeValue(std::string attr); |
36 | 33 | |
37 | 34 | private: |
38 | - BufferedReader* rbuffer; | |
39 | - FileIO* file_property; | |
35 | + std::string filename; | |
40 | 36 | int checkFileExtension(std::string &filename); |
41 | 37 | |
42 | 38 | }; | ... | ... |
src/core_plugin.cpp
... | ... | @@ -48,7 +48,8 @@ int coreFinalize() |
48 | 48 | |
49 | 49 | int coreUpdateInstall_player() |
50 | 50 | { |
51 | - system(SCRIPT_UPDATE_VLIBRAS); | |
51 | + int r = system(SCRIPT_UPDATE_VLIBRAS); | |
52 | + if (r < 0) printf("%s has returned %d value\n", SCRIPT_UPDATE_VLIBRAS, r); | |
52 | 53 | return system("/./opt/vlibras_desktop/script/launcher.sh &"); |
53 | 54 | } |
54 | 55 | |
... | ... | @@ -163,32 +164,8 @@ int get_version_from_string(std::string json_message, std::string _key) |
163 | 164 | |
164 | 165 | //@Deprecated |
165 | 166 | int get_version_from_json(std::string json_message, std::string _key) |
166 | -{ | |
167 | - | |
167 | +{ | |
168 | 168 | return -1; |
169 | - | |
170 | - /*//Code to JsonCpp | |
171 | - Json::Value parsed_from_str; | |
172 | - Json::Reader json_reader; | |
173 | - bool parsing_flag = json_reader.parse(json_message, parsed_from_str); | |
174 | - | |
175 | - if (!parsing_flag) | |
176 | - throw new RuntimeException("Cannot convert the json message to string."); | |
177 | - | |
178 | - std::string version_str = parsed_from_str[_key].asString(); | |
179 | - | |
180 | - // Check if the version of dictionary contains '_' token. | |
181 | - if ( version_str.find("_") != std::string::npos ) | |
182 | - { | |
183 | - char *tokens_ptr = strtok ((char*) version_str.c_str(), "_"); | |
184 | - if (tokens_ptr == NULL) | |
185 | - throw new RuntimeException("Cannot handler the version of dictionary."); | |
186 | - version_str = (std::string) tokens_ptr; | |
187 | - } | |
188 | - | |
189 | - remove_special_chars(&version_str, ".", (char*) ""); | |
190 | - return atoi(version_str.c_str()); | |
191 | - */ | |
192 | 169 | } |
193 | 170 | |
194 | 171 | |
... | ... | @@ -206,13 +183,14 @@ std::string request_current_versions() |
206 | 183 | if(curl_ptr) |
207 | 184 | { |
208 | 185 | std::string url_endpoint = property_handler_ptr->getAttributeValue(ENDPOINT_UPDATE_ID); |
186 | + printf("url_endpoint -> %s\n", url_endpoint.c_str()); | |
209 | 187 | |
210 | 188 | std::stringstream ss_convert; |
211 | 189 | ss_convert << dict_current_version; |
212 | 190 | url_endpoint.append(ss_convert.str()); |
213 | 191 | |
214 | 192 | if (url_endpoint.size() <= 0) |
215 | - throw new RuntimeException("The URL for this Endpoint is not available on the file config."); | |
193 | + throw "The URL for this Endpoint is not available on the file config."; | |
216 | 194 | |
217 | 195 | curl_easy_setopt(curl_ptr, CURLOPT_URL, (char*) url_endpoint.c_str()); |
218 | 196 | curl_easy_setopt(curl_ptr, CURLOPT_WRITEFUNCTION, writeDataCallback); | ... | ... |
src/property.cpp
... | ... | @@ -16,57 +16,58 @@ |
16 | 16 | namespace util { |
17 | 17 | |
18 | 18 | |
19 | - PropertyHandler::PropertyHandler(std::string filename) { | |
20 | - try { | |
21 | - if (checkFileExtension(filename) != 1) | |
22 | - throw new RuntimeException("Format file not is recognized!"); | |
23 | - file_property = new FileIO(filename, FileIO::MODE_READ); | |
24 | - } catch (lavidlib::IOException &ex) { | |
25 | - printf("[FAILED] Cannot open file %s.\n%s\n", filename.c_str(), | |
26 | - ex.getMessage().c_str()); | |
27 | - } | |
19 | + PropertyHandler::PropertyHandler(std::string _filename) | |
20 | + { | |
21 | + if (checkFileExtension(_filename) != 1) | |
22 | + throw "Format file not is recognized"; | |
23 | + | |
24 | + filename = _filename; | |
28 | 25 | } |
29 | 26 | |
30 | 27 | |
31 | - PropertyHandler::~PropertyHandler() { | |
32 | - if (rbuffer) | |
33 | - delete rbuffer; | |
34 | - if (file_property) | |
35 | - delete file_property; | |
28 | + PropertyHandler::~PropertyHandler() | |
29 | + { | |
30 | + //todo | |
36 | 31 | } |
37 | 32 | |
38 | 33 | |
39 | - std::string PropertyHandler::getAttributeValue(std::string attr) { | |
40 | - | |
41 | - rbuffer = new BufferedReader(file_property); | |
42 | - std::string fline; | |
34 | + std::string PropertyHandler::getAttributeValue(std::string attr) | |
35 | + { | |
36 | + std::ifstream file_property(filename.c_str()); | |
37 | + std::string buffer_str; | |
43 | 38 | try { |
44 | 39 | int target_pos = -1, begin = 0; |
45 | 40 | std::string attr_t, value_t; |
46 | 41 | |
47 | - while((fline = rbuffer->readLine()).size() > 0) { | |
48 | - target_pos = fline.find("="); | |
42 | + while (std::getline(file_property, buffer_str)) | |
43 | + { | |
44 | + target_pos = buffer_str.find("="); | |
49 | 45 | if (target_pos < 2) |
50 | - throw new RuntimeException("The assignment symbol was not found."); | |
46 | + throw "The assignment symbol was not found."; | |
51 | 47 | |
52 | - attr_t = fline.substr(begin, target_pos); | |
48 | + attr_t = buffer_str.substr(begin, target_pos); | |
53 | 49 | begin = target_pos+1; |
54 | - value_t = fline.substr(begin, fline.size()); | |
55 | - if (attr.compare(attr_t) == 0) { | |
56 | - file_property->seek(0); | |
57 | - return value_t; | |
50 | + value_t = buffer_str.substr(begin, buffer_str.size()); | |
51 | + if (attr.compare(attr_t) == 0) | |
52 | + { | |
53 | + file_property.seekg (0, file_property.beg); | |
54 | + return value_t; | |
58 | 55 | } |
59 | 56 | target_pos = -1; |
60 | 57 | begin = 0; |
61 | 58 | } |
62 | - } catch (lavidlib::EOFException &ex) { | |
63 | - printf("[INFO] File is completed.\n%s\n", ex.getMessage().c_str()); | |
59 | + } | |
60 | + catch (std::exception& ex) | |
61 | + { | |
62 | + printf("[Exception] File is completed\n[Error] %s\n", ex.what()); | |
64 | 63 | } |
65 | - file_property->seek(0); | |
66 | - //FIXME: throw new exception | |
67 | - return fline; | |
64 | + file_property.seekg (0, file_property.beg); | |
65 | + | |
66 | + return buffer_str; | |
67 | + | |
68 | 68 | } |
69 | 69 | |
70 | + | |
70 | 71 | #define EXTENSION ".conf" |
71 | 72 | |
72 | 73 | int PropertyHandler::checkFileExtension(std::string &filename) { | ... | ... |
test/main.cpp
... | ... | @@ -9,70 +9,58 @@ |
9 | 9 | |
10 | 10 | /** |
11 | 11 | * \file main.cpp |
12 | - * \author Gustavo Sobral, Leonardo Araújo | |
13 | - * \date Janeiro 2015 | |
12 | + * \author Leonardo Araújo | |
13 | + * \date Outubro 2015 | |
14 | 14 | */ |
15 | 15 | |
16 | -#include <core_plugin.h> | |
17 | - | |
16 | +#include <stdlib.h> | |
17 | +#include <dlfcn.h> | |
18 | 18 | #include <iostream> |
19 | 19 | #include <fstream> |
20 | 20 | #include <string> |
21 | 21 | |
22 | 22 | int main() |
23 | 23 | { |
24 | - | |
25 | - if (coreInitialize() != 1) | |
26 | - { | |
27 | - printf("Cannot initialize the CorePlugin.\n"); | |
28 | - exit(-1); | |
29 | - } | |
30 | 24 | |
31 | - int result_check = coreUpdateCheck(); | |
32 | - switch (result_check) | |
25 | + void *vlibras_lib_handler; | |
26 | + const char *dlsym_error_ptr; | |
27 | + | |
28 | + vlibras_lib_handler = dlopen("plugin/libCorePlugin.so", RTLD_LAZY); | |
29 | + if (!vlibras_lib_handler) | |
33 | 30 | { |
34 | - case 0: | |
35 | - printf("The VLibras is up-to-date!\n"); | |
36 | - break; | |
37 | - case 1: | |
38 | - printf("The VLibras is outdated! Upgrading...\n"); | |
39 | - break; | |
40 | - case 2: | |
41 | - printf("Only the dictionary is outdated! Upgrading...\n"); | |
42 | - break; | |
43 | - case -1: | |
44 | - printf("Error!\n"); | |
45 | - break; | |
46 | - default: | |
47 | - printf("Option not found! Try again.\n"); | |
31 | + fprintf(stderr, "%s\n", dlerror()); | |
32 | + exit(1); | |
48 | 33 | } |
49 | - | |
50 | - // Inicializa o tradutor | |
51 | - //PyTradutor *tradutorTest; | |
52 | - //tradutorTest = new PyTradutor(); | |
53 | - | |
54 | - // Pega o conteúdo do clipboard e salva em `pasteboardContent` | |
55 | - //std::string pasteboardContent = Pasteboard::getGeneralContent(); | |
56 | - // Traduz o conteúdo do clipboard em `pasteboardContent` para a string `traducao` | |
57 | - //char* str = new char[10]; | |
58 | - //strcpy(str, "o gato comeu o rato"); | |
59 | - //std::string traducao = tradutorTest->convertStringToGlosa(str); | |
60 | - | |
61 | - // [LOG] Exibe o conteudo do buffer de clipboard em `pasteboardContent` e traduz para glosa salvando seu resultado em `traducao` | |
62 | - //std::cout << "[[ Conteudo em memoria ]]\n" << str << std::endl; | |
63 | - //std::cout << "[[ Tradução ]]\n" << traducao << std::endl; | |
64 | 34 | |
65 | - //std::cout << "\n##### ##### #####" << std::endl; | |
35 | + typedef void (*coreplugin_t)(); | |
36 | + dlerror(); | |
37 | + | |
38 | + coreplugin_t core_init_f = (coreplugin_t) dlsym(vlibras_lib_handler, "coreInitialize"); | |
39 | + dlsym_error_ptr = dlerror(); | |
40 | + if (dlsym_error_ptr) | |
41 | + { | |
42 | + printf("Cannot load symbol 'coreInitialize': %s\n", dlsym_error_ptr); | |
43 | + dlclose(vlibras_lib_handler); | |
44 | + return 1; | |
45 | + } | |
46 | + | |
47 | + /* Test coreInitialize function */ | |
48 | + core_init_f(); | |
49 | + | |
50 | + coreplugin_t core_update_f = (coreplugin_t) dlsym(vlibras_lib_handler, "coreUpdateCheck"); | |
51 | + dlsym_error_ptr = dlerror(); | |
52 | + if (dlsym_error_ptr) | |
53 | + { | |
54 | + printf("Cannot load symbol 'coreUpdateCheck': %s\n", dlsym_error_ptr); | |
55 | + dlclose(vlibras_lib_handler); | |
56 | + return 1; | |
57 | + } | |
66 | 58 | |
67 | - // Inicializa o plugin | |
68 | - //std::cout << "[[Initialize]] | " << coreInitialize() << std::endl; | |
69 | - // Executa o CorePlugin | |
70 | - //std::cout << "[[Execute]] | " << coreExecute() << std::endl; | |
71 | - // Finaliza o ambiente | |
72 | - //std::cout << "[[Finalize]] | " << coreFinalize() << std::endl; | |
59 | + /* Test coreUpdateCheck function */ | |
60 | + core_update_f(); | |
73 | 61 | |
74 | - // Exclui o que foi utilizado | |
75 | - // delete tradutorTest; | |
62 | + /* Close load library */ | |
63 | + dlclose(vlibras_lib_handler); | |
76 | 64 | |
77 | 65 | return 0; |
78 | 66 | } |
79 | 67 | \ No newline at end of file | ... | ... |