source: protocols/bee.h @ d986463

Last change on this file since d986463 was 17a6ee9, checked in by Wilmer van der Gaast <wilmer@…>, at 2010-04-11T14:37:06Z

Including DCC stuff again, with a wonderful extra layer of abstraction.
Some hooks are missing so sending files doesn't work yet. Receiving also
still seems to have some issues. On the plus side, at least the MSN/Jabber
modules work again.

  • Property mode set to 100644
File size: 3.7 KB
Line 
1  /********************************************************************\
2  * BitlBee -- An IRC to other IM-networks gateway                     *
3  *                                                                    *
4  * Copyright 2002-2010 Wilmer van der Gaast and others                *
5  \********************************************************************/
6
7/* Stuff to handle, save and search buddies                             */
8
9/*
10  This program is free software; you can redistribute it and/or modify
11  it under the terms of the GNU General Public License as published by
12  the Free Software Foundation; either version 2 of the License, or
13  (at your option) any later version.
14
15  This program is distributed in the hope that it will be useful,
16  but WITHOUT ANY WARRANTY; without even the implied warranty of
17  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18  GNU General Public License for more details.
19
20  You should have received a copy of the GNU General Public License with
21  the Debian GNU/Linux distribution in /usr/share/common-licenses/GPL;
22  if not, write to the Free Software Foundation, Inc., 59 Temple Place,
23  Suite 330, Boston, MA  02111-1307  USA
24*/
25
26#ifndef __BEE_H__
27#define __BEE_H__
28
29struct bee_ui_funcs;
30
31typedef struct bee
32{
33        struct set *set;
34       
35        GSList *users;
36        struct account *accounts; /* TODO(wilmer): Use GSList here too? */
37       
38        const struct bee_ui_funcs *ui;
39        void *ui_data;
40} bee_t;
41
42bee_t *bee_new();
43void bee_free( bee_t *b );
44
45typedef enum
46{
47        BEE_USER_ONLINE = 1,    /* Compatibility with old OPT_LOGGED_IN flag */
48        BEE_USER_AWAY = 4,      /* Compatibility with old OPT_AWAY flag */
49} bee_user_flags_t;
50
51typedef struct bee_user
52{
53        struct im_connection *ic;
54        char *handle;
55        char *fullname;
56        char *group;
57
58        bee_user_flags_t flags;
59        char *status;
60        char *status_msg;
61       
62        bee_t *bee;
63        void *ui_data;
64} bee_user_t;
65
66typedef struct bee_ui_funcs
67{
68        gboolean (*user_new)( bee_t *bee, struct bee_user *bu );
69        gboolean (*user_free)( bee_t *bee, struct bee_user *bu );
70        gboolean (*user_fullname)( bee_t *bee, bee_user_t *bu );
71        gboolean (*user_status)( bee_t *bee, struct bee_user *bu, struct bee_user *old );
72        gboolean (*user_msg)( bee_t *bee, bee_user_t *bu, const char *msg, time_t sent_at );
73       
74        struct file_transfer* (*ft_in_start)( bee_t *bee, bee_user_t *bu, const char *file_name, size_t file_size );
75        gboolean (*ft_out_start)( struct im_connection *ic, struct file_transfer *ft );
76        void (*ft_close)( struct im_connection *ic, struct file_transfer *ft );
77        void (*ft_finished)( struct im_connection *ic, struct file_transfer *ft );
78} bee_ui_funcs_t;
79
80
81/* bee.c */
82bee_t *bee_new();
83void bee_free( bee_t *b );
84
85/* bee_user.c */
86bee_user_t *bee_user_new( bee_t *bee, struct im_connection *ic, const char *handle );
87int bee_user_free( bee_t *bee, struct im_connection *ic, const char *handle );
88bee_user_t *bee_user_by_handle( bee_t *bee, struct im_connection *ic, const char *handle );
89int bee_user_msg( bee_t *bee, bee_user_t *bu, const char *msg, int flags );
90
91/* Callbacks from IM modules to core: */
92/* Buddy activity */
93/* To manipulate the status of a handle.
94 * - flags can be |='d with OPT_* constants. You will need at least:
95 *   OPT_LOGGED_IN and OPT_AWAY.
96 * - 'state' and 'message' can be NULL */
97G_MODULE_EXPORT void imcb_buddy_status( struct im_connection *ic, const char *handle, int flags, const char *state, const char *message );
98/* Not implemented yet! */ G_MODULE_EXPORT void imcb_buddy_times( struct im_connection *ic, const char *handle, time_t login, time_t idle );
99/* Call when a handle says something. 'flags' and 'sent_at may be just 0. */
100G_MODULE_EXPORT void imcb_buddy_msg( struct im_connection *ic, const char *handle, char *msg, guint32 flags, time_t sent_at );
101
102#endif /* __BEE_H__ */
Note: See TracBrowser for help on using the repository browser.