aboutsummaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
Diffstat (limited to 'include')
-rw-r--r--include/gnunet_chat_lib.h515
1 files changed, 515 insertions, 0 deletions
diff --git a/include/gnunet_chat_lib.h b/include/gnunet_chat_lib.h
new file mode 100644
index 0000000..0d4bff5
--- /dev/null
+++ b/include/gnunet_chat_lib.h
@@ -0,0 +1,515 @@
1/*
2 The development of this code was supported by the NLnet foundation as part
3 of the NGI Assure initative to have a more free and secure internet.
4 */
5/*
6 * @author Tobias Frisch
7 * @file gnunet_chat_lib.h
8 */
9
10#ifndef GNUNET_CHAT_LIB_H_
11#define GNUNET_CHAT_LIB_H_
12
13#include <gnunet/platform.h>
14#include <gnunet/gnunet_util_lib.h>
15
16/**
17 * TODO
18 */
19enum GNUNET_CHAT_MessageKind
20{
21 /**
22 * TODO
23 */
24 GNUNET_CHAT_KIND_TEXT = 1, /**< GNUNET_CHAT_KIND_TEXT */
25
26 /**
27 * TODO
28 */
29 GNUNET_CHAT_KIND_FILE = 2, /**< GNUNET_CHAT_KIND_FILE */
30
31 /**
32 * TODO
33 */
34 GNUNET_CHAT_KIND_UNKNOWN = 0/**< GNUNET_CHAT_KIND_UNKNOWN */
35};
36
37/**
38 * TODO
39 */
40struct GNUNET_CHAT_Handle;
41
42/**
43 * TODO
44 */
45struct GNUNET_CHAT_Contact;
46
47/**
48 * TODO
49 */
50struct GNUNET_CHAT_Group;
51
52/**
53 * TODO
54 */
55struct GNUNET_CHAT_Context;
56
57/**
58 * TODO
59 */
60struct GNUNET_CHAT_Message;
61
62/**
63 * TODO
64 */
65struct GNUNET_CHAT_File;
66
67/**
68 * TODO
69 *
70 * @param cls
71 * @param handle
72 * @param contact
73 * @return
74 */
75typedef int
76(*GNUNET_CHAT_ContactCallback) (void *cls, struct GNUNET_CHAT_Handle *handle,
77 const struct GNUNET_CHAT_Contact *contact);
78
79/**
80 * TODO
81 *
82 * @param cls
83 * @param handle
84 * @param group
85 * @return
86 */
87typedef int
88(*GNUNET_CHAT_GroupCallback) (void *cls, struct GNUNET_CHAT_Handle *handle,
89 const struct GNUNET_CHAT_Group *group);
90
91/**
92 * TODO
93 *
94 * @param cls
95 * @param group
96 * @param contact
97 * @return
98 */
99typedef int
100(*GNUNET_CHAT_GroupContactCallback) (void *cls, struct GNUNET_CHAT_Group *group,
101 const struct GNUNET_CHAT_Contact *contact);
102
103/**
104 * TODO
105 *
106 * @param cls
107 * @param context
108 * @param message
109 * @return
110 */
111typedef int
112(*GNUNET_CHAT_ContextMessageCallback) (void *cls, struct GNUNET_CHAT_Context *context,
113 const struct GNUNET_CHAT_Message *message);
114
115/**
116 * TODO
117 *
118 * @param cls
119 * @param message
120 * @param contact
121 * @param read_receipt
122 * @return
123 */
124typedef int
125(*GNUNET_CHAT_MessageReadReceiptCallback) (void *cls, const struct GNUNET_CHAT_Message *message,
126 const struct GNUNET_CHAT_Contact *contact,
127 int read_receipt);
128
129typedef void
130(*GNUNET_CHAT_MessageFileDownloadCallback) (void *cls, const struct GNUNET_CHAT_File *file);
131
132
133/**
134 * TODO
135 *
136 * @param cfg
137 * @param name
138 * @return
139 */
140struct GNUNET_CHAT_Handle*
141GNUNET_CHAT_start (const struct GNUNET_CONFIGURATION_Handle *cfg,
142 const char *name);
143
144/**
145 * TODO
146 *
147 * @param handle
148 */
149void
150GNUNET_CHAT_stop (struct GNUNET_CHAT_Handle *handle);
151
152/**
153 * TODO
154 *
155 * @param handle
156 * @return
157 */
158int
159GNUNET_CHAT_update (struct GNUNET_CHAT_Handle *handle);
160
161/**
162 * TODO
163 *
164 * @param handle
165 * @param name
166 * @return
167 */
168int
169GNUNET_CHAT_set_name (struct GNUNET_CHAT_Handle *handle,
170 const char *name);
171
172/**
173 * TODO
174 *
175 * @param handle
176 * @return
177 */
178const char*
179GNUNET_CHAT_get_name (const struct GNUNET_CHAT_Handle *handle);
180
181/**
182 * TODO
183 *
184 * @param handle
185 * @return
186 */
187const struct GNUNET_IDENTITY_PublicKey*
188GNUNET_CHAT_get_key (const struct GNUNET_CHAT_Handle *handle);
189
190/**
191 * TODO
192 *
193 * @param handle
194 * @param callback
195 * @param cls
196 * @return
197 */
198int
199GNUNET_CHAT_iterate_contacts (struct GNUNET_CHAT_Handle *handle,
200 GNUNET_CHAT_ContactCallback callback,
201 void *cls);
202
203/**
204 * TODO
205 *
206 * @param handle
207 * @return
208 */
209struct GNUNET_CHAT_Group *
210GNUNET_CHAT_group_create (struct GNUNET_CHAT_Handle *handle);
211
212/**
213 * TODO
214 *
215 * @param handle
216 * @param callback
217 * @param cls
218 * @return
219 */
220int
221GNUNET_CHAT_iterate_groups (struct GNUNET_CHAT_Handle *handle,
222 GNUNET_CHAT_GroupCallback callback,
223 void *cls);
224
225/**
226 * TODO
227 *
228 * @param contact
229 * @return
230 */
231int
232GNUNET_CHAT_contact_delete (struct GNUNET_CHAT_Contact *contact);
233
234/**
235 * TODO
236 *
237 * @param contact
238 */
239void
240GNUNET_CHAT_contact_set_blocking (struct GNUNET_CHAT_Contact *contact,
241 int blocking);
242
243/**
244 * TODO
245 *
246 * @param contact
247 * @return
248 */
249int
250GNUNET_CHAT_contact_is_blocking (const struct GNUNET_CHAT_Contact *contact);
251
252/**
253 * TODO
254 *
255 * @param contact Contact
256 * @param name Custom nick name
257 */
258void
259GNUNET_CHAT_contact_set_name (struct GNUNET_CHAT_Contact *contact,
260 const char *name);
261
262/**
263 * TODO
264 *
265 * @param contact Contact
266 * @return Name or custom nick name
267 */
268const char*
269GNUNET_CHAT_contact_get_name (const struct GNUNET_CHAT_Contact *contact);
270
271/**
272 * TODO
273 *
274 * @param contact
275 * @return
276 */
277const struct GNUNET_IDENTITY_PublicKey*
278GNUNET_CHAT_contact_get_key (const struct GNUNET_CHAT_Contact *contact);
279
280/**
281 * TODO
282 *
283 * @param contact Contact
284 * @return Chat context
285 */
286struct GNUNET_CHAT_Context*
287GNUNET_CHAT_contact_get_context (struct GNUNET_CHAT_Contact *contact);
288
289/**
290 * TODO
291 *
292 * @param group
293 */
294void
295GNUNET_CHAT_group_leave (struct GNUNET_CHAT_Group *group);
296
297/**
298 * TODO
299 *
300 * @param group
301 * @param name
302 */
303void
304GNUNET_CHAT_group_set_name (struct GNUNET_CHAT_Group *group,
305 const char *name);
306
307/**
308 * TODO
309 *
310 * @param group
311 * @return
312 */
313const char*
314GNUNET_CHAT_group_get_name (const struct GNUNET_CHAT_Group *group);
315
316/**
317 * TODO
318 *
319 * @param group
320 * @param contact
321 */
322void
323GNUNET_CHAT_group_invite_contact (struct GNUNET_CHAT_Group *group,
324 struct GNUNET_CHAT_Contact *contact);
325
326/**
327 * TODO
328 *
329 * @param group
330 * @param callback
331 * @param cls
332 * @return
333 */
334int
335GNUNET_CHAT_group_iterate_contacts (struct GNUNET_CHAT_Group *group,
336 GNUNET_CHAT_GroupContactCallback callback,
337 void *cls);
338
339/**
340 * TODO
341 *
342 * @param group
343 * @return
344 */
345struct GNUNET_CHAT_Context*
346GNUNET_CHAT_group_get_context (struct GNUNET_CHAT_Group *group);
347
348/**
349 * TODO
350 *
351 * @param context
352 * @param text
353 */
354void
355GNUNET_CHAT_context_send_text (struct GNUNET_CHAT_Context *context,
356 const char *text);
357
358/**
359 * TODO
360 *
361 * @param context
362 * @param path
363 */
364void
365GNUNET_CHAT_context_send_file (struct GNUNET_CHAT_Context *context,
366 const char *path);
367
368/**
369 * TODO
370 *
371 * @param context
372 * @param uri
373 */
374void
375GNUNET_CHAT_context_send_uri (struct GNUNET_CHAT_Context *context,
376 const char *uri);
377
378/**
379 * TODO
380 *
381 * @param context
382 * @param file
383 */
384void
385GNUNET_CHAT_context_share_file (struct GNUNET_CHAT_Context *context,
386 const struct GNUNET_CHAT_File *file);
387
388/**
389 * TODO
390 *
391 * @param context
392 * @param hash
393 * @param delay
394 */
395void
396GNUNET_CHAT_context_delete_message (struct GNUNET_CHAT_Context *context,
397 const struct GNUNET_HashCode *hash,
398 struct GNUNET_TIME_Relative delay);
399
400/**
401 * TODO
402 *
403 * @param context
404 * @param hash
405 * @return
406 */
407const struct GNUNET_CHAT_Message*
408GNUNET_CHAT_context_get_message (struct GNUNET_CHAT_Context *context,
409 const struct GNUNET_HashCode *hash);
410
411/**
412 * TODO
413 *
414 * @param context
415 * @param callback
416 * @param cls
417 * @return
418 */
419int
420GNUNET_CHAT_context_iterate_messages (struct GNUNET_CHAT_Context *context,
421 GNUNET_CHAT_ContextMessageCallback callback,
422 void *cls);
423
424/**
425 * TODO
426 *
427 * @param message
428 * @return
429 */
430enum GNUNET_CHAT_MessageKind
431GNUNET_CHAT_message_get_kind (const struct GNUNET_CHAT_Message *message);
432
433/**
434 * TODO
435 *
436 * @param message
437 * @return
438 */
439struct GNUNET_TIME_Absolute
440GNUNET_CHAT_message_get_timestamp (const struct GNUNET_CHAT_Message *message);
441
442/**
443 * TODO
444 *
445 * @param message
446 * @return
447 */
448const struct GNUNET_CHAT_Contact*
449GNUNET_CHAT_message_get_sender (const struct GNUNET_CHAT_Message *message);
450
451/**
452 * TODO
453 *
454 * @param message
455 * @param callback
456 * @param cls
457 * @return
458 */
459int
460GNUNET_CHAT_message_get_read_receipt (const struct GNUNET_CHAT_Message *message,
461 GNUNET_CHAT_MessageReadReceiptCallback callback,
462 void *cls);
463
464/**
465 * TODO
466 *
467 * @param message
468 * @return
469 */
470const char*
471GNUNET_CHAT_message_get_text (const struct GNUNET_CHAT_Message *message);
472
473
474/**
475 * TODO
476 *
477 * @param message
478 * @return
479 */
480struct GNUNET_CHAT_File*
481GNUNET_CHAT_message_get_file (const struct GNUNET_CHAT_Message *message);
482
483/**
484 * TODO
485 *
486 * @param file
487 */
488void
489GNUNET_CHAT_file_start_download (struct GNUNET_CHAT_File *file);
490
491/**
492 * TODO
493 *
494 * @param file
495 */
496void
497GNUNET_CHAT_file_pause_download (struct GNUNET_CHAT_File *file);
498
499/**
500 * TODO
501 *
502 * @param file
503 */
504void
505GNUNET_CHAT_file_resume_download (struct GNUNET_CHAT_File *file);
506
507/**
508 * TODO
509 *
510 * @param file
511 */
512void
513GNUNET_CHAT_file_stop_download (struct GNUNET_CHAT_File *file);
514
515#endif /* GNUNET_CHAT_LIB_H_ */