Commit c743daed758953a60a4867c8434c230e9b34ba71
1 parent
aff1fde6
Exists in
master
and in
5 other branches
Ajustando módulo PHP
Showing
10 changed files
with
234 additions
and
34 deletions
Show diff stats
configure.ac
| ... | ... | @@ -239,6 +239,7 @@ AC_MSG_RESULT($app_cv_fvisibility_ok) |
| 239 | 239 | if test $app_cv_fvisibility_ok = yes; then |
| 240 | 240 | CFLAGS="$CFLAGS -fvisibility=hidden" |
| 241 | 241 | OO_CXXFLAGS="$OO_CXXFLAGS -fvisibility=hidden" |
| 242 | + CXXFLAGS="$CXXFLAGS -fvisibility=hidden" | |
| 242 | 243 | fi |
| 243 | 244 | |
| 244 | 245 | #--[ Options ]------------------------------------------------------------------------------------------------------------------------------------------------ |
| ... | ... | @@ -624,6 +625,7 @@ AC_CONFIG_FILES([ |
| 624 | 625 | makegtkruntime.sh |
| 625 | 626 | src/sample/Makefile |
| 626 | 627 | mac/pw3270.bundle |
| 628 | + src/php/Makefile | |
| 627 | 629 | ]) |
| 628 | 630 | |
| 629 | 631 | dnl Output the generated config.status script. | ... | ... |
src/classlib/local.cc
src/classlib/session.cc
| ... | ... | @@ -0,0 +1,99 @@ |
| 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 | +# Contatos: | |
| 22 | +# | |
| 23 | +# perry.werneck@gmail.com (Alexandre Perry de Souza Werneck) | |
| 24 | +# erico.mendonca@gmail.com (Erico Mascarenhas de Mendonça) | |
| 25 | +# | |
| 26 | + | |
| 27 | +PACKAGE_NAME=@PACKAGE_NAME@ | |
| 28 | +SOURCES=get.cc init.cc main.cc misc.cc set.cc | |
| 29 | + | |
| 30 | +#---[ Paths ]------------------------------------------------------------------ | |
| 31 | + | |
| 32 | +prefix=@prefix@ | |
| 33 | +exec_prefix=@exec_prefix@ | |
| 34 | +bindir=@bindir@ | |
| 35 | +sbindir=@sbindir@ | |
| 36 | +libdir=@libdir@ | |
| 37 | +includedir=@includedir@ | |
| 38 | + | |
| 39 | +#---[ Tools ]------------------------------------------------------------------ | |
| 40 | + | |
| 41 | +CXX=@CXX@ | |
| 42 | +MKDIR=@MKDIR_P@ | |
| 43 | +INSTALL=@INSTALL@ | |
| 44 | +INSTALL_DATA=@INSTALL_DATA@ | |
| 45 | +INSTALL_PROGRAM=@INSTALL_PROGRAM@ | |
| 46 | +PHPCONFIG=@PHPCONFIG@ | |
| 47 | + | |
| 48 | +#---[ Paths ]------------------------------------------------------------------ | |
| 49 | + | |
| 50 | +OBJDIR = .obj | |
| 51 | +BINDIR = .bin | |
| 52 | + | |
| 53 | +OBJDBG = $(OBJDIR)/Debug | |
| 54 | +BINDBG = $(BINDIR)/Debug | |
| 55 | + | |
| 56 | +OBJRLS = $(OBJDIR)/Release | |
| 57 | +BINRLS = $(BINDIR)/Release | |
| 58 | + | |
| 59 | +#---[ lib3270 common class ]--------------------------------------------------- | |
| 60 | + | |
| 61 | +DEBUG_CFLAGS=-DDEBUG=1 -g -Wall | |
| 62 | +PW3270_CFLAGS=-I../include | |
| 63 | +CLASSLIBDIR=../classlib | |
| 64 | +include $(CLASSLIBDIR)/class.mak | |
| 65 | + | |
| 66 | +#---[ Build options ]---------------------------------------------------------- | |
| 67 | + | |
| 68 | +CXXFLAGS=@CXXFLAGS@ @DLL_CFLAGS@ `$(PHPCONFIG) --includes` -I../include | |
| 69 | + | |
| 70 | +#---[ Rules ]------------------------------------------------------------------ | |
| 71 | + | |
| 72 | +$(OBJDBG)/%.o: %.cc php3270.h Makefile | |
| 73 | + @echo " CC `basename $@`" | |
| 74 | + @mkdir -p `dirname $@` | |
| 75 | + $(CXX) -DDEBUG=1 $(CXXFLAGS) -o $@ -c $< | |
| 76 | + | |
| 77 | + | |
| 78 | +#---[ Release targets ]-------------------------------------------------------- | |
| 79 | + | |
| 80 | +#---[ Debug targets ]---------------------------------------------------------- | |
| 81 | + | |
| 82 | +Debug: $(BINDBG)/php3270@DLLEXT@ | |
| 83 | + | |
| 84 | +$(BINDBG)/php3270@DLLEXT@: $(foreach SRC, $(basename $(SOURCES)), $(OBJDBG)/$(SRC)@OBJEXT@) \ | |
| 85 | + $(CLASS_DEBUG_OBJECTS) | |
| 86 | + @echo " LD `basename $@`" | |
| 87 | + @$(MKDIR) `dirname $@` | |
| 88 | + $(CXX) -shared $(LDFLAGS) $(OO_LDFLAGS) $(CLASS_LIBS) -o $@ $^ | |
| 89 | + | |
| 90 | + | |
| 91 | +run: $(BINDBG)/php3270@DLLEXT@ | |
| 92 | + php -d extension=$(BINDBG)/php3270@DLLEXT@ sample.php | |
| 93 | + | |
| 94 | +#---[ Misc targets ]----------------------------------------------------------- | |
| 95 | + | |
| 96 | +clean: | |
| 97 | + @rm -fr $(OBJDIR) | |
| 98 | + @rm -fr $(BINDIR) | |
| 99 | + | ... | ... |
src/php/main.cc
| ... | ... | @@ -43,12 +43,17 @@ static zend_object_handlers tn3270_object_handlers; |
| 43 | 43 | zend_function_entry tn3270_methods[] = |
| 44 | 44 | { |
| 45 | 45 | PHP_ME( tn3270, __construct, NULL, ZEND_ACC_PUBLIC | ZEND_ACC_CTOR) |
| 46 | + | |
| 46 | 47 | PHP_ME( tn3270, connect, NULL, ZEND_ACC_PUBLIC | ZEND_ACC_CTOR) |
| 47 | 48 | PHP_ME( tn3270, disconnect, NULL, ZEND_ACC_PUBLIC | ZEND_ACC_CTOR) |
| 48 | 49 | |
| 49 | 50 | PHP_ME( tn3270, isconnected, NULL, ZEND_ACC_PUBLIC | ZEND_ACC_CTOR) |
| 50 | 51 | PHP_ME( tn3270, isready, NULL, ZEND_ACC_PUBLIC | ZEND_ACC_CTOR) |
| 51 | 52 | |
| 53 | + PHP_ME( tn3270, waitforready, NULL, ZEND_ACC_PUBLIC | ZEND_ACC_CTOR) | |
| 54 | + PHP_ME( tn3270, wait, NULL, ZEND_ACC_PUBLIC | ZEND_ACC_CTOR) | |
| 55 | + PHP_ME( tn3270, iterate, NULL, ZEND_ACC_PUBLIC | ZEND_ACC_CTOR) | |
| 56 | + | |
| 52 | 57 | PHP_ME( tn3270, pfkey, NULL, ZEND_ACC_PUBLIC | ZEND_ACC_CTOR) |
| 53 | 58 | PHP_ME( tn3270, pakey, NULL, ZEND_ACC_PUBLIC | ZEND_ACC_CTOR) |
| 54 | 59 | PHP_ME( tn3270, enter, NULL, ZEND_ACC_PUBLIC | ZEND_ACC_CTOR) |
| ... | ... | @@ -129,34 +134,3 @@ extern "C" |
| 129 | 134 | } |
| 130 | 135 | // #endif |
| 131 | 136 | |
| 132 | -PHP_METHOD(tn3270, connect) | |
| 133 | -{ | |
| 134 | - const char * host; | |
| 135 | - int szHost; | |
| 136 | - zend_bool wait = 0; | |
| 137 | - int rc = 0; | |
| 138 | - tn3270_object * obj = (tn3270_object *) zend_object_store_get_object(getThis() TSRMLS_CC); | |
| 139 | - | |
| 140 | - if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|sb", &host, &szHost, &wait) == FAILURE) | |
| 141 | - RETURN_NULL(); | |
| 142 | - | |
| 143 | - if(szHost) | |
| 144 | - { | |
| 145 | - char text[szHost+1]; | |
| 146 | - strncpy(text,host,szHost); | |
| 147 | - text[szHost] = 0; | |
| 148 | - rc = obj->hSession->connect(text,wait); | |
| 149 | - } | |
| 150 | - else | |
| 151 | - { | |
| 152 | - rc = obj->hSession->connect(); | |
| 153 | - } | |
| 154 | - | |
| 155 | - RETURN_LONG(rc); | |
| 156 | -} | |
| 157 | - | |
| 158 | -PHP_METHOD(tn3270, disconnect) | |
| 159 | -{ | |
| 160 | - tn3270_object * obj = (tn3270_object *) zend_object_store_get_object(getThis() TSRMLS_CC); | |
| 161 | - RETURN_LONG(obj->hSession->disconnect()); | |
| 162 | -} | ... | ... |
| ... | ... | @@ -0,0 +1,117 @@ |
| 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., 51 Franklin | |
| 19 | + * St, Fifth Floor, Boston, MA 02110-1301 USA | |
| 20 | + * | |
| 21 | + * Este programa está nomeado como main.cc 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 | + * | |
| 28 | + * Referências: | |
| 29 | + * | |
| 30 | + * http://devzone.zend.com/1435/wrapping-c-classes-in-a-php-extension/ | |
| 31 | + * | |
| 32 | + */ | |
| 33 | + | |
| 34 | + #include "php3270.h" | |
| 35 | + | |
| 36 | +/*--[ Implement ]--------------------------------------------------------------------------------------------------*/ | |
| 37 | + | |
| 38 | +PHP_METHOD(tn3270, connect) | |
| 39 | +{ | |
| 40 | + const char * host; | |
| 41 | + int szHost; | |
| 42 | + zend_bool wait = 0; | |
| 43 | + int rc = 0; | |
| 44 | + tn3270_object * obj = (tn3270_object *) zend_object_store_get_object(getThis() TSRMLS_CC); | |
| 45 | + | |
| 46 | + if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|sb", &host, &szHost, &wait) == FAILURE) | |
| 47 | + RETURN_NULL(); | |
| 48 | + | |
| 49 | + if(szHost) | |
| 50 | + { | |
| 51 | + char text[szHost+1]; | |
| 52 | + strncpy(text,host,szHost); | |
| 53 | + text[szHost] = 0; | |
| 54 | + rc = obj->hSession->connect(text,wait); | |
| 55 | + } | |
| 56 | + else | |
| 57 | + { | |
| 58 | + rc = obj->hSession->connect(); | |
| 59 | + } | |
| 60 | + | |
| 61 | + RETURN_LONG(rc); | |
| 62 | +} | |
| 63 | + | |
| 64 | +PHP_METHOD(tn3270, disconnect) | |
| 65 | +{ | |
| 66 | + tn3270_object * obj = (tn3270_object *) zend_object_store_get_object(getThis() TSRMLS_CC); | |
| 67 | + RETURN_LONG(obj->hSession->disconnect()); | |
| 68 | +} | |
| 69 | + | |
| 70 | +PHP_METHOD(tn3270, waitforready) | |
| 71 | +{ | |
| 72 | + long seconds; | |
| 73 | + tn3270_object * obj = (tn3270_object *) zend_object_store_get_object(getThis() TSRMLS_CC); | |
| 74 | + | |
| 75 | + // http://www.php.net/manual/pt_BR/internals2.funcs.php | |
| 76 | + if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l", &seconds) == FAILURE) | |
| 77 | + RETURN_NULL(); | |
| 78 | + | |
| 79 | + RETURN_LONG(obj->hSession->wait_for_ready((int) seconds)); | |
| 80 | +} | |
| 81 | + | |
| 82 | +PHP_METHOD(tn3270, waity) | |
| 83 | +{ | |
| 84 | + long seconds; | |
| 85 | + tn3270_object * obj = (tn3270_object *) zend_object_store_get_object(getThis() TSRMLS_CC); | |
| 86 | + | |
| 87 | + // http://www.php.net/manual/pt_BR/internals2.funcs.php | |
| 88 | + if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l", &seconds) == FAILURE) | |
| 89 | + RETURN_NULL(); | |
| 90 | + | |
| 91 | + RETURN_LONG(obj->hSession->wait((int) seconds)); | |
| 92 | +} | |
| 93 | + | |
| 94 | +PHP_METHOD(tn3270, wait) | |
| 95 | +{ | |
| 96 | + long seconds; | |
| 97 | + tn3270_object * obj = (tn3270_object *) zend_object_store_get_object(getThis() TSRMLS_CC); | |
| 98 | + | |
| 99 | + // http://www.php.net/manual/pt_BR/internals2.funcs.php | |
| 100 | + if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l", &seconds) == FAILURE) | |
| 101 | + RETURN_NULL(); | |
| 102 | + | |
| 103 | + RETURN_LONG(obj->hSession->wait((int) seconds)); | |
| 104 | +} | |
| 105 | + | |
| 106 | + | |
| 107 | +PHP_METHOD(tn3270, iterate) | |
| 108 | +{ | |
| 109 | + zend_bool wait = 0; | |
| 110 | + tn3270_object * obj = (tn3270_object *) zend_object_store_get_object(getThis() TSRMLS_CC); | |
| 111 | + | |
| 112 | + // http://www.php.net/manual/pt_BR/internals2.funcs.php | |
| 113 | + if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "b", &wait) == FAILURE) | |
| 114 | + RETURN_NULL(); | |
| 115 | + | |
| 116 | + RETURN_LONG(obj->hSession->iterate(wait)); | |
| 117 | +} | ... | ... |
src/php/php3270.cbp
src/php/php3270.h
| ... | ... | @@ -52,6 +52,9 @@ |
| 52 | 52 | PHP_METHOD(tn3270,disconnect); |
| 53 | 53 | PHP_METHOD(tn3270,isconnected); |
| 54 | 54 | PHP_METHOD(tn3270,isready); |
| 55 | + PHP_METHOD(tn3270,waitforready); | |
| 56 | + PHP_METHOD(tn3270,wait); | |
| 57 | + PHP_METHOD(tn3270,iterate); | |
| 55 | 58 | |
| 56 | 59 | PHP_METHOD(tn3270,pfkey); |
| 57 | 60 | PHP_METHOD(tn3270,pakey); | ... | ... |
src/php/sample.php
| ... | ... | @@ -7,7 +7,8 @@ |
| 7 | 7 | $rc = $host->connect(); |
| 8 | 8 | print("connect() exits with rc=" . $rc . "\n"); |
| 9 | 9 | |
| 10 | - | |
| 10 | + $rc = $host->waitforready(10); | |
| 11 | + print("waitforready() exits with rc=" . $rc . "\n"); | |
| 11 | 12 | |
| 12 | 13 | $rc = $host->disconnect(); |
| 13 | 14 | print("disconnect() exits with rc=" . $rc . "\n"); | ... | ... |
src/plugins/dbus3270/gobject.c
| ... | ... | @@ -109,7 +109,7 @@ void pw3270_dbus_set_host(PW3270Dbus *object, const gchar *uri, DBusGMethodInvoc |
| 109 | 109 | |
| 110 | 110 | g_message("Changing host to \"%s\" by remote request",uri); |
| 111 | 111 | |
| 112 | - dbus_g_method_return(context,lib3270_set_url(pw3270_dbus_get_session_handle(PW3270_DBUS(object)),uri) != NULL); | |
| 112 | + dbus_g_method_return(context,lib3270_set_url(pw3270_dbus_get_session_handle(PW3270_DBUS(object)),uri) == NULL); | |
| 113 | 113 | } |
| 114 | 114 | |
| 115 | 115 | void pw3270_dbus_disconnect(PW3270Dbus *object, DBusGMethodInvocation *context) | ... | ... |