Commit 452df2c70445c3ad7c1fdfad7015d6da9aac5c29

Authored by perry.werneck@gmail.com
1 parent 05094bbe

Implementando plugin hllapi

po/pt_BR.po
... ... @@ -5,7 +5,7 @@ msgid ""
5 5 msgstr ""
6 6 "Project-Id-Version: pw3270 5.0\n"
7 7 "Report-Msgid-Bugs-To: \n"
8   -"POT-Creation-Date: 2012-09-17 09:45-0300\n"
  8 +"POT-Creation-Date: 2012-09-17 14:31-0300\n"
9 9 "PO-Revision-Date: 2012-09-14 14:32-0300\n"
10 10 "Last-Translator: Perry Werneck <perry.werneck@gmail.com>\n"
11 11 "Language-Team: Português <perry.werneck@gmail.com>\n"
... ...
src/include/pw3270/hllapi.h
... ... @@ -41,11 +41,14 @@ extern &quot;C&quot; {
41 41 #define HLLAPI_REQUEST_ID 0x01
42 42 #define HLLAPI_MAXLENGTH 32768
43 43  
44   - #define HLLAPI_CMD_CONNECTPS 1 /**< connect presentation space */
45   - #define HLLAPI_CMD_INPUTSTRING 3 /**< send string */
46   - #define HLLAPI_CMD_COPYPSTOSTR 8 /**< copy presentation space to string */
47   - #define HLLAPI_CMD_SETCURSOR 40 /**< set cursor */
48   - #define HLLAPI_CMD_GETREVISION 2000 /**< Get lib3270 revision */
  44 + #define HLLAPI_CMD_CONNECTPS 1 /**< connect presentation space */
  45 + #define HLLAPI_CMD_DISCONNECTPS 2 /**< disconnect presentation space */
  46 + #define HLLAPI_CMD_INPUTSTRING 3 /**< send string */
  47 + #define HLLAPI_CMD_WAIT 4 /**< Wait if the session is waiting for a host response */
  48 +
  49 + #define HLLAPI_CMD_COPYPSTOSTR 8 /**< copy presentation space to string */
  50 + #define HLLAPI_CMD_SETCURSOR 40 /**< set cursor */
  51 + #define HLLAPI_CMD_GETREVISION 2000 /**< Get lib3270 revision */
49 52  
50 53 #pragma pack(1)
51 54 typedef struct _hllapi_data
... ...
src/plugins/remotectl/hllapi.c
... ... @@ -51,6 +51,9 @@
51 51 if(length < 0 && string)
52 52 length = strlen(string);
53 53  
  54 + if(!session_name)
  55 + session_name = strdup("pw3270A");
  56 +
54 57 snprintf(PipeName,4095,"\\\\.\\pipe\\%s",session_name);
55 58  
56 59 if(!WaitNamedPipe(PipeName,NMPWAIT_USE_DEFAULT_WAIT))
... ... @@ -114,7 +117,6 @@
114 117 if(!session_name)
115 118 free(session_name);
116 119 session_name = strdup(name);
117   -
118 120 return 0;
119 121 }
120 122  
... ... @@ -152,15 +154,22 @@
152 154 result = run_query(*func, arg, str, *length, rc);
153 155 break;
154 156  
155   - default:
156   - if(!session_name)
  157 + case HLLAPI_CMD_DISCONNECTPS:
  158 + if(session_name)
157 159 {
158   - if(set_session_name("pw3270A"))
159   - return ENOENT;
  160 + result = run_query(*func, arg, str, *length, rc);
  161 + free(session_name);
  162 + session_name = NULL;
160 163 }
  164 + break;
  165 +
  166 + default:
161 167 result = run_query(*func, arg, str, *length, rc);
162 168 }
163 169  
  170 + if(result && length && *length && str)
  171 + strncpy(str,strerror(result),*length);
  172 +
