Commit 256992946b90fefe071b9096d4199d573b9f5729

Authored by perry.werneck@gmail.com
1 parent 6673a6f7

Iniciando implementacao de IPC no modulo libreoffice

src/oxt/Makefile.in
1 1  
2 2 PACKAGE=@PACKAGE_NAME@
3 3  
4   -SOURCES=main.cxx local.cxx connection.cxx get.cxx set.cxx actions.cxx
  4 +SOURCES=main.cxx local.cxx connection.cxx get.cxx set.cxx actions.cxx remote.cxx
5 5  
6 6 prefix=/usr
7 7 exec_prefix=@exec_prefix@
... ...
src/oxt/globals.hpp
... ... @@ -29,10 +29,10 @@
29 29 /*---[ Debug macros ]--------------------------------------------------------------------------------------*/
30 30  
31 31 #ifdef DEBUG
32   - #define trace(fmt, ... ) fprintf(stderr, "%s(%d) " fmt "\n", __FILE__, __LINE__, __VA_ARGS__ ); fflush(stderr);
  32 + #define trace(fmt, ... ) fprintf(stderr, "%s(%d) " fmt "\n", __FILE__, __LINE__, __VA_ARGS__ ); fflush(stderr);
33 33 #else
34 34 #define trace( fmt, ... ) /* fmt __VA_ARGS__ */
35   - #endif
  35 + #endif
36 36  
37 37 /*---[ Object implementation ]-----------------------------------------------------------------------------*/
38 38  
... ... @@ -128,6 +128,31 @@
128 128  
129 129 };
130 130  
  131 + class ipc3270_session : public session
  132 + {
  133 + public:
  134 + ipc3270_session(const char *name);
  135 + virtual ~ipc3270_session();
  136 + virtual int get_revision(void);
  137 + virtual LIB3270_MESSAGE get_state(void);
  138 + virtual char * get_text_at(int row, int col, int len);
  139 + virtual int set_text_at(int row, int col, const char *text);
  140 + virtual int cmp_text_at(int row, int col, const char *text);
  141 + virtual void set_toggle(LIB3270_TOGGLE toggle, bool state);
  142 +
  143 + virtual int connect(const char *uri);
  144 + virtual int disconnect(void);
  145 + virtual bool connected(void);
  146 +
  147 + virtual int enter(void);
  148 + virtual int pfkey(int key);
  149 + virtual int pakey(int key);
  150 + virtual bool in_tn3270e();
  151 + virtual void mem_free(void *);
  152 +
  153 + };
  154 +
  155 +
