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 |