jingle/sessions.h
author Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
Mon, 16 Aug 2010 18:33:33 +0200
changeset 133 361d8577ebd1
parent 119 0b9a7b505079
child 151 b1acef78e4f5
permissions -rw-r--r--
Change the way IBB work
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
21
147f131382dd Some sessions management code.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff changeset
     1
#ifndef __JINGLE_SESSIONS_H__
147f131382dd Some sessions management code.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff changeset
     2
#define __JINGLE_SESSIONS_H__ 1
147f131382dd Some sessions management code.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff changeset
     3
147f131382dd Some sessions management code.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff changeset
     4
#include <glib.h>
147f131382dd Some sessions management code.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff changeset
     5
33
92e92ce901e7 a function to find a sessioncontent
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 32
diff changeset
     6
#include <jingle/register.h>
92e92ce901e7 a function to find a sessioncontent
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 32
diff changeset
     7
21
147f131382dd Some sessions management code.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff changeset
     8
147f131382dd Some sessions management code.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff changeset
     9
typedef enum {
47
964b3ebeba8d Handle ack iq
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 40
diff changeset
    10
  JINGLE_SESSION_STATE_ACTIVE,
964b3ebeba8d Handle ack iq
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 40
diff changeset
    11
  JINGLE_SESSION_STATE_PENDING,
964b3ebeba8d Handle ack iq
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 40
diff changeset
    12
  JINGLE_SESSION_STATE_ENDED,
38
121e5ae7c1e5 new handlers
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 37
diff changeset
    13
} SessionState;
121e5ae7c1e5 new handlers
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 37
diff changeset
    14
80
1c2ef2c5debe Modifications to the JingleSession struct.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 75
diff changeset
    15
typedef enum {
1c2ef2c5debe Modifications to the JingleSession struct.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 75
diff changeset
    16
  /* A session that was initiated by some remote entity */
1c2ef2c5debe Modifications to the JingleSession struct.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 75
diff changeset
    17
  JINGLE_SESSION_INCOMING,
1c2ef2c5debe Modifications to the JingleSession struct.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 75
diff changeset
    18
1c2ef2c5debe Modifications to the JingleSession struct.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 75
diff changeset
    19
  /* A session that we initiated (by sending a session-initiate) */
1c2ef2c5debe Modifications to the JingleSession struct.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 75
diff changeset
    20
  JINGLE_SESSION_OUTGOING
1c2ef2c5debe Modifications to the JingleSession struct.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 75
diff changeset
    21
} SessionOrigin;
1c2ef2c5debe Modifications to the JingleSession struct.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 75
diff changeset
    22
21
147f131382dd Some sessions management code.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff changeset
    23
typedef struct {
80
1c2ef2c5debe Modifications to the JingleSession struct.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 75
diff changeset
    24
  /* Random session identifier generated by the initator. */
24
c80439433dd7 Fix compilation errors.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 23
diff changeset
    25
  gchar *sid;
80
1c2ef2c5debe Modifications to the JingleSession struct.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 75
diff changeset
    26
1c2ef2c5debe Modifications to the JingleSession struct.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 75
diff changeset
    27
  /* We need to know who initiated the session ?
1c2ef2c5debe Modifications to the JingleSession struct.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 75
diff changeset
    28
   * us or a remote entity. */
1c2ef2c5debe Modifications to the JingleSession struct.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 75
diff changeset
    29
  SessionOrigin origin;
1c2ef2c5debe Modifications to the JingleSession struct.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 75
diff changeset
    30
1c2ef2c5debe Modifications to the JingleSession struct.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 75
diff changeset
    31
  /* jid of the xmpp entity that initiated the session. */
24
c80439433dd7 Fix compilation errors.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 23
diff changeset
    32
  gchar *from;
80
1c2ef2c5debe Modifications to the JingleSession struct.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 75
diff changeset
    33
1c2ef2c5debe Modifications to the JingleSession struct.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 75
diff changeset
    34
  /* jid of the xmpp entity that received the initiation request. */
1c2ef2c5debe Modifications to the JingleSession struct.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 75
diff changeset
    35
  gchar *to;
1c2ef2c5debe Modifications to the JingleSession struct.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 75
diff changeset
    36
1c2ef2c5debe Modifications to the JingleSession struct.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 75
diff changeset
    37
  /* jid of the entity we send iq. point to "from" or "to" depending on
1c2ef2c5debe Modifications to the JingleSession struct.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 75
diff changeset
    38
   * who initiated the session. Basically a shortcut to avoid checking
1c2ef2c5debe Modifications to the JingleSession struct.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 75
diff changeset
    39
   * origin. Should not be freed when destroying a JingleSession. */
1c2ef2c5debe Modifications to the JingleSession struct.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 75
diff changeset
    40
  gchar *recipient;
1c2ef2c5debe Modifications to the JingleSession struct.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 75
diff changeset
    41
1c2ef2c5debe Modifications to the JingleSession struct.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 75
diff changeset
    42
  /* A singly-linked list of content. */
21
147f131382dd Some sessions management code.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff changeset
    43
  GSList *content;
147f131382dd Some sessions management code.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff changeset
    44
} JingleSession;
147f131382dd Some sessions management code.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff changeset
    45
