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 | 230 | |
231 | 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 | 241 | clean: |
234 | 242 | |
235 | 243 | @rm -fr $(BINDIR) | ... | ... |
pw3270-php5.cbp
src/get.cc
... | ... | @@ -126,3 +126,53 @@ PHP_METHOD(tn3270, getrevision) |
126 | 126 | trace("String = [%s]",str.c_str()); |
127 | 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 | 43 | zend_function_entry tn3270_methods[] = |
44 | 44 | { |
45 | 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 | 49 | PHP_ME( tn3270, getversion, NULL, ZEND_ACC_PUBLIC | ZEND_ACC_CTOR) |
48 | 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 | 53 | PHP_ME( tn3270, connect, NULL, ZEND_ACC_PUBLIC | ZEND_ACC_CTOR) |
51 | 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 | 57 | PHP_ME( tn3270, isconnected, NULL, ZEND_ACC_PUBLIC | ZEND_ACC_CTOR) |
54 | 58 | PHP_ME( tn3270, isready, NULL, ZEND_ACC_PUBLIC | ZEND_ACC_CTOR) | ... | ... |
src/misc.cc
... | ... | @@ -51,6 +51,8 @@ PHP_METHOD(tn3270, connect) |
51 | 51 | char text[szHost+1]; |
52 | 52 | strncpy(text,host,szHost); |
53 | 53 | text[szHost] = 0; |
54 | + | |
55 | + printf("[%s][%u]\n",text,(int) wait); | |
54 | 56 | rc = obj->hSession->connect(text,(int) wait); |
55 | 57 | } |
56 | 58 | else |
... | ... | @@ -137,3 +139,11 @@ PHP_METHOD(tn3270, action) |
137 | 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 | 48 | |
49 | 49 | // 3270 session methods |
50 | 50 | PHP_METHOD(tn3270,__construct); |
51 | + PHP_METHOD(tn3270,__tostring); | |
52 | + PHP_METHOD(tn3270,__get); | |
53 | + PHP_METHOD(tn3270,__set); | |
51 | 54 | |
52 | 55 | PHP_METHOD(tn3270,getversion); |
53 | 56 | PHP_METHOD(tn3270,getrevision); |
57 | + PHP_METHOD(tn3270,getname); | |
54 | 58 | |
55 | 59 | PHP_METHOD(tn3270,connect); |
56 | 60 | PHP_METHOD(tn3270,disconnect); |
61 | + PHP_METHOD(tn3270,close); | |
57 | 62 | PHP_METHOD(tn3270,isconnected); |
58 | 63 | PHP_METHOD(tn3270,isready); |
59 | 64 | PHP_METHOD(tn3270,waitforready); | ... | ... |
src/set.cc
... | ... | @@ -86,3 +86,18 @@ PHP_METHOD(tn3270, setstringat) |
86 | 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 @@ |
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 | +?> | ... | ... |