Commit 6a202cd758340a4ddccb6313c649a562ca72d762

Authored by perry.werneck@gmail.com
1 parent 9b4e1a6c

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