164 173 free(arg);
165 174 return result;
166 175 }
... ...
src/plugins/remotectl/remotectl.c
... ... @@ -133,22 +133,26 @@
133 133 return 0;
134 134 }
135 135  
136   - static int cmd_connectps(unsigned short rc, char *string, unsigned short length)
  136 + static int cmd_connectps(H3270 *hSession, unsigned short rc, char *string, unsigned short length)
137 137 {
138 138 g_message("%s","HLLAPI ConnectPS request received");
139 139 return 0;
140 140 }
141 141  
142   - static int cmd_getrevision(unsigned short rc, char *string, unsigned short length)
  142 + static int cmd_disconnectps(H3270 *hSession, unsigned short rc, char *string, unsigned short length)
143 143 {
144   - strncpy(string,lib3270_get_revision(),length);
  144 + g_message("%s","HLLAPI DisconnectPS request received");
145 145 return 0;
146 146 }
147 147  
148   - static int cmd_setcursor(unsigned short rc, char *string, unsigned short length)
  148 + static int cmd_getrevision(H3270 *hSession, unsigned short rc, char *string, unsigned short length)
149 149 {
150   - H3270 *hSession = lib3270_get_default_session_handle();
  150 + strncpy(string,lib3270_get_revision(),length);
  151 + return 0;
  152 + }
151 153  
  154 + static int cmd_setcursor(H3270 *hSession, unsigned short rc, char *string, unsigned short length)
  155 + {
152 156 if(!lib3270_connected(hSession))
153 157 return ENOTCONN;
154 158  
... ... @@ -156,10 +160,8 @@
156 160 return 0;
157 161 }
158 162  
159   - static int cmd_sendstring(unsigned short rc, char *text, unsigned short length)
  163 + static int cmd_sendstring(H3270 *hSession, unsigned short rc, char *text, unsigned short length)
160 164 {
161   - H3270 *hSession = lib3270_get_default_session_handle();
162   -
163 165 if(!lib3270_connected(hSession))
164 166 return ENOTCONN;
165 167  
... ... @@ -169,18 +171,25 @@
169 171 return 0;
170 172 }
171 173  
  174 + static int cmd_wait(H3270 *hSession, unsigned short rc, char *text, unsigned short length)
  175 + {
  176 + return lib3270_wait_for_ready(hSession,60);
  177 + }
  178 +
172 179 int run_hllapi(unsigned long function, char *string, unsigned short length, unsigned short rc)
173 180 {
174 181 static const struct _cmd
175 182 {
176 183 unsigned long function;
177   - int (*exec)(unsigned short rc, char *string, unsigned short length);
  184 + int (*exec)(H3270 *hSession, unsigned short rc, char *string, unsigned short length);
178 185 } cmd[] =
179 186 {
180   - { HLLAPI_CMD_CONNECTPS, cmd_connectps },
181   - { HLLAPI_CMD_SETCURSOR, cmd_setcursor },
182   - { HLLAPI_CMD_INPUTSTRING, cmd_sendstring },
183   - { HLLAPI_CMD_GETREVISION, cmd_getrevision }
  187 + { HLLAPI_CMD_CONNECTPS, cmd_connectps },
  188 + { HLLAPI_CMD_DISCONNECTPS, cmd_disconnectps },
  189 + { HLLAPI_CMD_INPUTSTRING, cmd_sendstring },
  190 + { HLLAPI_CMD_WAIT, cmd_wait },
  191 + { HLLAPI_CMD_SETCURSOR, cmd_setcursor },
  192 + { HLLAPI_CMD_GETREVISION, cmd_getrevision }
184 193 };
185 194 int f;
186 195  
... ... @@ -189,7 +198,7 @@
189 198 for(f=0;f<G_N_ELEMENTS(cmd);f++)
190 199 {
191 200 if(cmd[f].function == function)
192   - return cmd[f].exec(rc,string,length);
  201 + return cmd[f].exec(lib3270_get_default_session_handle(),rc,string,length);
193 202 }
194 203  
195 204 g_warning("Unexpected HLLAPI function %d",(int) function);
... ...