src/protocols/sametime/meanwhile/mw_srvc_ft.h

Fri, 20 Jan 2006 00:19:53 +0000

author
Ethan Blanton <elb@pidgin.im>
date
Fri, 20 Jan 2006 00:19:53 +0000
changeset 12956
39a4efae983c
permissions
-rw-r--r--

[gaim-migrate @ 15309]
Add .cvsignore actions to meanwhile so cvs shuts up about it.

12956
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
2 /*
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
3 Meanwhile - Unofficial Lotus Sametime Community Client Library
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
4 Copyright (C) 2004 Christopher (siege) O'Brien
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
5
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
6 This library is free software; you can redistribute it and/or
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
7 modify it under the terms of the GNU Library General Public
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
8 License as published by the Free Software Foundation; either
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
9 version 2 of the License, or (at your option) any later version.
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
10
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
11 This library is distributed in the hope that it will be useful,
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
14 Library General Public License for more details.
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
15
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
16 You should have received a copy of the GNU Library General Public
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
17 License along with this library; if not, write to the Free
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
18 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
19 */
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
20
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
21
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
22 #ifndef _MW_SRVC_FT_H
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
23 #define _MW_SRVC_FT_H
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
24
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
25
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
26 #include "mw_common.h"
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
27
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
28
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
29 /** @file mw_srvc_ft.h
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
30
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
31 A file transfer is a simple way to get large chunks of binary data
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
32 from one client to another.
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
33 */
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
34
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
35
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
36 /** @struct mwServiceFileTransfer
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
37 File transfer service
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
38 */
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
39 struct mwServiceFileTransfer;
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
40
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
41
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
42 /** @struct mwFileTransfer
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
43 A single file trasfer session
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
44 */
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
45 struct mwFileTransfer;
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
46
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
47
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
48 #define mwService_FILE_TRANSFER 0x00000038
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
49
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
50
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
51 enum mwFileTransferState {
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
52 mwFileTransfer_NEW, /**< file transfer is not open */
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
53 mwFileTransfer_PENDING, /**< file transfer is opening */
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
54 mwFileTransfer_OPEN, /**< file transfer is open */
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
55 mwFileTransfer_CANCEL_LOCAL,
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
56 mwFileTransfer_CANCEL_REMOTE,
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
57 mwFileTransfer_DONE,
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
58 mwFileTransfer_ERROR, /**< error in file transfer */
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
59 mwFileTransfer_UNKNOWN, /**< unknown state */
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
60 };
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
61
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
62
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
63 #define mwFileTransfer_isState(ft, state) \
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
64 (mwFileTransfer_getState(ft) == (state))
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
65
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
66 #define mwFileTransfer_isNew(ft) \
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
67 mwFileTransfer_isState((ft), mwFileTransfer_NEW)
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
68
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
69 #define mwFileTransfer_isPending(ft) \
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
70 mwFileTransfer_isState((ft), mwFileTransfer_PENDING)
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
71
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
72 #define mwFileTransfer_isOpen(ft) \
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
73 mwFileTransfer_isState((ft), mwFileTransfer_OPEN)
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
74
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
75 #define mwFileTransfer_isDone(ft) \
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
76 mwFileTransfer_isState((ft), mwFileTransfer_DONE)
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
77
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
78 #define mwFileTransfer_isCancelLocal(ft) \
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
79 mwFileTransfer_isState((ft), mwFileTransfer_CANCEL_LOCAL)
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
80
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
81 #define mwFileTransfer_isCancelRemote(ft) \
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
82 mwFileTransfer_isState((ft), mwFileTransfer_CANCEL_REMOTE)
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
83
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
84
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
85 enum mwFileTranferCode {
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
86 mwFileTransfer_SUCCESS = 0x00000000,
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
87 mwFileTransfer_REJECTED = 0x08000606,
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
88 };
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
89
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
90
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
91 struct mwFileTransferHandler {
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
92
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
93 /** an incoming file transfer has been offered */
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
94 void (*ft_offered)(struct mwFileTransfer *ft);
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
95
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
96 /** a file transfer has been fully initiated */
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
97 void (*ft_opened)(struct mwFileTransfer *ft);
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
98
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
99 /** a file transfer has been closed. Check the status of the file
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
100 transfer to determine if the transfer was complete or if it had
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
101 been interrupted */
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
102 void (*ft_closed)(struct mwFileTransfer *ft, guint32 code);
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
103
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
104 /** receive a chunk of a file from an inbound file transfer. */
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
105 void (*ft_recv)(struct mwFileTransfer *ft, struct mwOpaque *data);
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
106
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
107 /** received an ack for a sent chunk on an outbound file transfer.
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
108 this indicates that a previous call to mwFileTransfer_send has
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
109 reached the target and that the target has responded. */
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
110 void (*ft_ack)(struct mwFileTransfer *ft);
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
111
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
112 /** optional. called from mwService_free */
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
113 void (*clear)(struct mwServiceFileTransfer *srvc);
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
114 };
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
115
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
116
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
117 struct mwServiceFileTransfer *
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
118 mwServiceFileTransfer_new(struct mwSession *session,
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
119 struct mwFileTransferHandler *handler);
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
120
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
121
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
122 struct mwFileTransferHandler *
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
123 mwServiceFileTransfer_getHandler(struct mwServiceFileTransfer *srvc);
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
124
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
125
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
126 const GList *
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
127 mwServiceFileTransfer_getTransfers(struct mwServiceFileTransfer *srvc);
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
128
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
129
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
130 struct mwFileTransfer *
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
131 mwFileTransfer_new(struct mwServiceFileTransfer *srvc,
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
132 const struct mwIdBlock *who, const char *msg,
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
133 const char *filename, guint32 filesize);
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
134
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
135
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
136 /** deallocate a file transfer. will call mwFileTransfer_close if
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
137 necessary */
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
138 void
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
139 mwFileTransfer_free(struct mwFileTransfer *ft);
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
140
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
141
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
142 /** the status of this file transfer */
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
143 enum mwFileTransferState
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
144 mwFileTransfer_getState(struct mwFileTransfer *ft);
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
145
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
146
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
147 struct mwServiceFileTransfer *
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
148 mwFileTransfer_getService(struct mwFileTransfer *ft);
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
149
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
150
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
151 /** the user on the other end of the file transfer */
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
152 const struct mwIdBlock *
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
153 mwFileTransfer_getUser(struct mwFileTransfer *ft);
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
154
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
155
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
156 /** the message sent along with an offered file transfer */
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
157 const char *
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
158 mwFileTransfer_getMessage(struct mwFileTransfer *ft);
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
159
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
160
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
161 /** the publicized file name. Not necessarily related to any actual
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
162 file on either system */
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
163 const char *
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
164 mwFileTransfer_getFileName(struct mwFileTransfer *ft);
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
165
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
166
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
167 /** total bytes intended to be sent/received */
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
168 guint32 mwFileTransfer_getFileSize(struct mwFileTransfer *ft);
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
169
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
170
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
171 /** bytes remaining to be received/send */
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
172 guint32 mwFileTransfer_getRemaining(struct mwFileTransfer *ft);
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
173
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
174
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
175 /** count of bytes sent/received over this file transfer so far */
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
176 #define mwFileTransfer_getSent(ft) \
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
177 (mwFileTransfer_getFileSize(ft) - mwFileTransfer_getRemaining(ft))
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
178
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
179
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
180 /** initiate an outgoing file transfer */
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
181 int mwFileTransfer_offer(struct mwFileTransfer *ft);
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
182
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
183
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
184 /** accept an incoming file transfer */
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
185 int mwFileTransfer_accept(struct mwFileTransfer *ft);
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
186
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
187
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
188 /** reject an incoming file transfer */
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
189 #define mwFileTransfer_reject(ft) \
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
190 mwFileTransfer_close((ft), mwFileTransfer_REJECTED)
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
191
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
192
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
193 /** cancel an open file transfer */
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
194 #define mwFileTransfer_cancel(ft) \
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
195 mwFileTransfer_close((ft), mwFileTransfer_SUCCESS);
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
196
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
197
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
198 /** Close a file transfer. This will trigger the ft_close function of the
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
199 session's handler.
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
200
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
201 @see mwFileTransfer_reject
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
202 @see mwFileTransfer_cancel
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
203 */
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
204 int mwFileTransfer_close(struct mwFileTransfer *ft, guint32 code);
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
205
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
206
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
207 /** send a chunk of data over an outbound file transfer. The client at
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
208 the other end of the transfer should respond with an acknowledgement
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
209 message, which can be caught in the service's handler.
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
210
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
211 @see mwFileTransferHandler::ft_ack
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
212 */
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
213 int mwFileTransfer_send(struct mwFileTransfer *ft,
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
214 struct mwOpaque *data);
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
215
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
216
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
217 /** acknowledge the receipt of a chunk of data from an inbound file
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
218 transfer. This should be done after every received chunk, or the
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
219 transfer will stall. However, not all clients will wait for an ack
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
220 after sending a chunk before sending the next chunk, so it is
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
221 possible to have the handler's ft_recv function triggered again
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
222 even if no ack was sent.
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
223
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
224 @see mwFileTransferHandler::ft_recv
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
225 */
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
226 int mwFileTransfer_ack(struct mwFileTransfer *ft);
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
227
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
228
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
229 void mwFileTransfer_setClientData(struct mwFileTransfer *ft,
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
230 gpointer data, GDestroyNotify clean);
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
231
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
232
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
233 gpointer mwFileTransfer_getClientData(struct mwFileTransfer *ft);
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
234
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
235
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
236 void mwFileTransfer_removeClientData(struct mwFileTransfer *ft);
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
237
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
238
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
239 #endif

mercurial