Commit 96b09fef1737bfafd9309adb38051d3105e65d24
1 parent
b8868eed
Exists in
master
Atualizando módulo PHP para permitir persistência nas sessões usando o módulo de serviço.
Showing
8 changed files
with
122 additions
and
0 deletions
Show diff stats
Makefile.in
| @@ -230,6 +230,14 @@ run: \ | @@ -230,6 +230,14 @@ run: \ | ||
| 230 | 230 | ||
| 231 | php -d extension=$(BINDBG)/$(LIBNAME) testprograms/version.php | 231 | php -d extension=$(BINDBG)/$(LIBNAME) testprograms/version.php |
| 232 | 232 | ||
| 233 | +cleanDebug: | ||
| 234 | + @rm -fr $(OBJDBG) | ||
| 235 | + @rm -fr $(BINDBG) | ||
| 236 | + | ||
| 237 | +cleanRelease: | ||
| 238 | + @rm -fr $(OBJRLS) | ||
| 239 | + @rm -fr $(BINRLS) | ||
| 240 | + | ||
| 233 | clean: | 241 | clean: |
| 234 | 242 | ||
| 235 | @rm -fr $(BINDIR) | 243 | @rm -fr $(BINDIR) |
pw3270-php5.cbp
| @@ -3,6 +3,7 @@ | @@ -3,6 +3,7 @@ | ||
| 3 | <FileVersion major="1" minor="6" /> | 3 | <FileVersion major="1" minor="6" /> |
| 4 | <Project> | 4 | <Project> |
| 5 | <Option title="PHP5 Bindings for pw3270/lib3270" /> | 5 | <Option title="PHP5 Bindings for pw3270/lib3270" /> |
| 6 | + <Option makefile_is_custom="1" /> | ||
| 6 | <Option pch_mode="2" /> | 7 | <Option pch_mode="2" /> |
| 7 | <Option compiler="gcc" /> | 8 | <Option compiler="gcc" /> |
| 8 | <Build> | 9 | <Build> |
src/get.cc
| @@ -126,3 +126,53 @@ PHP_METHOD(tn3270, getrevision) | @@ -126,3 +126,53 @@ PHP_METHOD(tn3270, getrevision) | ||
| 126 | trace("String = [%s]",str.c_str()); | 126 | trace("String = [%s]",str.c_str()); |
| 127 | RETURN_STRING(str.c_str(),1); | 127 | RETURN_STRING(str.c_str(),1); |
| 128 | } | 128 | } |
| 129 | + | ||
| 130 | +PHP_METHOD(tn3270, getname) | ||
| 131 | +{ | ||
| 132 | + tn3270_object * obj = (tn3270_object *) zend_object_store_get_object(getThis() TSRMLS_CC); | ||
| 133 | + | ||
| 134 | + string str = obj->hSession->get_session_name(); | ||
| 135 | + | ||
| 136 | + trace("String = [%s]",str.c_str()); | ||
| 137 | + RETURN_STRING(str.c_str(),1); | ||
| 138 | +} | ||
| 139 | + | ||
| 140 | +PHP_METHOD(tn3270, __tostring) | ||
| 141 | +{ | ||
| 142 | + tn3270_object * obj = (tn3270_object *) zend_object_store_get_object(getThis() TSRMLS_CC); | ||
| 143 | + string str; | ||
| 144 | + | ||
| 145 | + try { | ||
| 146 | + | ||
| 147 | + str = obj->hSession->get_contents(); | ||
| 148 | + | ||
| 149 | + } catch(std::exception &e) { | ||
| 150 | + | ||
| 151 | + str.clear(); | ||
| 152 | + | ||
| 153 | + } | ||
| 154 | + | ||
| 155 | + trace("String = [%s]",str.c_str()); | ||
| 156 | + RETURN_STRING(str.c_str(),1); | ||
| 157 | +} | ||
| 158 | + | ||
| 159 | +PHP_METHOD(tn3270, __get) | ||
| 160 | +{ | ||
| 161 | + tn3270_object * obj = (tn3270_object *) zend_object_store_get_object(getThis() TSRMLS_CC); | ||
| 162 | + const char * text; | ||
| 163 | + int szText; | ||
| 164 | + | ||
| 165 | + if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &text, &szText) == FAILURE) | ||
| 166 | + RETURN_NULL(); | ||
| 167 | + | ||
| 168 | + if(!strncasecmp("online",text,szText)) { | ||
| 169 | + RETURN_BOOL(obj->hSession->is_connected()); | ||
| 170 | + } else if(!strncasecmp("ready",text,szText)) { | ||
| 171 | + RETURN_BOOL(obj->hSession->is_ready()); | ||
| 172 | + } else if(!strncasecmp("name",text,szText)) { | ||
| 173 | + string str = obj->hSession->get_session_name(); | ||
| 174 | + RETURN_STRING(str.c_str(),1); | ||
| 175 | + } | ||
| 176 | + | ||
| 177 | + RETURN_BOOL(0); | ||
| 178 | +} |
src/main.cc
| @@ -43,12 +43,16 @@ static zend_object_handlers tn3270_object_handlers; | @@ -43,12 +43,16 @@ static zend_object_handlers tn3270_object_handlers; | ||
| 43 | zend_function_entry tn3270_methods[] = | 43 | zend_function_entry tn3270_methods[] = |
| 44 | { | 44 | { |
| 45 | PHP_ME( tn3270, __construct, NULL, ZEND_ACC_PUBLIC | ZEND_ACC_CTOR) | 45 | PHP_ME( tn3270, __construct, NULL, ZEND_ACC_PUBLIC | ZEND_ACC_CTOR) |
| 46 | + PHP_ME( tn3270, __tostring, NULL, ZEND_ACC_PUBLIC | ZEND_ACC_CTOR) | ||
| 47 | + PHP_ME( tn3270, __get, NULL, ZEND_ACC_PUBLIC | ZEND_ACC_CTOR) | ||
| 46 | 48 | ||
| 47 | PHP_ME( tn3270, getversion, NULL, ZEND_ACC_PUBLIC | ZEND_ACC_CTOR) | 49 | PHP_ME( tn3270, getversion, NULL, ZEND_ACC_PUBLIC | ZEND_ACC_CTOR) |
| 48 | PHP_ME( tn3270, getrevision, NULL, ZEND_ACC_PUBLIC | ZEND_ACC_CTOR) | 50 | PHP_ME( tn3270, getrevision, NULL, ZEND_ACC_PUBLIC | ZEND_ACC_CTOR) |
| 51 | + PHP_ME( tn3270, getname, NULL, ZEND_ACC_PUBLIC | ZEND_ACC_CTOR) | ||
| 49 | 52 | ||
| 50 | PHP_ME( tn3270, connect, NULL, ZEND_ACC_PUBLIC | ZEND_ACC_CTOR) | 53 | PHP_ME( tn3270, connect, NULL, ZEND_ACC_PUBLIC | ZEND_ACC_CTOR) |
| 51 | PHP_ME( tn3270, disconnect, NULL, ZEND_ACC_PUBLIC | ZEND_ACC_CTOR) | 54 | PHP_ME( tn3270, disconnect, NULL, ZEND_ACC_PUBLIC | ZEND_ACC_CTOR) |
| 55 | + PHP_ME( tn3270, close, NULL, ZEND_ACC_PUBLIC | ZEND_ACC_CTOR) | ||
| 52 | 56 | ||
| 53 | PHP_ME( tn3270, isconnected, NULL, ZEND_ACC_PUBLIC | ZEND_ACC_CTOR) | 57 | PHP_ME( tn3270, isconnected, NULL, ZEND_ACC_PUBLIC | ZEND_ACC_CTOR) |
| 54 | PHP_ME( tn3270, isready, NULL, ZEND_ACC_PUBLIC | ZEND_ACC_CTOR) | 58 | PHP_ME( tn3270, isready, NULL, ZEND_ACC_PUBLIC | ZEND_ACC_CTOR) |
src/misc.cc
| @@ -51,6 +51,8 @@ PHP_METHOD(tn3270, connect) | @@ -51,6 +51,8 @@ PHP_METHOD(tn3270, connect) | ||
| 51 | char text[szHost+1]; | 51 | char text[szHost+1]; |
| 52 | strncpy(text,host,szHost); | 52 | strncpy(text,host,szHost); |
| 53 | text[szHost] = 0; | 53 | text[szHost] = 0; |
| 54 | + | ||
| 55 | + printf("[%s][%u]\n",text,(int) wait); | ||
| 54 | rc = obj->hSession->connect(text,(int) wait); | 56 | rc = obj->hSession->connect(text,(int) wait); |
| 55 | } | 57 | } |
| 56 | else | 58 | else |
| @@ -137,3 +139,11 @@ PHP_METHOD(tn3270, action) | @@ -137,3 +139,11 @@ PHP_METHOD(tn3270, action) | ||
| 137 | RETURN_LONG(obj->hSession->action(buffer)); | 139 | RETURN_LONG(obj->hSession->action(buffer)); |
| 138 | 140 | ||
| 139 | } | 141 | } |
| 142 | + | ||
| 143 | +PHP_METHOD(tn3270, close) | ||
| 144 | +{ | ||
| 145 | + tn3270_object * obj = (tn3270_object *) zend_object_store_get_object(getThis() TSRMLS_CC); | ||
| 146 | + | ||
| 147 | + RETURN_LONG(obj->hSession->close()); | ||
| 148 | +} | ||
| 149 | + |
src/php3270.h.in
| @@ -48,12 +48,17 @@ | @@ -48,12 +48,17 @@ | ||
| 48 | 48 | ||
| 49 | // 3270 session methods | 49 | // 3270 session methods |
| 50 | PHP_METHOD(tn3270,__construct); | 50 | PHP_METHOD(tn3270,__construct); |
| 51 | + PHP_METHOD(tn3270,__tostring); | ||
| 52 | + PHP_METHOD(tn3270,__get); | ||
| 53 | + PHP_METHOD(tn3270,__set); | ||
| 51 | 54 | ||
| 52 | PHP_METHOD(tn3270,getversion); | 55 | PHP_METHOD(tn3270,getversion); |
| 53 | PHP_METHOD(tn3270,getrevision); | 56 | PHP_METHOD(tn3270,getrevision); |
| 57 | + PHP_METHOD(tn3270,getname); | ||
| 54 | 58 | ||
| 55 | PHP_METHOD(tn3270,connect); | 59 | PHP_METHOD(tn3270,connect); |
| 56 | PHP_METHOD(tn3270,disconnect); | 60 | PHP_METHOD(tn3270,disconnect); |
| 61 | + PHP_METHOD(tn3270,close); | ||
| 57 | PHP_METHOD(tn3270,isconnected); | 62 | PHP_METHOD(tn3270,isconnected); |
| 58 | PHP_METHOD(tn3270,isready); | 63 | PHP_METHOD(tn3270,isready); |
| 59 | PHP_METHOD(tn3270,waitforready); | 64 | PHP_METHOD(tn3270,waitforready); |
src/set.cc
| @@ -86,3 +86,18 @@ PHP_METHOD(tn3270, setstringat) | @@ -86,3 +86,18 @@ PHP_METHOD(tn3270, setstringat) | ||
| 86 | RETURN_LONG(obj->hSession->set_string_at(row,col,buffer)); | 86 | RETURN_LONG(obj->hSession->set_string_at(row,col,buffer)); |
| 87 | } | 87 | } |
| 88 | 88 | ||
| 89 | +PHP_METHOD(tn3270, __set) | ||
| 90 | +{ | ||
| 91 | + /* | ||
| 92 | + tn3270_object * obj = (tn3270_object *) zend_object_store_get_object(getThis() TSRMLS_CC); | ||
| 93 | + const char * name; | ||
| 94 | + int szName; | ||
| 95 | + const char * text; | ||
| 96 | + int szText; | ||
| 97 | + | ||
| 98 | + if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ss", &name, &szName, &text, &szText) == FAILURE) | ||
| 99 | + RETURN_NULL(); | ||
| 100 | + */ | ||
| 101 | + | ||
| 102 | + RETURN_NULL(); | ||
| 103 | +} |
| @@ -0,0 +1,29 @@ | @@ -0,0 +1,29 @@ | ||
| 1 | +<?php | ||
| 2 | + | ||
| 3 | + printf("PW3270 Connection test\n"); | ||
| 4 | + | ||
| 5 | + $host = new tn3270("service://?"); | ||
| 6 | + | ||
| 7 | + echo "Sessão: " . $host->name . "\n"; | ||
| 8 | + | ||
| 9 | + $rc = $host->connect("tn3270://fandezhi.efglobe.com:23",10); | ||
| 10 | + if($rc != 0) { | ||
| 11 | + die("Connection failed, rc=" . $rc . "\n"); | ||
| 12 | + } | ||
| 13 | + | ||
| 14 | + $rc = $host->waitforready(10); | ||
| 15 | + if($rc != 0) { | ||
| 16 | + die("Host is not ready, rc=" . $rc . "\n"); | ||
| 17 | + } | ||
| 18 | + | ||
| 19 | + echo "Connected: " . ($host->online ? "Yes" : "No") . "\n"; | ||
| 20 | + echo "Ready: " . ($host->ready ? "Yes" : "No") . "\n"; | ||
| 21 | + | ||
| 22 | + echo "Contents:\n" . $host . "\n"; | ||
| 23 | + | ||
| 24 | + $host->disconnect(); | ||
| 25 | + $host->close(); | ||
| 26 | + | ||
| 27 | + die("Success!!\n"); | ||
| 28 | + | ||
| 29 | +?> |