Commit 2cd612601a8828b9d08feade833aaa23a4c0e02e
1 parent
00cc966a
Exists in
master
and in
5 other branches
Incluindo suporte à gravação de log via syslog na extensão oxt
Showing
4 changed files
with
46 additions
and
0 deletions
Show diff stats
src/oxt/globals.hpp
| @@ -70,6 +70,8 @@ | @@ -70,6 +70,8 @@ | ||
| 70 | 70 | ||
| 71 | void sleep(int seconds = 1); | 71 | void sleep(int seconds = 1); |
| 72 | 72 | ||
| 73 | + void log(const char *fmt, const char *msg); | ||
| 74 | + | ||
| 73 | rtl_TextEncoding get_encoding(); | 75 | rtl_TextEncoding get_encoding(); |
| 74 | 76 | ||
| 75 | }; | 77 | }; |
| @@ -145,6 +147,7 @@ | @@ -145,6 +147,7 @@ | ||
| 145 | virtual ::sal_Int16 SAL_CALL sleep( ::sal_Int16 seconds ) throw (::com::sun::star::uno::RuntimeException); | 147 | virtual ::sal_Int16 SAL_CALL sleep( ::sal_Int16 seconds ) throw (::com::sun::star::uno::RuntimeException); |
| 146 | virtual ::rtl::OUString SAL_CALL getTextAt( ::sal_Int16 row, ::sal_Int16 col, ::sal_Int16 size ) throw (::com::sun::star::uno::RuntimeException); | 148 | virtual ::rtl::OUString SAL_CALL getTextAt( ::sal_Int16 row, ::sal_Int16 col, ::sal_Int16 size ) throw (::com::sun::star::uno::RuntimeException); |
| 147 | virtual ::sal_Int16 SAL_CALL setTextAt( ::sal_Int16 row, ::sal_Int16 col, const ::rtl::OUString& text ) throw (::com::sun::star::uno::RuntimeException); | 149 | virtual ::sal_Int16 SAL_CALL setTextAt( ::sal_Int16 row, ::sal_Int16 col, const ::rtl::OUString& text ) throw (::com::sun::star::uno::RuntimeException); |
| 150 | + virtual ::sal_Int16 SAL_CALL log(const ::rtl::OUString& text ) throw (::com::sun::star::uno::RuntimeException); | ||
| 148 | virtual ::sal_Int16 SAL_CALL enter( ) throw (::com::sun::star::uno::RuntimeException); | 151 | virtual ::sal_Int16 SAL_CALL enter( ) throw (::com::sun::star::uno::RuntimeException); |
| 149 | virtual ::sal_Int16 SAL_CALL pfkey( ::sal_Int16 keycode ) throw (::com::sun::star::uno::RuntimeException); | 152 | virtual ::sal_Int16 SAL_CALL pfkey( ::sal_Int16 keycode ) throw (::com::sun::star::uno::RuntimeException); |
| 150 | virtual ::sal_Int16 SAL_CALL pakey( ::sal_Int16 keycode ) throw (::com::sun::star::uno::RuntimeException); | 153 | virtual ::sal_Int16 SAL_CALL pakey( ::sal_Int16 keycode ) throw (::com::sun::star::uno::RuntimeException); |
src/oxt/local.cxx
| @@ -32,6 +32,11 @@ | @@ -32,6 +32,11 @@ | ||
| 32 | #include "globals.hpp" | 32 | #include "globals.hpp" |
| 33 | #include <errno.h> | 33 | #include <errno.h> |
| 34 | 34 | ||
| 35 | + #ifdef HAVE_SYSLOG | ||
| 36 | + #include <syslog.h> | ||
| 37 | + #include <stdarg.h> | ||
| 38 | + #endif // HAVE_SYSLOG | ||
| 39 | + | ||
| 35 | /* | 40 | /* |
| 36 | * NOTE: Take a better look at osl_createEmptySocketAddr() & osl_connectSocketTo() to see if there's | 41 | * NOTE: Take a better look at osl_createEmptySocketAddr() & osl_connectSocketTo() to see if there's |
| 37 | * a way to use this calls to connect with the host for better performance. | 42 | * a way to use this calls to connect with the host for better performance. |
| @@ -42,6 +47,15 @@ | @@ -42,6 +47,15 @@ | ||
| 42 | 47 | ||
| 43 | /*---[ Implement ]-----------------------------------------------------------------------------------------*/ | 48 | /*---[ Implement ]-----------------------------------------------------------------------------------------*/ |
| 44 | 49 | ||
| 50 | +static void loghandler(H3270 *session, const char *module, int rc, const char *fmt, va_list args) | ||
| 51 | +{ | ||
| 52 | +#ifdef HAVE_SYSLOG | ||
| 53 | + openlog(PACKAGE_NAME, LOG_NDELAY, LOG_USER); | ||
| 54 | + vsyslog(LOG_INFO,fmt,args); | ||
| 55 | + closelog(); | ||
| 56 | +#endif // HAVE_SYSLOG | ||
| 57 | +} | ||
| 58 | + | ||
| 45 | pw3270::lib3270_session::lib3270_session() | 59 | pw3270::lib3270_session::lib3270_session() |
| 46 | { | 60 | { |
| 47 | struct _call | 61 | struct _call |
| @@ -64,6 +78,7 @@ | @@ -64,6 +78,7 @@ | ||
| 64 | }; | 78 | }; |
| 65 | 79 | ||
| 66 | H3270 * (*lib3270_new)(const char *); | 80 | H3270 * (*lib3270_new)(const char *); |
| 81 | + void (*set_log_handler)(void (*loghandler)(H3270 *, const char *, int, const char *, va_list)); | ||
| 67 | 82 | ||
| 68 | hThread = NULL; | 83 | hThread = NULL; |
| 69 | hSession = NULL; | 84 | hSession = NULL; |
| @@ -77,9 +92,15 @@ | @@ -77,9 +92,15 @@ | ||
| 77 | *call[f].entry = (void *) osl_getAsciiFunctionSymbol(hModule,call[f].name); | 92 | *call[f].entry = (void *) osl_getAsciiFunctionSymbol(hModule,call[f].name); |
| 78 | 93 | ||
| 79 | /* Get lib3270 session handle */ | 94 | /* Get lib3270 session handle */ |
| 95 | + set_log_handler = (void (*)(void (*loghandler)(H3270 *, const char *, int, const char *, va_list))) osl_getAsciiFunctionSymbol(hModule,"lib3270_set_log_handler"); | ||
| 96 | + | ||
| 97 | + if(set_log_handler) | ||
| 98 | + set_log_handler(loghandler); | ||
| 99 | + | ||
| 80 | lib3270_new = (H3270 * (*)(const char *)) osl_getAsciiFunctionSymbol(hModule,"lib3270_session_new"); | 100 | lib3270_new = (H3270 * (*)(const char *)) osl_getAsciiFunctionSymbol(hModule,"lib3270_session_new"); |
| 81 | hSession = lib3270_new(""); | 101 | hSession = lib3270_new(""); |
| 82 | 102 | ||
| 103 | + log("%s UNO extension loaded",PACKAGE_NAME); | ||
| 83 | } | 104 | } |
| 84 | 105 | ||
| 85 | pw3270::lib3270_session::~lib3270_session() | 106 | pw3270::lib3270_session::~lib3270_session() |
| @@ -105,6 +126,7 @@ | @@ -105,6 +126,7 @@ | ||
| 105 | hModule = NULL; | 126 | hModule = NULL; |
| 106 | } | 127 | } |
| 107 | 128 | ||
| 129 | + log("%s UNO extension unloaded",PACKAGE_NAME); | ||
| 108 | } | 130 | } |
| 109 | 131 | ||
| 110 | int pw3270::lib3270_session::get_revision(void) | 132 | int pw3270::lib3270_session::get_revision(void) |
src/oxt/main.cxx
| @@ -31,6 +31,10 @@ | @@ -31,6 +31,10 @@ | ||
| 31 | 31 | ||
| 32 | #include "globals.hpp" | 32 | #include "globals.hpp" |
| 33 | 33 | ||
| 34 | +#ifdef HAVE_SYSLOG | ||
| 35 | + #include <syslog.h> | ||
| 36 | +#endif // HAVE_SYSLOG | ||
| 37 | + | ||
| 34 | #include <salhelper/timer.hxx> | 38 | #include <salhelper/timer.hxx> |
| 35 | #include <com/sun/star/registry/XRegistryKey.hpp> | 39 | #include <com/sun/star/registry/XRegistryKey.hpp> |
| 36 | #include <com/sun/star/lang/XSingleComponentFactory.hpp> | 40 | #include <com/sun/star/lang/XSingleComponentFactory.hpp> |
| @@ -229,6 +233,12 @@ pw3270::uno_impl::~uno_impl() | @@ -229,6 +233,12 @@ pw3270::uno_impl::~uno_impl() | ||
| 229 | return 0; | 233 | return 0; |
| 230 | } | 234 | } |
| 231 | 235 | ||
| 236 | +::sal_Int16 SAL_CALL pw3270::uno_impl::log( const ::rtl::OUString& msg ) throw (::com::sun::star::uno::RuntimeException) | ||
| 237 | +{ | ||
| 238 | + hSession->log("%s",rtl::OUStringToOString(msg,RTL_TEXTENCODING_UTF8).getStr()); | ||
| 239 | + return 0; | ||
| 240 | +} | ||
| 241 | + | ||
| 232 | 242 | ||
| 233 | pw3270::session::session() | 243 | pw3270::session::session() |
| 234 | { | 244 | { |
| @@ -251,4 +261,14 @@ void pw3270::session::sleep(int seconds) | @@ -251,4 +261,14 @@ void pw3270::session::sleep(int seconds) | ||
| 251 | osl_waitThread(&t); | 261 | osl_waitThread(&t); |
| 252 | } | 262 | } |
| 253 | 263 | ||
| 264 | +void pw3270::session::log(const char *fmt, const char *msg) | ||
| 265 | +{ | ||
| 266 | +#ifdef HAVE_SYSLOG | ||
| 267 | + openlog(PACKAGE_NAME, LOG_NDELAY, LOG_USER); | ||
| 268 | + syslog(LOG_INFO,fmt,msg); | ||
| 269 | + closelog(); | ||
| 270 | +#else | ||
| 271 | + #error This module needs syslog support | ||
| 272 | +#endif // HAVE_SYSLOG | ||
| 273 | +} | ||
| 254 | 274 |
src/oxt/pw3270.idl
| @@ -75,6 +75,7 @@ module br | @@ -75,6 +75,7 @@ module br | ||
| 75 | 75 | ||
| 76 | /* Misc */ | 76 | /* Misc */ |
| 77 | short getRevision(); | 77 | short getRevision(); |
| 78 | + short log([in] string msg); | ||
| 78 | short sleep([in] short seconds); | 79 | short sleep([in] short seconds); |
| 79 | boolean isReady(); | 80 | boolean isReady(); |
| 80 | boolean hasTextAt([in] short row, [in] short col, [in] string text); | 81 | boolean hasTextAt([in] short row, [in] short col, [in] string text); |