Commit 81a7bb675827ceec48b61c9cca141ea89a1e62d4
1 parent
3cac70b4
Exists in
master
and in
3 other branches
Adding "reset callbacks" method for file transfer (usefull for widget
cleanup).
Showing
2 changed files
with
32 additions
and
10 deletions
Show diff stats
src/include/lib3270/filetransfer.h
| ... | ... | @@ -197,6 +197,16 @@ |
| 197 | 197 | LIB3270_EXPORT struct lib3270_ft_callbacks * lib3270_get_ft_callbacks(H3270 *session, unsigned short sz); |
| 198 | 198 | |
| 199 | 199 | /** |
| 200 | + * @brief Set all FT callbacks to default valides. | |
| 201 | + * | |
| 202 | + * @param hSession TN3270 session to reset. | |
| 203 | + * | |
| 204 | + * @return 0 if hSession has a valid FT session, non zero if not (sets errno). | |
| 205 | + * | |
| 206 | + */ | |
| 207 | + LIB3270_EXPORT int lib3270_reset_ft_callbacks(H3270 *hSession); | |
| 208 | + | |
| 209 | + /** | |
| 200 | 210 | * @brief Translate IND$FILE response. |
| 201 | 211 | * |
| 202 | 212 | * @param msg Message received. | ... | ... |
src/lib3270/ft.c
| ... | ... | @@ -315,15 +315,6 @@ static void set_ft_state(H3270FT *session, LIB3270_FT_STATE state); |
| 315 | 315 | ftHandle->dft = dft; |
| 316 | 316 | ftHandle->quadrant = -1; |
| 317 | 317 | |
| 318 | - ftHandle->cbk.complete = def_complete; | |
| 319 | - ftHandle->cbk.failed = def_failed; | |
| 320 | - ftHandle->cbk.message = def_message; | |
| 321 | - ftHandle->cbk.update = def_update; | |
| 322 | - ftHandle->cbk.running = def_running; | |
| 323 | - ftHandle->cbk.aborting = def_aborting; | |
| 324 | - ftHandle->cbk.state_changed = def_state_changed; | |
| 325 | - | |
| 326 | - | |
| 327 | 318 | // Setup file transfer charset. |
| 328 | 319 | memcpy(&ftHandle->charset,&session->charset,sizeof(struct lib3270_charset)); |
| 329 | 320 | |
| ... | ... | @@ -343,9 +334,31 @@ static void set_ft_state(H3270FT *session, LIB3270_FT_STATE state); |
| 343 | 334 | |
| 344 | 335 | session->ft = ftHandle; |
| 345 | 336 | |
| 337 | + lib3270_reset_ft_callbacks(session); | |
| 338 | + | |
| 346 | 339 | return ftHandle; |
| 347 | 340 | } |
| 348 | 341 | |
| 342 | + LIB3270_EXPORT int lib3270_reset_ft_callbacks(H3270 *hSession) | |
| 343 | + { | |
| 344 | + CHECK_SESSION_HANDLE(hSession); | |
| 345 | + | |
| 346 | + if(!hSession->ft) | |
| 347 | + { | |
| 348 | + return errno = EINVAL; | |
| 349 | + } | |
| 350 | + | |
| 351 | + hSession->ft->cbk.complete = def_complete; | |
| 352 | + hSession->ft->cbk.failed = def_failed; | |
| 353 | + hSession->ft->cbk.message = def_message; | |
| 354 | + hSession->ft->cbk.update = def_update; | |
| 355 | + hSession->ft->cbk.running = def_running; | |
| 356 | + hSession->ft->cbk.aborting = def_aborting; | |
| 357 | + hSession->ft->cbk.state_changed = def_state_changed; | |
| 358 | + | |
| 359 | + return 0; | |
| 360 | + } | |
| 361 | + | |
| 349 | 362 | LIB3270_EXPORT void lib3270_ft_set_user_data(H3270 *hSession, void *ptr) |
| 350 | 363 | { |
| 351 | 364 | H3270FT * ft; |
| ... | ... | @@ -654,7 +667,6 @@ LIB3270_EXPORT struct lib3270_ft_callbacks * lib3270_get_ft_callbacks(H3270 *ses |
| 654 | 667 | |
| 655 | 668 | } |
| 656 | 669 | |
| 657 | - | |
| 658 | 670 | // Process a protocol-generated abort. |
| 659 | 671 | void ft_aborting(H3270FT *h, const char *reason) |
| 660 | 672 | { | ... | ... |