32
72bbe33f151a Modify the session-initiate handler among other things.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 31
diff changeset
    46
typedef struct {
81
8b6320ad470b Add comments, change some function names...
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 80
diff changeset
    47
  /* "A unique name or identifier for the content type
8b6320ad470b Add comments, change some function names...
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 80
diff changeset
    48
   *  according to the creator" */
119
0b9a7b505079 create the session when receiving a session-initiate
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 107
diff changeset
    49
  gchar *name;
81
8b6320ad470b Add comments, change some function names...
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 80
diff changeset
    50
8b6320ad470b Add comments, change some function names...
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 80
diff changeset
    51
  /* */
38
121e5ae7c1e5 new handlers
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 37
diff changeset
    52
  SessionState state;
81
8b6320ad470b Add comments, change some function names...
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 80
diff changeset
    53
8b6320ad470b Add comments, change some function names...
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 80
diff changeset
    54
  /* The namespace of the app */
119
0b9a7b505079 create the session when receiving a session-initiate
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 107
diff changeset
    55
  gchar *xmlns_desc;
81
8b6320ad470b Add comments, change some function names...
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 80
diff changeset
    56
8b6320ad470b Add comments, change some function names...
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 80
diff changeset
    57
  /* The internal struct of the app module */
33
92e92ce901e7 a function to find a sessioncontent
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 32
diff changeset
    58
  gconstpointer description;
81
8b6320ad470b Add comments, change some function names...
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 80
diff changeset
    59
8b6320ad470b Add comments, change some function names...
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 80
diff changeset
    60
  /* Struct of functions provided by the app module */
32
72bbe33f151a Modify the session-initiate handler among other things.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 31
diff changeset
    61
  JingleAppFuncs *appfuncs;
81
8b6320ad470b Add comments, change some function names...
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 80
diff changeset
    62
8b6320ad470b Add comments, change some function names...
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 80
diff changeset
    63
  /* The namespace of the transport */
119
0b9a7b505079 create the session when receiving a session-initiate
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 107
diff changeset
    64
  gchar *xmlns_trans;
81
8b6320ad470b Add comments, change some function names...
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 80
diff changeset
    65
8b6320ad470b Add comments, change some function names...
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 80
diff changeset
    66
  /* The internal struct of the transport module */
33
92e92ce901e7 a function to find a sessioncontent
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 32
diff changeset
    67
  gconstpointer transport;
81
8b6320ad470b Add comments, change some function names...
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 80
diff changeset
    68
8b6320ad470b Add comments, change some function names...
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 80
diff changeset
    69
  /* Struct of functions provided by the transport module */
32
72bbe33f151a Modify the session-initiate handler among other things.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 31
diff changeset
    70
  JingleTransportFuncs *transfuncs;
72bbe33f151a Modify the session-initiate handler among other things.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 31
diff changeset
    71
} SessionContent;
72bbe33f151a Modify the session-initiate handler among other things.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 31
diff changeset
    72
80
1c2ef2c5debe Modifications to the JingleSession struct.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 75
diff changeset
    73
