Commit 6a202cd758340a4ddccb6313c649a562ca72d762
1 parent
9b4e1a6c
Exists in
master
and in
5 other branches
Trabalhando na extensão LibreOffice
Showing
2 changed files
with
34 additions
and
0 deletions
Show diff stats
src/oxt/actions.cxx
| @@ -30,6 +30,7 @@ | @@ -30,6 +30,7 @@ | ||
| 30 | */ | 30 | */ |
| 31 | 31 | ||
| 32 | #include "globals.hpp" | 32 | #include "globals.hpp" |
| 33 | + #include <unistd.h> | ||
| 33 | #include <string.h> | 34 | #include <string.h> |
| 34 | 35 | ||
| 35 | /*---[ Implement ]-----------------------------------------------------------------------------------------*/ | 36 | /*---[ Implement ]-----------------------------------------------------------------------------------------*/ |
| @@ -78,3 +79,35 @@ | @@ -78,3 +79,35 @@ | ||
| 78 | return cmpTextAt(row,col,text) == 0; | 79 | return cmpTextAt(row,col,text) == 0; |
| 79 | } | 80 | } |
| 80 | 81 | ||
| 82 | +::sal_Int16 SAL_CALL pw3270::uno_impl::waitForReady( ::sal_Int16 seconds ) throw (::com::sun::star::uno::RuntimeException) | ||
| 83 | +{ | ||
| 84 | + time_t end = time(0) + seconds; | ||
| 85 | + | ||
| 86 | + osl_yieldThread(); | ||
| 87 | + | ||
| 88 | + while(time(0) < end) | ||
| 89 | + { | ||
| 90 | + switch(hSession->get_state()) | ||
| 91 | + { | ||
| 92 | + case LIB3270_MESSAGE_NONE: | ||
| 93 | + return 0; | ||
| 94 | + | ||
| 95 | + case LIB3270_MESSAGE_DISCONNECTED: | ||
| 96 | + return ENOTCONN; | ||
| 97 | + | ||
| 98 | + case LIB3270_MESSAGE_MINUS: | ||
| 99 | + case LIB3270_MESSAGE_PROTECTED: | ||
| 100 | + case LIB3270_MESSAGE_NUMERIC: | ||
| 101 | + case LIB3270_MESSAGE_OVERFLOW: | ||
| 102 | + case LIB3270_MESSAGE_INHIBIT: | ||
| 103 | + case LIB3270_MESSAGE_KYBDLOCK: | ||
| 104 | + return EPROTO; | ||
| 105 | + | ||
| 106 | + | ||
| 107 | + } | ||
| 108 | + | ||
| 109 | + sleep(1); | ||
| 110 | + } | ||
| 111 | + | ||
| 112 | + return ETIMEDOUT; | ||
| 113 | +} |
src/oxt/globals.hpp
| @@ -152,6 +152,7 @@ | @@ -152,6 +152,7 @@ | ||
| 152 | virtual ::sal_Bool SAL_CALL isReady( ) throw (::com::sun::star::uno::RuntimeException); | 152 | virtual ::sal_Bool SAL_CALL isReady( ) throw (::com::sun::star::uno::RuntimeException); |
| 153 | virtual ::sal_Bool SAL_CALL isConnected( ) throw (::com::sun::star::uno::RuntimeException); | 153 | virtual ::sal_Bool SAL_CALL isConnected( ) throw (::com::sun::star::uno::RuntimeException); |
| 154 | virtual ::sal_Bool SAL_CALL hasTextAt( ::sal_Int16 row, ::sal_Int16 col, const ::rtl::OUString& text ) throw (::com::sun::star::uno::RuntimeException); | 154 | virtual ::sal_Bool SAL_CALL hasTextAt( ::sal_Int16 row, ::sal_Int16 col, const ::rtl::OUString& text ) throw (::com::sun::star::uno::RuntimeException); |
| 155 | + virtual ::sal_Int16 SAL_CALL waitForReady( ::sal_Int16 seconds ) throw (::com::sun::star::uno::RuntimeException); | ||
| 155 | 156 | ||
| 156 | private: | 157 | private: |
| 157 | 158 |