diff options
| author | me_desk <me_desk@fb96df88-216d-11de-830c-f3023f12d8ac> | 2014-07-04 01:03:36 +0000 |
|---|---|---|
| committer | me_desk <me_desk@fb96df88-216d-11de-830c-f3023f12d8ac> | 2014-07-04 01:03:36 +0000 |
| commit | 3e1c3cd989180d2085ce5af7f4db2b156d5df578 (patch) | |
| tree | eb3a0d178b9ba41133558fdd416a3e3471c2f4d2 /PICA_client.c | |
| parent | af3c479447078c889b1bbb7a5e405c6f61620e82 (diff) | |
| download | pica-pica-3e1c3cd989180d2085ce5af7f4db2b156d5df578.tar.gz pica-pica-3e1c3cd989180d2085ce5af7f4db2b156d5df578.zip | |
implemented file transfer cancellation
git-svn-id: svn://localhost/project_picapica/trunk@315 fb96df88-216d-11de-830c-f3023f12d8ac
Diffstat (limited to 'PICA_client.c')
| -rwxr-xr-x | PICA_client.c | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/PICA_client.c b/PICA_client.c index 6d428e4..50751d4 100755 --- a/PICA_client.c +++ b/PICA_client.c @@ -1827,6 +1827,39 @@ if (sending) return PICA_send_filecontrol(chan, senderctl, receiverctl); } +int PICA_cancel_file(struct PICA_chaninfo *chan, int sending) +{ +int senderctl = PICA_PROTO_FILECONTROL_VOID; +int receiverctl = PICA_PROTO_FILECONTROL_VOID; + +if (sending) + { + if (chan->sendfilestate != PICA_CHANSENDFILESTATE_SENDING + && chan->sendfilestate != PICA_CHANSENDFILESTATE_PAUSED) + return PICA_ERRINVARG; + + fclose(chan->sendfile_stream); + chan->sendfile_stream = NULL; + chan->sendfilestate = PICA_CHANSENDFILESTATE_IDLE; + + senderctl = PICA_PROTO_FILECONTROL_CANCEL; + } + else + { + if (chan->recvfilestate != PICA_CHANRECVFILESTATE_RECEIVING + && chan->recvfilestate != PICA_CHANRECVFILESTATE_PAUSED) + return PICA_ERRINVARG; + + fclose(chan->recvfile_stream); + chan->recvfile_stream = NULL; + chan->recvfilestate = PICA_CHANRECVFILESTATE_IDLE; + + receiverctl = PICA_PROTO_FILECONTROL_CANCEL; + } + +return PICA_send_filecontrol(chan, senderctl, receiverctl); +} + int PICA_send_filecontrol(struct PICA_chaninfo *chan, int senderctl, int receiverctl) { struct PICA_proto_msg *mp; |