JingleSession *session_new(const gchar *sid, const gchar *from,
1c2ef2c5debe Modifications to the JingleSession struct.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 75
diff changeset
    74
                           const gchar *to, SessionOrigin origin);
67
c12618793df0 New functions in sessions
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 54
diff changeset
    75
JingleSession *session_new_from_jinglenode(JingleNode *jn);
31
02f5698ffa49 fix jingle_ft_check, make session_find use JingleNodes directly.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 26
diff changeset
    76
JingleSession *session_find_by_sid(const gchar *sid, const gchar *from);
02f5698ffa49 fix jingle_ft_check, make session_find use JingleNodes directly.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 26
diff changeset
    77
JingleSession *session_find(const JingleNode *jn);
133
361d8577ebd1 Change the way IBB work
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 119
diff changeset
    78
SessionContent* session_add_content(JingleSession *sess, const gchar *name,
361d8577ebd1 Change the way IBB work
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 119
diff changeset
    79
                                    SessionState state);
67
c12618793df0 New functions in sessions
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 54
diff changeset
    80
void session_add_app(JingleSession *sess, const gchar *name,
c12618793df0 New functions in sessions
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 54
diff changeset
    81
                           const gchar *xmlns, gconstpointer data);
c12618793df0 New functions in sessions
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 54
diff changeset
    82
void session_add_trans(JingleSession *sess, const gchar *name,
c12618793df0 New functions in sessions
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 54
diff changeset
    83
                           const gchar *xmlns, gconstpointer data);
133
361d8577ebd1 Change the way IBB work
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 119
diff changeset
    84
SessionContent* session_add_content_from_jinglecontent(JingleSession *sess,
361d8577ebd1 Change the way IBB work
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 119
diff changeset
    85
                           JingleContent *cn, SessionState state, GError **err);
361d8577ebd1 Change the way IBB work
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 119
diff changeset
    86
SessionContent *session_find_transport(gconstpointer data);
361d8577ebd1 Change the way IBB work
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 119
diff changeset
    87
SessionContent *session_find_sessioncontent(JingleSession *sess,
361d8577ebd1 Change the way IBB work
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 119
diff changeset
    88
                                            const gchar *name);
107
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 103
diff changeset
    89
int session_remove_sessioncontent(JingleSession *sess, const gchar *name);
38
121e5ae7c1e5 new handlers
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 37
diff changeset
    90
void session_changestate_sessioncontent(JingleSession *sess, const gchar *name,
121e5ae7c1e5 new handlers
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 37
diff changeset
    91
                                        SessionState state);
21
147f131382dd Some sessions management code.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff changeset
    92
void session_delete(JingleSession *sess);
147f131382dd Some sessions management code.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff changeset
    93
void session_remove(JingleSession *sess);
147f131382dd Some sessions management code.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff changeset
    94
void session_free(JingleSession *sess);
147f131382dd Some sessions management code.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff changeset
    95
75
bd48c89b0a3d Put jingle_handle_app in sessions.c
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 68
diff changeset
    96
void jingle_handle_app(JingleSession *sess, const gchar *name,
bd48c89b0a3d Put jingle_handle_app in sessions.c
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 68
diff changeset
    97
                       const gchar *xmlns_app, gconstpointer app,
bd48c89b0a3d Put jingle_handle_app in sessions.c
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 68
diff changeset
    98
                       const gchar *to);
83
d5c5e9be53cb modify send_session_initiate
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 81
diff changeset
    99
LmMessage *lm_message_from_jinglesession(const JingleSession *js,
d5c5e9be53cb modify send_session_initiate
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 81
diff changeset
   100
                                         JingleAction action);
75
bd48c89b0a3d Put jingle_handle_app in sessions.c
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 68
diff changeset
   101
103
c34b513be8d9 JFT: handle data app
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 102
diff changeset
   102
void handle_app_data(const gchar *sid, const gchar* from, const gchar *name, gchar *data, gsize size);
102
ec430b98c115 send hash
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 94
diff changeset
   103
21
147f131382dd Some sessions management code.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff changeset
   104
#endif