Commit 262966b29b7287f1ffbbcee9ce8affdd1e66bd3a

Authored by Perry Werneck
1 parent bccefb08
Exists in master

Refactoring .NET api native module.

src/native/actions.cc
@@ -27,79 +27,105 @@ @@ -27,79 +27,105 @@
27 * 27 *
28 */ 28 */
29 29
  30 + /**
  31 + * @file actions.cc
  32 + *
  33 + * @brief Actions wrapper.
  34 + *
  35 + * @author Perry Werneck <perry.werneck@gmail.com>
  36 + *
  37 + */
  38 +
30 #include "private.h" 39 #include "private.h"
31 40
32 /*---[ Implement ]----------------------------------------------------------------------------------*/ 41 /*---[ Implement ]----------------------------------------------------------------------------------*/
33 42
34 -int tn3270_enter(h3270::session *ses) {  
35 - try {  
36 - return ses->enter();  
37 - } catch(std::exception &e) {  
38 - tn3270_lasterror = e.what();  
39 - return -1; 43 +static int do_action(TN3270::Session *ses, TN3270::Action action) {
  44 +
  45 + if(ses) {
  46 +
  47 + try {
  48 +
  49 + ses->push(action);
  50 + return 0;
  51 +
  52 + } catch(const exception &e) {
  53 +
  54 + tn3270_lasterror = e.what();
  55 + return -1;
  56 +
  57 + }
  58 +
40 } 59 }
  60 +
  61 + return -1;
  62 +
41 } 63 }
42 64
43 -int tn3270_pfkey(h3270::session *ses, int key) {  
44 - try {  
45 - return ses->pfkey(key);  
46 - } catch(std::exception &e) {  
47 - tn3270_lasterror = e.what();  
48 - return -1;  
49 - } 65 +int tn3270_enter(TN3270::Session *ses) {
  66 + return do_action(ses,TN3270::ENTER);
50 } 67 }
51 68
52 -int tn3270_pakey(h3270::session *ses, int key) { 69 +int tn3270_pfkey(TN3270::Session *ses, int key) {
  70 +
53 try { 71 try {
54 - return ses->pakey(key);  
55 - } catch(std::exception &e) { 72 +
  73 + ses->pfkey(key);
  74 + return 0;
  75 +
  76 + } catch(const exception &e) {
  77 +
56 tn3270_lasterror = e.what(); 78 tn3270_lasterror = e.what();
57 - return -1; 79 +
58 } 80 }
  81 + return -1;
  82 +
59 } 83 }
60 84
61 -int tn3270_action(h3270::session *ses, const char *name) { 85 +int tn3270_pakey(TN3270::Session *ses, int key) {
  86 +
62 try { 87 try {
63 - return ses->action(name);  
64 - } catch(std::exception &e) { 88 +
  89 + ses->pakey(key);
  90 + return 0;
  91 +
  92 + } catch(const exception &e) {
  93 +
65 tn3270_lasterror = e.what(); 94 tn3270_lasterror = e.what();
66 - return -1; 95 +
67 } 96 }
  97 + return -1;
68 } 98 }
69 99
70 -int tn3270_erase(h3270::session *ses) { 100 +int tn3270_action(TN3270::Session *ses, const char *name) {
  101 +
71 try { 102 try {
72 - return ses->erase();  
73 - } catch(std::exception &e) { 103 +
  104 + ses->action(name);
  105 + return 0;
  106 +
  107 + } catch(const exception &e) {
  108 +
74 tn3270_lasterror = e.what(); 109 tn3270_lasterror = e.what();
75 - return -1; 110 +
76 } 111 }
  112 + return -1;
  113 +
77 } 114 }
78 115
79 -int tn3270_erase_eof(h3270::session *ses) {  
80 - try {  
81 - return ses->erase_eof();  
82 - } catch(std::exception &e) {  
83 - tn3270_lasterror = e.what();  
84 - return -1;  
85 - } 116 +int tn3270_erase(TN3270::Session *ses) {
  117 + return do_action(ses,TN3270::ERASE);
86 } 118 }
87 119
88 -int tn3270_erase_eol(h3270::session *ses) {  
89 - try {  
90 - return ses->erase_eol();  
91 - } catch(std::exception &e) {  
92 - tn3270_lasterror = e.what();  
93 - return -1;  
94 - } 120 +int tn3270_erase_eof(TN3270::Session *ses) {
  121 + return do_action(ses,TN3270::ERASE_EOF);
95 } 122 }
96 123
97 -int tn3270_erase_input(h3270::session *ses) {  
98 - try {  
99 - return ses->erase_input();  
100 - } catch(std::exception &e) {  
101 - tn3270_lasterror = e.what();  
102 - return -1;  
103 - } 124 +int tn3270_erase_eol(TN3270::Session *ses) {
  125 + return do_action(ses,TN3270::ERASE_EOL);
  126 +}
  127 +
  128 +int tn3270_erase_input(TN3270::Session *ses) {
  129 + return do_action(ses,TN3270::ERASE_INPUT);
104 } 130 }
105 131
src/native/get.cc
@@ -36,17 +36,21 @@ @@ -36,17 +36,21 @@
36 * @brief Obtém a versão da biblioteca. 36 * @brief Obtém a versão da biblioteca.
37 * 37 *
38 */ 38 */
39 - int tn3270_get_version(h3270::session *ses, char* str, int strlen) { 39 + int tn3270_get_version(TN3270::Session *ses, char* str, int strlen) {
40 40
41 if(!ses) { 41 if(!ses) {
42 return -1; 42 return -1;
43 } 43 }
44 44
45 try { 45 try {
46 - strncpy(str,ses->get_version().c_str(),strlen);  
47 - } catch(std::exception &e) { 46 +
  47 + strncpy(str,ses->getVersion().c_str(),strlen);
  48 +
  49 + } catch(const exception &e) {
  50 +
48 tn3270_lasterror = e.what(); 51 tn3270_lasterror = e.what();
49 return -1; 52 return -1;
  53 +
50 } 54 }
51 return 0; 55 return 0;
52 } 56 }
@@ -55,120 +59,133 @@ @@ -55,120 +59,133 @@
55 * @brief Obtém a revisão da biblioteca. 59 * @brief Obtém a revisão da biblioteca.
56 * 60 *
57 */ 61 */
58 - int tn3270_get_revision(h3270::session *ses, char* str, int strlen) { 62 + int tn3270_get_revision(TN3270::Session *ses, char* str, int strlen) {
59 63
60 if(!ses) { 64 if(!ses) {
61 return -1; 65 return -1;
62 } 66 }
63 67
64 try { 68 try {
65 - strncpy(str,ses->get_revision().c_str(),strlen);  
66 - } catch(std::exception &e) { 69 +
  70 + strncpy(str,ses->getRevision().c_str(),strlen);
  71 +
  72 + } catch(const exception &e) {
  73 +
67 tn3270_lasterror = e.what(); 74 tn3270_lasterror = e.what();
68 return -1; 75 return -1;
  76 +
69 } 77 }
70 return 0; 78 return 0;
71 } 79 }
72 80
73 - int tn3270_get_cstate(h3270::session *ses) { 81 + int tn3270_get_cstate(TN3270::Session *ses) {
74 82
75 if(!ses) { 83 if(!ses) {
76 return -1; 84 return -1;
77 } 85 }
78 86
79 - trace_to_file("%s: %d",__FUNCTION__,(int) ses->get_cstate());  
80 -  
81 try { 87 try {
82 - return (int) ses->get_cstate();  
83 - } catch(std::exception &e) { 88 +
  89 + return (int) ses->getConnectionState();
  90 +
  91 + } catch(const exception &e) {
  92 +
84 tn3270_lasterror = e.what(); 93 tn3270_lasterror = e.what();
  94 +
85 } 95 }
86 return -1; 96 return -1;
87 97
88 } 98 }
89 99
90 - int tn3270_get_program_message(h3270::session *ses) { 100 + int tn3270_get_program_message(TN3270::Session *ses) {
91 101
92 if(!ses) { 102 if(!ses) {
93 return -1; 103 return -1;
94 } 104 }
95 105
96 try { 106 try {
97 - return (int) ses->get_program_message();  
98 - } catch(std::exception &e) { 107 +
  108 + return (int) ses->getProgramMessage();
  109 +
  110 + } catch(const exception &e) {
99 tn3270_lasterror = e.what(); 111 tn3270_lasterror = e.what();
100 } 112 }
101 return -1; 113 return -1;
102 114
103 } 115 }
104 116
105 - int tn3270_get_secure(h3270::session *ses) { 117 + int tn3270_get_secure(TN3270::Session *ses) {
106 118
  119 + /*
107 if(!ses) { 120 if(!ses) {
108 return -1; 121 return -1;
109 } 122 }
110 123
111 try { 124 try {
  125 +
112 return (int) ses->get_secure(); 126 return (int) ses->get_secure();
113 - } catch(std::exception &e) { 127 +
  128 + } catch(const exception &e) {
114 tn3270_lasterror = e.what(); 129 tn3270_lasterror = e.what();
115 } 130 }
  131 + */
  132 +
116 return -1; 133 return -1;
117 134
118 } 135 }
119 136
120 - int tn3270_get_width(h3270::session *ses) { 137 + int tn3270_get_width(TN3270::Session *ses) {
121 138
122 if(!ses) { 139 if(!ses) {
123 return 0; 140 return 0;
124 } 141 }
125 142
126 try { 143 try {
127 - return (int) ses->get_width();  
128 - } catch(std::exception &e) { 144 + return (int) ses->getScreenWidth();
  145 + } catch(const exception &e) {
129 tn3270_lasterror = e.what(); 146 tn3270_lasterror = e.what();
130 } 147 }
131 return -1; 148 return -1;
132 149
133 } 150 }
134 151
135 - int tn3270_get_height(h3270::session *ses) { 152 + int tn3270_get_height(TN3270::Session *ses) {
136 153
137 if(!ses) { 154 if(!ses) {
138 return 0; 155 return 0;
139 } 156 }
140 157
141 try { 158 try {
142 - return (int) ses->get_height();  
143 - } catch(std::exception &e) { 159 + return (int) ses->getScreenHeight();
  160 + } catch(const exception &e) {
144 tn3270_lasterror = e.what(); 161 tn3270_lasterror = e.what();
145 } 162 }
146 return -1; 163 return -1;
147 164
148 } 165 }
149 166
150 - int tn3270_get_length(h3270::session *ses) { 167 + int tn3270_get_length(TN3270::Session *ses) {
151 168
152 if(!ses) { 169 if(!ses) {
153 return 0; 170 return 0;
154 } 171 }
155 172
156 try { 173 try {
157 - return (int) ses->get_length();  
158 - } catch(std::exception &e) { 174 + return (int) ses->getScreenLength();
  175 + } catch(const exception &e) {
159 tn3270_lasterror = e.what(); 176 tn3270_lasterror = e.what();
160 } 177 }
161 return -1; 178 return -1;
162 179
163 } 180 }
164 181
165 - int tn3270_get_cursor_addr(h3270::session *ses) { 182 + int tn3270_get_cursor_addr(TN3270::Session *ses) {
166 183
167 if(ses) { 184 if(ses) {
168 185
169 try { 186 try {
170 - return (int) ses->get_cursor_addr();  
171 - } catch(std::exception &e) { 187 + return (int) ses->getCursorAddress();
  188 + } catch(const exception &e) {
172 tn3270_lasterror = e.what(); 189 tn3270_lasterror = e.what();
173 } 190 }
174 191
@@ -177,16 +194,16 @@ @@ -177,16 +194,16 @@
177 194
178 } 195 }
179 196
180 - int tn3270_get_url(h3270::session *ses, char* str, int strlen) { 197 + int tn3270_get_url(TN3270::Session *ses, char* str, int strlen) {
181 198
182 if(ses) { 199 if(ses) {
183 200
184 try { 201 try {
185 202
186 - strncpy(str,ses->get_url().c_str(),strlen); 203 + strncpy(str,ses->getHostURL().c_str(),strlen);
187 return 0; 204 return 0;
188 205
189 - } catch(std::exception &e) { 206 + } catch(const exception &e) {
190 tn3270_lasterror = e.what(); 207 tn3270_lasterror = e.what();
191 } 208 }
192 209
@@ -195,7 +212,7 @@ @@ -195,7 +212,7 @@
195 212
196 } 213 }
197 214
198 - int tn3270_get_error_message(h3270::session *ses, char* str, int strlen) { 215 + int tn3270_get_error_message(TN3270::Session *ses, char* str, int strlen) {
199 216
200 strncpy(str,tn3270_lasterror.c_str(),strlen); 217 strncpy(str,tn3270_lasterror.c_str(),strlen);
201 return 0; 218 return 0;
src/native/init.cc
@@ -41,16 +41,17 @@ @@ -41,16 +41,17 @@
41 * @return Identificador da sessão criada. 41 * @return Identificador da sessão criada.
42 * 42 *
43 */ 43 */
44 - h3270::session * tn3270_create_session(const char *name) {  
45 -  
46 - trace_to_file("%s(%s)",__FUNCTION__,name ? name : ""); 44 + TN3270::Session * tn3270_create_session(const char *name) {
47 45
48 try { 46 try {
49 - return h3270::session::create(name);  
50 - } catch(std::exception &e) { 47 +
  48 + return TN3270::Session::create(name);
  49 +
  50 + } catch(const exception &e) {
  51 +
51 tn3270_lasterror = e.what(); 52 tn3270_lasterror = e.what();
52 - trace_to_file("%s(%s)",__FUNCTION__,e.what());  
53 } 53 }
  54 +
54 return nullptr; 55 return nullptr;
55 } 56 }
56 57
@@ -58,36 +59,18 @@ @@ -58,36 +59,18 @@
58 * @brief Destrói uma sessão. 59 * @brief Destrói uma sessão.
59 * 60 *
60 */ 61 */
61 - int tn3270_destroy_session(h3270::session *ses) {  
62 -  
63 - trace_to_file("%s",__FUNCTION__); 62 + int tn3270_destroy_session(TN3270::Session *ses) {
64 63
65 try { 64 try {
  65 +
66 delete ses; 66 delete ses;
67 - } catch(std::exception &e) { 67 +
  68 + } catch(const exception &e) {
  69 +
68 tn3270_lasterror = e.what(); 70 tn3270_lasterror = e.what();
69 return -1; 71 return -1;
  72 +
70 } 73 }
71 return 0; 74 return 0;
72 } 75 }
73 76
74 -#ifdef ENABLE_TRACE_TO_FILE  
75 - void write_trace(const char *fmt, ...) {  
76 -  
77 - FILE *trace = fopen(PACKAGE_NAME ".trace","a");  
78 - if(trace) {  
79 - va_list arg_ptr;  
80 - va_start(arg_ptr, fmt);  
81 - vfprintf(trace, fmt, arg_ptr);  
82 - fprintf(trace,"\n");  
83 - va_end(arg_ptr);  
84 - fclose(trace);  
85 - }  
86 -#ifdef DEBUG  
87 - else {  
88 - perror(PACKAGE_NAME ".trace");  
89 - }  
90 -#endif // DEBUG  
91 -  
92 - }  
93 -#endif // ENABLE_TRACE_TO_FILE  
src/native/native.cbp 0 → 100644
@@ -0,0 +1,50 @@ @@ -0,0 +1,50 @@
  1 +<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
  2 +<CodeBlocks_project_file>
  3 + <FileVersion major="1" minor="6" />
  4 + <Project>
  5 + <Option title="LIB3270 Native .NET Bindings" />
  6 + <Option makefile_is_custom="1" />
  7 + <Option pch_mode="2" />
  8 + <Option compiler="gcc" />
  9 + <Build>
  10 + <Target title="Debug">
  11 + <Option output=".bin/Debug/LIB3270 Native " prefix_auto="1" extension_auto="1" />
  12 + <Option object_output=".obj/Debug/" />
  13 + <Option type="1" />
  14 + <Option compiler="gcc" />
  15 + <Compiler>
  16 + <Add option="-g" />
  17 + </Compiler>
  18 + </Target>
  19 + <Target title="Release">
  20 + <Option output=".bin/Release/LIB3270 Native " prefix_auto="1" extension_auto="1" />
  21 + <Option object_output=".obj/Release/" />
  22 + <Option type="1" />
  23 + <Option compiler="gcc" />
  24 + <Compiler>
  25 + <Add option="-O2" />
  26 + </Compiler>
  27 + <Linker>
  28 + <Add option="-s" />
  29 + </Linker>
  30 + </Target>
  31 + </Build>
  32 + <Compiler>
  33 + <Add option="-Wall" />
  34 + </Compiler>
  35 + <Unit filename="actions.cc" />
  36 + <Unit filename="get.cc" />
  37 + <Unit filename="init.cc" />
  38 + <Unit filename="network.cc" />
  39 + <Unit filename="private.h" />
  40 + <Unit filename="screen.cc" />
  41 + <Unit filename="set.cc" />
  42 + <Unit filename="windows/resources.rc.in" />
  43 + <Extensions>
  44 + <code_completion />
  45 + <envvars />
  46 + <debugger />
  47 + <lib_finder disable_auto="1" />
  48 + </Extensions>
  49 + </Project>
  50 +</CodeBlocks_project_file>
src/native/network.cc
@@ -31,15 +31,24 @@ @@ -31,15 +31,24 @@
31 31
32 /*---[ Implement ]----------------------------------------------------------------------------------*/ 32 /*---[ Implement ]----------------------------------------------------------------------------------*/
33 33
34 -int tn3270_connect(h3270::session *ses, const char *host, time_t wait) { 34 +int tn3270_connect(TN3270::Session *ses, const char *url, time_t timeout) {
35 35
36 if(ses) { 36 if(ses) {
37 37
38 try { 38 try {
39 - debug("%s(%s,%d)",__FUNCTION__,host,(int) wait);  
40 - return ses->connect(host,wait);  
41 - } catch(std::exception &e) { 39 +
  40 + ses->connect(url);
  41 +
  42 + if(timeout) {
  43 + ses->waitForReady(timeout);
  44 + }
  45 +
  46 + return 0;
  47 +
  48 + } catch(const exception &e) {
  49 +
42 tn3270_lasterror = e.what(); 50 tn3270_lasterror = e.what();
  51 +
43 } 52 }
44 53
45 } 54 }
@@ -47,13 +56,16 @@ int tn3270_connect(h3270::session *ses, const char *host, time_t wait) { @@ -47,13 +56,16 @@ int tn3270_connect(h3270::session *ses, const char *host, time_t wait) {
47 return -1; 56 return -1;
48 } 57 }
49 58
50 -int tn3270_disconnect(h3270::session *ses) { 59 +int tn3270_disconnect(TN3270::Session *ses) {
51 60
52 if(ses) { 61 if(ses) {
53 62
54 try { 63 try {
55 - return ses->disconnect();  
56 - } catch(std::exception &e) { 64 +
  65 + ses->disconnect();
  66 + return 0;
  67 +
  68 + } catch(const exception &e) {
57 tn3270_lasterror = e.what(); 69 tn3270_lasterror = e.what();
58 } 70 }
59 71
@@ -62,13 +74,15 @@ int tn3270_disconnect(h3270::session *ses) { @@ -62,13 +74,15 @@ int tn3270_disconnect(h3270::session *ses) {
62 return -1; 74 return -1;
63 } 75 }
64 76
65 -int tn3270_is_connected(h3270::session *ses) { 77 +int tn3270_is_connected(TN3270::Session *ses) {
66 78
67 if(ses) { 79 if(ses) {
68 80
69 try { 81 try {
70 - return (int) ses->is_connected();  
71 - } catch(std::exception &e) { 82 +
  83 + return (int) (ses->getConnectionState() == TN3270::CONNECTED_TN3270E ? 1 : 0);
  84 +
  85 + } catch(const exception &e) {
72 tn3270_lasterror = e.what(); 86 tn3270_lasterror = e.what();
73 } 87 }
74 88
@@ -77,14 +91,18 @@ int tn3270_is_connected(h3270::session *ses) { @@ -77,14 +91,18 @@ int tn3270_is_connected(h3270::session *ses) {
77 return -1; 91 return -1;
78 } 92 }
79 93
80 -int tn3270_is_ready(h3270::session *ses) { 94 +int tn3270_is_ready(TN3270::Session *ses) {
81 95
82 if(ses) { 96 if(ses) {
83 97
84 try { 98 try {
85 - return (int) ses->is_ready();  
86 - } catch(std::exception &e) { 99 +
  100 + return (int) (ses->getProgramMessage() == TN3270::MESSAGE_NONE ? 1 : 0);
  101 +
  102 + } catch(const exception &e) {
  103 +
87 tn3270_lasterror = e.what(); 104 tn3270_lasterror = e.what();
  105 +
88 } 106 }
89 107
90 } 108 }
@@ -92,13 +110,16 @@ int tn3270_is_ready(h3270::session *ses) { @@ -92,13 +110,16 @@ int tn3270_is_ready(h3270::session *ses) {
92 return -1; 110 return -1;
93 } 111 }
94 112
95 -int tn3270_wait_for_ready(h3270::session *ses, int seconds) { 113 +int tn3270_wait_for_ready(TN3270::Session *ses, int seconds) {
96 114
97 if(ses) { 115 if(ses) {
98 116
99 try { 117 try {
100 - return (int) ses->wait_for_ready(seconds);  
101 - } catch(std::exception &e) { 118 +
  119 + ses->waitForReady(seconds);
  120 + return 0;
  121 +
  122 + } catch(const exception &e) {
102 tn3270_lasterror = e.what(); 123 tn3270_lasterror = e.what();
103 } 124 }
104 125
@@ -107,13 +128,16 @@ int tn3270_wait_for_ready(h3270::session *ses, int seconds) { @@ -107,13 +128,16 @@ int tn3270_wait_for_ready(h3270::session *ses, int seconds) {
107 128
108 } 129 }
109 130
110 -int tn3270_wait(h3270::session *ses, int seconds) { 131 +int tn3270_wait(TN3270::Session *ses, int seconds) {
111 132
112 if(ses) { 133 if(ses) {
113 134
114 try { 135 try {
115 - return (int) ses->wait(seconds);  
116 - } catch(std::exception &e) { 136 +
  137 + ses->wait(seconds);
  138 + return 0;
  139 +
  140 + } catch(const exception &e) {
117 tn3270_lasterror = e.what(); 141 tn3270_lasterror = e.what();
118 } 142 }
119 143
src/native/private.h
@@ -31,6 +31,16 @@ @@ -31,6 +31,16 @@
31 * http://tirania.org/blog/archive/2011/Dec-19.html 31 * http://tirania.org/blog/archive/2011/Dec-19.html
32 * 32 *
33 */ 33 */
  34 +
  35 +/**
  36 + * @file private.h
  37 + *
  38 + * @brief Internal definitions for the .NET Native module.
  39 + *
  40 + * @author Perry Werneck <perry.werneck@gmail.com>
  41 + *
  42 + */
  43 +
34 #ifndef PRIVATE_H_INCLUDED 44 #ifndef PRIVATE_H_INCLUDED
35 45
36 #define PRIVATE_H_INCLUDED 46 #define PRIVATE_H_INCLUDED
@@ -65,77 +75,82 @@ @@ -65,77 +75,82 @@
65 #define debug( fmt, ... ) /* */ 75 #define debug( fmt, ... ) /* */
66 #endif // DEBUG 76 #endif // DEBUG
67 77
  78 + /*
68 #ifdef ENABLE_TRACE_TO_FILE 79 #ifdef ENABLE_TRACE_TO_FILE
69 DLL_PRIVATE void write_trace(const char *fmt, ...); 80 DLL_PRIVATE void write_trace(const char *fmt, ...);
70 - #define trace_to_file( ... ) write_trace(__VA_ARGS__) 81 + #define trace( ... ) write_trace(__VA_ARGS__)
71 #else 82 #else
72 - #define trace_to_file( ... ) /* */ 83 + #define trace( ... )
73 #endif // ENABLE_TRACE_TO_FILE 84 #endif // ENABLE_TRACE_TO_FILE
  85 + */
74 86
75 - #include <pw3270/pw3270cpp.h> 87 + #include <lib3270/ipc.h>
76 #include <cerrno> 88 #include <cerrno>
77 #include <cstring> 89 #include <cstring>
78 90
79 - DLL_PRIVATE std::string tn3270_lasterror; 91 + using std::string;
  92 + using std::exception;
  93 +
  94 + DLL_PRIVATE string tn3270_lasterror;
80 95
81 extern "C" { 96 extern "C" {
82 97
83 - DLL_PUBLIC h3270::session * tn3270_create_session(const char *name); 98 + DLL_PUBLIC TN3270::Session * tn3270_create_session(const char *name);
84 99
85 - DLL_PUBLIC int tn3270_destroy_session(h3270::session *ses); 100 + DLL_PUBLIC int tn3270_destroy_session(TN3270::Session *ses);
86 101
87 - DLL_PUBLIC int tn3270_get_version(h3270::session *ses, char* str, int strlen);  
88 - DLL_PUBLIC int tn3270_get_revision(h3270::session *ses, char* str, int strlen); 102 + DLL_PUBLIC int tn3270_get_version(TN3270::Session *ses, char* str, int strlen);
  103 + DLL_PUBLIC int tn3270_get_revision(TN3270::Session *ses, char* str, int strlen);
89 104
90 - DLL_PUBLIC int tn3270_connect(h3270::session *ses, const char *host, time_t wait);  
91 - DLL_PUBLIC int tn3270_disconnect(h3270::session *ses);  
92 - DLL_PUBLIC int tn3270_is_connected(h3270::session *ses);  
93 - DLL_PUBLIC int tn3270_is_ready(h3270::session *ses); 105 + DLL_PUBLIC int tn3270_connect(TN3270::Session *ses, const char *host, time_t wait);
  106 + DLL_PUBLIC int tn3270_disconnect(TN3270::Session *ses);
  107 + DLL_PUBLIC int tn3270_is_connected(TN3270::Session *ses);
  108 + DLL_PUBLIC int tn3270_is_ready(TN3270::Session *ses);
94 109
95 - DLL_PUBLIC int tn3270_set_url(h3270::session *ses, const char *url);  
96 - DLL_PUBLIC int tn3270_get_url(h3270::session *ses, char* str, int strlen); 110 + DLL_PUBLIC int tn3270_set_url(TN3270::Session *ses, const char *url);
  111 + DLL_PUBLIC int tn3270_get_url(TN3270::Session *ses, char* str, int strlen);
97 112
98 - DLL_PUBLIC int tn3270_set_error_message(h3270::session *ses, const char *url);  
99 - DLL_PUBLIC int tn3270_get_error_message(h3270::session *ses, char* str, int strlen); 113 + DLL_PUBLIC int tn3270_set_error_message(TN3270::Session *ses, const char *url);
  114 + DLL_PUBLIC int tn3270_get_error_message(TN3270::Session *ses, char* str, int strlen);
100 115
101 - DLL_PUBLIC int tn3270_set_cursor_addr(h3270::session *ses, int addr);  
102 - DLL_PUBLIC int tn3270_get_cursor_addr(h3270::session *ses); 116 + DLL_PUBLIC int tn3270_set_cursor_addr(TN3270::Session *ses, int addr);
  117 + DLL_PUBLIC int tn3270_get_cursor_addr(TN3270::Session *ses);
103 118
104 - DLL_PUBLIC int tn3270_action(h3270::session *ses, const char *name); 119 + DLL_PUBLIC int tn3270_action(TN3270::Session *ses, const char *name);
105 120
106 - DLL_PUBLIC int tn3270_erase(h3270::session *ses);  
107 - DLL_PUBLIC int tn3270_erase_eof(h3270::session *ses);  
108 - DLL_PUBLIC int tn3270_erase_eol(h3270::session *ses);  
109 - DLL_PUBLIC int tn3270_erase_input(h3270::session *ses); 121 + DLL_PUBLIC int tn3270_erase(TN3270::Session *ses);
  122 + DLL_PUBLIC int tn3270_erase_eof(TN3270::Session *ses);
  123 + DLL_PUBLIC int tn3270_erase_eol(TN3270::Session *ses);
  124 + DLL_PUBLIC int tn3270_erase_input(TN3270::Session *ses);
110 125
111 - DLL_PUBLIC int tn3270_wait_for_ready(h3270::session *ses, int seconds);  
112 - DLL_PUBLIC int tn3270_wait(h3270::session *ses, int seconds); 126 + DLL_PUBLIC int tn3270_wait_for_ready(TN3270::Session *ses, int seconds);
  127 + DLL_PUBLIC int tn3270_wait(TN3270::Session *ses, int seconds);
113 128
114 - DLL_PUBLIC int tn3270_get_cstate(h3270::session *ses);  
115 - DLL_PUBLIC int tn3270_get_program_message(h3270::session *ses);  
116 - DLL_PUBLIC int tn3270_get_secure(h3270::session *ses); 129 + DLL_PUBLIC int tn3270_get_cstate(TN3270::Session *ses);
  130 + DLL_PUBLIC int tn3270_get_program_message(TN3270::Session *ses);
  131 + DLL_PUBLIC int tn3270_get_secure(TN3270::Session *ses);
117 132
118 - DLL_PUBLIC int tn3270_get_contents(h3270::session *ses, char* str, int strlen);  
119 - DLL_PUBLIC int tn3270_get_string(h3270::session *ses, int addr, char* str, int strlen);  
120 - DLL_PUBLIC int tn3270_get_string_at(h3270::session *ses, int row, int col, char* str, int strlen); 133 + DLL_PUBLIC int tn3270_get_contents(TN3270::Session *ses, char* str, int strlen);
  134 + DLL_PUBLIC int tn3270_get_string(TN3270::Session *ses, int addr, char* str, int strlen);
  135 + DLL_PUBLIC int tn3270_get_string_at(TN3270::Session *ses, int row, int col, char* str, int strlen);
121 136
122 - DLL_PUBLIC int tn3270_set_string_at(h3270::session *ses, int row, int col, const char* str); 137 + DLL_PUBLIC int tn3270_set_string_at(TN3270::Session *ses, int row, int col, const char* str);
123 138
124 - DLL_PUBLIC int tn3270_wait_for_string_at(h3270::session *ses, int row, int col, const char *key, int timeout);  
125 - DLL_PUBLIC int tn3270_cmp_string_at(h3270::session *ses, int row, int col, const char* str); 139 + DLL_PUBLIC int tn3270_wait_for_string_at(TN3270::Session *ses, int row, int col, const char *key, int timeout);
  140 + DLL_PUBLIC int tn3270_cmp_string_at(TN3270::Session *ses, int row, int col, const char* str);
126 141
127 - DLL_PUBLIC int tn3270_set_unlock_delay(h3270::session *ses, int ms);  
128 - DLL_PUBLIC int tn3270_set_cursor_position(h3270::session *ses, int row, int col); 142 + DLL_PUBLIC int tn3270_set_unlock_delay(TN3270::Session *ses, int ms);
  143 + DLL_PUBLIC int tn3270_set_cursor_position(TN3270::Session *ses, int row, int col);
129 144
130 - DLL_PUBLIC int tn3270_enter(h3270::session *ses);  
131 - DLL_PUBLIC int tn3270_pfkey(h3270::session *ses, int key);  
132 - DLL_PUBLIC int tn3270_pakey(h3270::session *ses, int key); 145 + DLL_PUBLIC int tn3270_enter(TN3270::Session *ses);
  146 + DLL_PUBLIC int tn3270_pfkey(TN3270::Session *ses, int key);
  147 + DLL_PUBLIC int tn3270_pakey(TN3270::Session *ses, int key);
133 148
134 - DLL_PUBLIC int tn3270_get_width(h3270::session *ses);  
135 - DLL_PUBLIC int tn3270_get_height(h3270::session *ses);  
136 - DLL_PUBLIC int tn3270_get_length(h3270::session *ses); 149 + DLL_PUBLIC int tn3270_get_width(TN3270::Session *ses);
  150 + DLL_PUBLIC int tn3270_get_height(TN3270::Session *ses);
  151 + DLL_PUBLIC int tn3270_get_length(TN3270::Session *ses);
137 152
138 - DLL_PUBLIC int tn3270_set_charset(h3270::session *ses, const char* str); 153 + DLL_PUBLIC int tn3270_set_charset(TN3270::Session *ses, const char* str);
139 154
140 } 155 }
141 156
src/native/screen.cc
@@ -31,7 +31,7 @@ @@ -31,7 +31,7 @@
31 31
32 /*---[ Implement ]----------------------------------------------------------------------------------*/ 32 /*---[ Implement ]----------------------------------------------------------------------------------*/
33 33
34 -int tn3270_get_contents(h3270::session *ses, char* str, int sz) { 34 +int tn3270_get_contents(TN3270::Session *ses, char* str, int sz) {
35 35
36 if(!ses) { 36 if(!ses) {
37 return -1; 37 return -1;
@@ -39,7 +39,7 @@ int tn3270_get_contents(h3270::session *ses, char* str, int sz) { @@ -39,7 +39,7 @@ int tn3270_get_contents(h3270::session *ses, char* str, int sz) {
39 39
40 try { 40 try {
41 41
42 - std::string contents = ses->get_contents(); 42 + std::string contents = ses->toString(0,sz);
43 43
44 memset(str,0,sz); 44 memset(str,0,sz);
45 strncpy(str,contents.c_str(),sz); 45 strncpy(str,contents.c_str(),sz);
@@ -48,7 +48,7 @@ int tn3270_get_contents(h3270::session *ses, char* str, int sz) { @@ -48,7 +48,7 @@ int tn3270_get_contents(h3270::session *ses, char* str, int sz) {
48 return contents.size(); 48 return contents.size();
49 } 49 }
50 50
51 - } catch(std::exception &e) { 51 + } catch(const exception &e) {
52 tn3270_lasterror = e.what(); 52 tn3270_lasterror = e.what();
53 return -1; 53 return -1;
54 } 54 }
@@ -57,7 +57,7 @@ int tn3270_get_contents(h3270::session *ses, char* str, int sz) { @@ -57,7 +57,7 @@ int tn3270_get_contents(h3270::session *ses, char* str, int sz) {
57 57
58 } 58 }
59 59
60 -int tn3270_get_string(h3270::session *ses, int addr, char* str, int strlen) { 60 +int tn3270_get_string(TN3270::Session *ses, int addr, char* str, int strlen) {
61 61
62 if(!ses) { 62 if(!ses) {
63 return -1; 63 return -1;
@@ -65,8 +65,8 @@ int tn3270_get_string(h3270::session *ses, int addr, char* str, int strlen) { @@ -65,8 +65,8 @@ int tn3270_get_string(h3270::session *ses, int addr, char* str, int strlen) {
65 65
66 try { 66 try {
67 memset(str,0,strlen); 67 memset(str,0,strlen);
68 - strncpy(str,ses->get_string(addr,strlen).c_str(),strlen);  
69 - } catch(std::exception &e) { 68 + strncpy(str,ses->toString(addr,strlen).c_str(),strlen);
  69 + } catch(const exception &e) {
70 tn3270_lasterror = e.what(); 70 tn3270_lasterror = e.what();
71 return -1; 71 return -1;
72 } 72 }
@@ -74,67 +74,76 @@ int tn3270_get_string(h3270::session *ses, int addr, char* str, int strlen) { @@ -74,67 +74,76 @@ int tn3270_get_string(h3270::session *ses, int addr, char* str, int strlen) {
74 return 0; 74 return 0;
75 } 75 }
76 76
77 -int tn3270_get_string_at(h3270::session *ses, int row, int col, char* str, int sz) { 77 +int tn3270_get_string_at(TN3270::Session *ses, int row, int col, char* str, int sz) {
78 78
79 if(!ses) { 79 if(!ses) {
80 return -1; 80 return -1;
81 } 81 }
82 82
83 try { 83 try {
  84 +
84 memset(str,0,sz+1); 85 memset(str,0,sz+1);
85 - strncpy(str,ses->get_string_at(row,col,sz).c_str(),sz);  
86 - trace_to_file("%s(%d,%d,%d):\n%s\n",__FUNCTION__,row,col,sz,str);  
87 - } catch(std::exception &e) { 86 + strncpy(str,ses->toString(row,col,(size_t) sz).c_str(),sz);
  87 +
  88 + } catch(const exception &e) {
88 tn3270_lasterror = e.what(); 89 tn3270_lasterror = e.what();
89 return -1; 90 return -1;
90 } 91 }
91 return (int) strlen(str); 92 return (int) strlen(str);
92 } 93 }
93 94
94 -int tn3270_set_string_at(h3270::session *ses, int row, int col, const char* str) { 95 +int tn3270_set_string_at(TN3270::Session *ses, int row, int col, const char* str) {
95 96
96 if(!ses) { 97 if(!ses) {
97 return -1; 98 return -1;
98 } 99 }
99 100
100 try { 101 try {
101 - trace_to_file("%s(%d,%d):\n%s\n",__FUNCTION__,row,col,str);  
102 - debug("%s(%d,%d,\"%s\")",__FUNCTION__,row,col,str);  
103 - ses->set_string_at(row,col,str);  
104 - } catch(std::exception &e) { 102 +
  103 + ses->push(row,col,str);
  104 +
  105 + } catch(const exception &e) {
105 tn3270_lasterror = e.what(); 106 tn3270_lasterror = e.what();
106 return -1; 107 return -1;
107 } 108 }
108 return 0; 109 return 0;
109 } 110 }
110 111
111 -int tn3270_wait_for_string_at(h3270::session *ses, int row, int col, const char *key, int timeout) { 112 +int tn3270_wait_for_string_at(TN3270::Session *ses, int row, int col, const char *key, int timeout) {
112 113
  114 + /*
113 if(ses) { 115 if(ses) {
114 116
115 try { 117 try {
116 - return ses->wait_for_string_at(row,col,key,timeout);  
117 - } catch(std::exception &e) { 118 +
  119 + return ses->wait(row,col,key,timeout);
  120 +
  121 + } catch(const exception &e) {
  122 +
118 tn3270_lasterror = e.what(); 123 tn3270_lasterror = e.what();
  124 +
119 } 125 }
120 126
121 } 127 }
  128 + */
122 129
123 return -1; 130 return -1;
124 131
125 } 132 }
126 133
127 -int tn3270_cmp_string_at(h3270::session *ses, int row, int col, const char* str) { 134 +int tn3270_cmp_string_at(TN3270::Session *ses, int row, int col, const char* str) {
128 135
  136 + /*
129 if(ses) { 137 if(ses) {
130 138
131 try { 139 try {
132 return ses->cmp_string_at(row,col,str); 140 return ses->cmp_string_at(row,col,str);
133 - } catch(std::exception &e) { 141 + } catch(const exception &e) {
134 tn3270_lasterror = e.what(); 142 tn3270_lasterror = e.what();
135 } 143 }
136 144
137 } 145 }
  146 + */
138 147
139 return -1; 148 return -1;
140 } 149 }
src/native/set.cc
@@ -31,64 +31,68 @@ @@ -31,64 +31,68 @@
31 31
32 /*---[ Implement ]----------------------------------------------------------------------------------*/ 32 /*---[ Implement ]----------------------------------------------------------------------------------*/
33 33
34 -int tn3270_set_unlock_delay(h3270::session *ses, int ms) { 34 +int tn3270_set_unlock_delay(TN3270::Session *ses, int ms) {
35 try { 35 try {
36 - ses->set_unlock_delay((unsigned short) ms);  
37 - } catch(std::exception &e) { 36 + ses->setUnlockDelay((unsigned short) ms);
  37 + } catch(const exception &e) {
38 tn3270_lasterror = e.what(); 38 tn3270_lasterror = e.what();
39 return -1; 39 return -1;
40 } 40 }
41 return 0; 41 return 0;
42 } 42 }
43 43
44 -int tn3270_set_cursor_position(h3270::session *ses, int row, int col) { 44 +int tn3270_set_cursor_position(TN3270::Session *ses, int row, int col) {
45 try { 45 try {
46 - ses->set_cursor_position(row,col);  
47 - } catch(std::exception &e) { 46 + ses->setCursor((unsigned short) row, (unsigned short) col);
  47 + } catch(const exception &e) {
48 tn3270_lasterror = e.what(); 48 tn3270_lasterror = e.what();
49 return -1; 49 return -1;
50 } 50 }
51 return 0; 51 return 0;
52 } 52 }
53 53
54 -int tn3270_set_cursor_addr(h3270::session *ses, int addr) { 54 +int tn3270_set_cursor_addr(TN3270::Session *ses, int addr) {
55 try { 55 try {
56 - ses->set_cursor_addr(addr);  
57 - } catch(std::exception &e) { 56 + ses->setCursor((unsigned short) addr);
  57 + } catch(const exception &e) {
58 tn3270_lasterror = e.what(); 58 tn3270_lasterror = e.what();
59 return -1; 59 return -1;
60 } 60 }
61 return 0; 61 return 0;
62 } 62 }
63 63
64 -int tn3270_set_charset(h3270::session *ses, const char* str) {  
65 -  
66 - if(!ses) {  
67 - return EINVAL;  
68 - } 64 +int tn3270_set_charset(TN3270::Session *ses, const char* str) {
69 65
70 try { 66 try {
71 - trace_to_file("%s: \"%s\" -> \"%s\"",__FUNCTION__,ses->get_display_charset().c_str(),str);  
72 - ses->set_display_charset(NULL, str);  
73 - } catch(std::exception &e) { 67 +
  68 + ses->setCharSet(str);
  69 +
  70 + } catch(const exception &e) {
  71 +
74 tn3270_lasterror = e.what(); 72 tn3270_lasterror = e.what();
75 return -1; 73 return -1;
  74 +
76 } 75 }
  76 +
77 return 0; 77 return 0;
  78 +
78 } 79 }
79 80
80 -int tn3270_set_url(h3270::session *ses, const char *url) { 81 +int tn3270_set_url(TN3270::Session *ses, const char *url) {
  82 +
81 try { 83 try {
82 - debug("%s(%s)",__FUNCTION__,url);  
83 - ses->set_url(url);  
84 - } catch(std::exception &e) { 84 +
  85 + ses->setHostURL(url);
  86 +
  87 + } catch(const exception &e) {
85 tn3270_lasterror = e.what(); 88 tn3270_lasterror = e.what();
86 return -1; 89 return -1;
87 } 90 }
  91 +
88 return 0; 92 return 0;
89 } 93 }
90 94
91 -int tn3270_set_error_message(h3270::session *ses, const char *str) { 95 +int tn3270_set_error_message(TN3270::Session *ses, const char *str) {
92 tn3270_lasterror = str; 96 tn3270_lasterror = str;
93 return 0; 97 return 0;
94 } 98 }