131 156 class uno_impl : public ::cppu::WeakImplHelper3< br::com::bb::pw3270intf, com::sun::star::lang::XServiceInfo, com::sun::star::lang::XInitialization >
132 157 {
133 158 public:
... ... @@ -163,6 +188,7 @@
163 188 virtual ::sal_Int16 SAL_CALL waitForReady( ::sal_Int16 seconds ) throw (::com::sun::star::uno::RuntimeException);
164 189 virtual ::sal_Int16 SAL_CALL dsTrace( ::sal_Bool state ) throw (::com::sun::star::uno::RuntimeException);
165 190 virtual ::sal_Int16 SAL_CALL screenTrace( ::sal_Bool state ) throw (::com::sun::star::uno::RuntimeException);
  191 + virtual ::sal_Int16 SAL_CALL setSession( const ::rtl::OUString& name ) throw (::com::sun::star::uno::RuntimeException);
166 192  
167 193 private:
168 194  
... ...
src/oxt/main.cxx
... ... @@ -79,13 +79,13 @@ static Reference&lt; XInterface &gt; SAL_CALL CreateInstance( const Reference&lt; XCompon
79 79 * i.e. has special context
80 80 */
81 81 extern "C" void SAL_CALL component_getImplementationEnvironment(const sal_Char ** ppEnvTypeName, uno_Environment ** ppEnv)
82   -{
83   -#ifdef LANGUAGE_BINDING_NAME
  82 +{
  83 +#ifdef LANGUAGE_BINDING_NAME
84 84 trace("%s set envtype to %s\n",__FUNCTION__,LANGUAGE_BINDING_NAME);
85   - *ppEnvTypeName = LANGUAGE_BINDING_NAME;
86   -#else
87   - trace("%s set envtype to %s\n",__FUNCTION__,"msci");
88   - *ppEnvTypeName = "msci";
  85 + *ppEnvTypeName = LANGUAGE_BINDING_NAME;
  86 +#else
  87 + trace("%s set envtype to %s\n",__FUNCTION__,"msci");
  88 + *ppEnvTypeName = "msci";
89 89 #endif
90 90 }
91 91  
... ... @@ -115,10 +115,10 @@ extern &quot;C&quot; void SAL_CALL component_getImplementationEnvironment(const sal_Char *
115 115 * @return true if everything went fine
116 116 */
117 117 extern "C" sal_Bool SAL_CALL component_writeInfo(void * pServiceManager, void * pRegistryKey)
118   -{
119   - sal_Bool result = sal_False;
120   -
121   - trace("%s",__FUNCTION__);
  118 +{
  119 + sal_Bool result = sal_False;
  120 +
  121 + trace("%s",__FUNCTION__);
122 122  
123 123 if (pRegistryKey)
124 124 {
... ... @@ -141,8 +141,8 @@ extern &quot;C&quot; sal_Bool SAL_CALL component_writeInfo(void * pServiceManager, void *
141 141 // we should not ignore exceptions
142 142 }
143 143 }
144   -
145   - return result;
  144 +
  145 + return result;
146 146 }
147 147  
148 148 /*********************************************************
... ... @@ -171,7 +171,7 @@ extern &quot;C&quot; void * SAL_CALL component_getFactory(const sal_Char * pImplName, void
171 171 void * pRet = 0;
172 172  
173 173 trace("%s",__FUNCTION__);
174   -
  174 +
175 175 if(pServiceManager && rtl_str_compare( pImplName, IMPLNAME ) == 0)
176 176 {
177 177 Reference< XSingleComponentFactory > xFactory( ::cppu::createSingleComponentFactory(
... ... @@ -184,7 +184,7 @@ extern &quot;C&quot; void * SAL_CALL component_getFactory(const sal_Char * pImplName, void
184 184 pRet = xFactory.get();
185 185 }
186 186 }
187   -
  187 +
188 188 return pRet;
189 189 }
190 190  
... ... @@ -285,3 +285,12 @@ void pw3270::session::log(const char *fmt, const char *msg)
285 285 #endif // HAVE_SYSLOG
286 286 }
287 287  
  288 +::sal_Int16 SAL_CALL pw3270::uno_impl::setSession( const ::rtl::OUString& name ) throw (::com::sun::star::uno::RuntimeException)
  289 +{
  290 + OString str = rtl::OUStringToOString( name , hSession->get_encoding() );
  291 +
  292 + delete this->hSession;
  293 + this->hSession = new ipc3270_session(str.getStr());
  294 +
  295 + return 0;
  296 +}
... ...
src/oxt/pw3270.idl
... ... @@ -74,6 +74,7 @@ module br
74 74 short pakey([in] short keycode);
75 75  
76 76 /* Misc */
  77 + short setSession([in] string name);
77 78 short getRevision();
78 79 string getVersion();
79 80 short log([in] string msg);
... ... @@ -83,8 +84,8 @@ module br
83 84 short waitForReady([in] short seconds);
84 85 // short waitForTextAt(in] short row, [in] short col, [in] string text, [in] short seconds);
85 86 boolean isConnected();
86   - short dsTrace([in] boolean mode);
87   - short screenTrace([in] boolean mode);
  87 + short dsTrace([in] boolean mode);
  88 + short screenTrace([in] boolean mode);
88 89  
89 90 };
90 91  
... ...
src/oxt/pw3270OXT.cbp
... ... @@ -42,6 +42,7 @@
42 42 <Unit filename="main.cxx" />
43 43 <Unit filename="manifest.xml.in" />
44 44 <Unit filename="pw3270.idl" />
  45 + <Unit filename="remote.cxx" />
45 46 <Unit filename="set.cxx" />
46 47 <Unit filename="testprogram.cxx" />
47 48 <Extensions>
... ...
src/oxt/remote.cxx 0 → 100644
... ... @@ -0,0 +1,228 @@
  1 +/*
  2 + * "Software pw3270, desenvolvido com base nos códigos fontes do WC3270 e X3270
  3 + * (Paul Mattes Paul.Mattes@usa.net), de emulação de terminal 3270 para acesso a
  4 + * aplicativos mainframe. Registro no INPI sob o nome G3270.
  5 + *
  6 + * Copyright (C) <2008> <Banco do Brasil S.A.>
  7 + *
  8 + * Este programa é software livre. Você pode redistribuí-lo e/ou modificá-lo sob
  9 + * os termos da GPL v.2 - Licença Pública Geral GNU, conforme publicado pela
  10 + * Free Software Foundation.
  11 + *
  12 + * Este programa é distribuído na expectativa de ser útil, mas SEM QUALQUER
  13 + * GARANTIA; sem mesmo a garantia implícita de COMERCIALIZAÇÃO ou de ADEQUAÇÃO
  14 + * A QUALQUER PROPÓSITO EM PARTICULAR. Consulte a Licença Pública Geral GNU para
  15 + * obter mais detalhes.
  16 + *
  17 + * Você deve ter recebido uma cópia da Licença Pública Geral GNU junto com este
  18 + * programa; se não, escreva para a Free Software Foundation, Inc., 59 Temple
  19 + * Place, Suite 330, Boston, MA, 02111-1307, USA
  20 + *
  21 + * Este programa está nomeado como remote.cxx e possui - linhas de código.
  22 + *
  23 + * Contatos:
  24 + *
  25 + * perry.werneck@gmail.com (Alexandre Perry de Souza Werneck)
  26 + * erico.mendonca@gmail.com (Erico Mascarenhas Mendonça)
  27 + * licinio@bb.com.br (Licínio Luis Branco)
  28 + * kraucer@bb.com.br (Kraucer Fernandes Mazuco)
  29 + *
  30 + */
  31 +
  32 + #include "globals.hpp"
  33 + #include <errno.h>
  34 + #include <string.h>
  35 +
  36 +/*---[ Statics ]-------------------------------------------------------------------------------------------*/
  37 +
  38 +
  39 +/*---[ Implement ]-----------------------------------------------------------------------------------------*/
  40 +
  41 +pw3270::ipc3270_session::ipc3270_session(const char *name) : pw3270::session()
  42 +{
  43 +#ifdef HAVE_DBUS
  44 +
  45 +#else
  46 +
  47 +#endif // HAVE_DBUS
  48 +}
  49 +
  50 +pw3270::ipc3270_session::~ipc3270_session()
  51 +{
  52 +#ifdef HAVE_DBUS
  53 +
  54 +#endif // HAVE_DBUS
  55 +}
  56 +
  57 +int pw3270::ipc3270_session::get_revision(void)
  58 +{
  59 +#ifdef HAVE_DBUS
  60 +
  61 + return -1;
  62 +
  63 +#else
  64 +
  65 + return -1;
  66 +
  67 +#endif // HAVE_DBUS
  68 +}
  69 +
  70 +LIB3270_MESSAGE pw3270::ipc3270_session::get_state(void)
  71 +{
  72 +#ifdef HAVE_DBUS
  73 +
  74 + return (LIB3270_MESSAGE) -1;
  75 +
  76 +#else
  77 +
  78 + return (LIB3270_MESSAGE) -1;
  79 +
  80 +#endif // HAVE_DBUS
  81 +}
  82 +
  83 +char * pw3270::ipc3270_session::get_text_at(int row, int col, int len)
  84 +{
  85 +#ifdef HAVE_DBUS
  86 +
  87 + return NULL;
  88 +
  89 +#else
  90 +
  91 + return NULL;
  92 +
  93 +#endif // HAVE_DBUS
  94 +}
  95 +
  96 +int pw3270::ipc3270_session::set_text_at(int row, int col, const char *text)
  97 +{
  98 +#ifdef HAVE_DBUS
  99 +
  100 + return -1;
  101 +
  102 +#else
  103 +
  104 + return -1;
  105 +
  106 +#endif // HAVE_DBUS
  107 +}
  108 +
  109 +int pw3270::ipc3270_session::cmp_text_at(int row, int col, const char *text)
  110 +{
  111 +#ifdef HAVE_DBUS
  112 +
  113 + return -1;
  114 +
  115 +#else
  116 +
  117 + return -1;
  118 +
  119 +#endif // HAVE_DBUS
  120 +}
  121 +
  122 +void pw3270::ipc3270_session::set_toggle(LIB3270_TOGGLE toggle, bool state)
  123 +{
  124 +}
  125 +
  126 +int pw3270::ipc3270_session::connect(const char *uri)
  127 +{
  128 +#ifdef HAVE_DBUS
  129 +
  130 + return -1;
  131 +
  132 +#else
  133 +
  134 + return -1;
  135 +
  136 +#endif // HAVE_DBUS
  137 +}
  138 +
  139 +int pw3270::ipc3270_session::disconnect(void)
  140 +{
  141 +#ifdef HAVE_DBUS
  142 +
  143 + return -1;
  144 +
  145 +#else
  146 +
  147 + return -1;
  148 +
  149 +#endif // HAVE_DBUS
  150 +}
  151 +
  152 +bool pw3270::ipc3270_session::connected(void)
  153 +{
  154 +#ifdef HAVE_DBUS
  155 +
  156 + return false;
  157 +
  158 +#else
  159 +
  160 + return false;
  161 +
  162 +#endif // HAVE_DBUS
  163 +}
  164 +
  165 +int pw3270::ipc3270_session::enter(void)
  166 +{
  167 +#ifdef HAVE_DBUS
  168 +
  169 + return -1;
  170 +
  171 +#else
  172 +
  173 + return -1;
  174 +
  175 +#endif // HAVE_DBUS
  176 +}
  177 +
  178 +int pw3270::ipc3270_session::pfkey(int key)
  179 +{
  180 +#ifdef HAVE_DBUS
  181 +
  182 + return -1;
  183 +
  184 +#else
  185 +
  186 + return -1;
  187 +
  188 +#endif // HAVE_DBUS
  189 +}
  190 +
  191 +int pw3270::ipc3270_session::pakey(int key)
  192 +{
  193 +#ifdef HAVE_DBUS
  194 +
  195 + return -1;
  196 +
  197 +#else
  198 +
  199 + return -1;
  200 +
  201 +#endif // HAVE_DBUS
  202 +}
  203 +
  204 +bool pw3270::ipc3270_session::in_tn3270e()
  205 +{
  206 +#ifdef HAVE_DBUS
  207 +
  208 + return false;
  209 +
  210 +#else
  211 +
  212 + return false;
  213 +
  214 +#endif // HAVE_DBUS
  215 +}
  216 +
  217 +void pw3270::ipc3270_session::mem_free(void *ptr)
  218 +{
  219 +#ifdef HAVE_DBUS
  220 +
  221 +
  222 +#else
  223 +
  224 +
  225 +#endif // HAVE_DBUS
  226 +}
  227 +
  228 +
... ...