meanwhile: mw_session.h Source File

- Main Page
- Related Pages
- Data Structures
- Files

# mw_session.h

Go to the documentation of this file.

    00001
    00002 /*
    00003   Meanwhile - Unofficial Lotus Sametime Community Client Library
    00004   Copyright (C) 2004  Christopher (siege) O'Brien
    00005
    00006   This library is free software; you can redistribute it and/or
    00007   modify it under the terms of the GNU Library General Public
    00008   License as published by the Free Software Foundation; either
    00009   version 2 of the License, or (at your option) any later version.
    00010
    00011   This library is distributed in the hope that it will be useful,
    00012   but WITHOUT ANY WARRANTY; without even the implied warranty of
    00013   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    00014   Library General Public License for more details.
    00015
    00016   You should have received a copy of the GNU Library General Public
    00017   License along with this library; if not, write to the Free
    00018   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
    00019 */
    00020
    00021 #ifndef _MW_SESSION_H
    00022 #define _MW_SESSION_H
    00023
    00024
    00047 #include "mw_common.h"
    00048
    00049
    00050 #ifdef __cplusplus
    00051 extern "C" {
    00052 #endif
    00053
    00054
    00055 struct mwChannelSet;
    00056 struct mwCipher;
    00057 struct mwMessage;
    00058 struct mwService;
    00059
    00060
    00062 #define MW_PROTOCOL_VERSION_MAJOR  0x001e
    00063
    00064
    00066 #define MW_PROTOCOL_VERSION_MINOR  0x001d
    00067
    00068
    00073
    00075 #define mwSession_AUTH_USER_ID      "session.auth.user"
    00076
    00078 #define mwSession_AUTH_PASSWORD     "session.auth.password"
    00079
    00081 #define mwSession_AUTH_TOKEN        "session.auth.token"
    00082
    00084 #define mwSession_CLIENT_HOST       "client.host"
    00085
    00087 #define mwSession_CLIENT_IP         "client.ip"
    00088
    00090 #define mwSession_CLIENT_VER_MAJOR  "client.version.major"
    00091
    00093 #define mwSession_CLIENT_VER_MINOR  "client.version.minor"
    00094
    00096 #define mwSession_CLIENT_TYPE_ID    "client.id"
    00097
    00099 #define mwSession_SERVER_VER_MAJOR  "server.version.major"
    00100
    00102 #define mwSession_SERVER_VER_MINOR  "server.version.minor"
    00103
    00107 enum mwSessionState {
    00108   mwSession_STARTING,
    00109   mwSession_HANDSHAKE,
    00110   mwSession_HANDSHAKE_ACK,
    00111   mwSession_LOGIN,
    00112   mwSession_LOGIN_REDIR,
    00113   mwSession_LOGIN_ACK,
    00114   mwSession_STARTED,
    00115   mwSession_STOPPING,
    00116   mwSession_STOPPED,
    00117   mwSession_UNKNOWN,
    00118   mwSession_LOGIN_CONT,
    00119 };
    00120
    00121
    00122 #define mwSession_isState(session, state) \
    00123   (mwSession_getState((session)) == (state))
    00124
    00125 #define mwSession_isStarting(s) \
    00126   (mwSession_isState((s), mwSession_STARTING)  || \
    00127    mwSession_isState((s), mwSession_HANDSHAKE) || \
    00128    mwSession_isState((s), mwSession_HANDSHAKE_ACK) || \
    00129    mwSession_isState((s), mwSession_LOGIN) || \
    00130    mwSession_isState((s), mwSession_LOGIN_ACK) || \
    00131    mwSession_isState((s), mwSession_LOGIN_REDIR) || \
    00132    mwSession_isState((s), mwSession_LOGIN_CONT))
    00133
    00134 #define mwSession_isStarted(s) \
    00135   (mwSession_isState((s), mwSession_STARTED))
    00136
    00137 #define mwSession_isStopping(s) \
    00138   (mwSession_isState((s), mwSession_STOPPING))
    00139
    00140 #define mwSession_isStopped(s) \
    00141   (mwSession_isState((s), mwSession_STOPPED))
    00142
    00143
    00147 struct mwSession;
    00148
    00149
    00154 struct mwSessionHandler {
    00155
    00158   int (*io_write)(struct mwSession *, const guchar *buf, gsize len);
    00159
    00161   void (*io_close)(struct mwSession *);
    00162
    00164   void (*clear)(struct mwSession *);
    00165
    00173   void (*on_stateChange)(struct mwSession *s,
    00174                          enum mwSessionState state, gpointer info);
    00175
    00180   void (*on_setPrivacyInfo)(struct mwSession *);
    00181
    00185   void (*on_setUserStatus)(struct mwSession *);
    00186
    00188   void (*on_admin)(struct mwSession *, const char *text);
    00189
    00191   void (*on_announce)(struct mwSession *, struct mwLoginInfo *from,
    00192                       gboolean may_reply, const char *text);
    00193
    00194 };
    00195
    00196
    00198 struct mwSession *mwSession_new(struct mwSessionHandler *);
    00199
    00200
    00203 void mwSession_free(struct mwSession *);
    00204
    00205
    00207 struct mwSessionHandler *mwSession_getHandler(struct mwSession *);
    00208
    00209
    00212 void mwSession_start(struct mwSession *);
    00213
    00214
    00217 void mwSession_stop(struct mwSession *, guint32 reason);
    00218
    00219
    00222 void mwSession_recv(struct mwSession *, const guchar *, gsize);
    00223
    00224
    00229 int mwSession_send(struct mwSession *s, struct mwMessage *msg);
    00230
    00231
    00233 int mwSession_sendKeepalive(struct mwSession *s);
    00234
    00235
    00238 int mwSession_forceLogin(struct mwSession *s);
    00239
    00240
    00251 int mwSession_sendAnnounce(struct mwSession *s, gboolean may_reply,
    00252                            const char *text, const GList *recipients);
    00253
    00254
    00257 int mwSession_setPrivacyInfo(struct mwSession *, struct mwPrivacyInfo *);
    00258
    00259
    00261 struct mwPrivacyInfo *mwSession_getPrivacyInfo(struct mwSession *);
    00262
    00263
    00265 struct mwLoginInfo *mwSession_getLoginInfo(struct mwSession *);
    00266
    00267
    00270 int mwSession_setUserStatus(struct mwSession *, struct mwUserStatus *);
    00271
    00272
    00273 struct mwUserStatus *mwSession_getUserStatus(struct mwSession *);
    00274
    00275
    00277 enum mwSessionState mwSession_getState(struct mwSession *);
    00278
    00279
    00292 gpointer mwSession_getStateInfo(struct mwSession *);
    00293
    00294
    00295 struct mwChannelSet *mwSession_getChannels(struct mwSession *);
    00296
    00297
    00305 gboolean mwSession_addService(struct mwSession *, struct mwService *);
    00306
    00307
    00309 struct mwService *mwSession_getService(struct mwSession *, guint32 type);
    00310
    00311
    00315 struct mwService *mwSession_removeService(struct mwSession *, guint32 type);
    00316
    00317
    00320 GList *mwSession_getServices(struct mwSession *);
    00321
    00322
    00335 void mwSession_senseService(struct mwSession *s, guint32 type);
    00336
    00337
    00339 gboolean mwSession_addCipher(struct mwSession *, struct mwCipher *);
    00340
    00341
    00343 struct mwCipher *mwSession_getCipher(struct mwSession *, guint16 type);
    00344
    00345
    00347 struct mwCipher *mwSession_removeCipher(struct mwSession *, guint16 type);
    00348
    00349
    00352 GList *mwSession_getCiphers(struct mwSession *);
    00353
    00354
    00358 void mwSession_setProperty(struct mwSession *, const char *key,
    00359                            gpointer val, GDestroyNotify clear);
    00360
    00361
    00363 gpointer mwSession_getProperty(struct mwSession *, const char *key);
    00364
    00365
    00368 void mwSession_removeProperty(struct mwSession *, const char *key);
    00369
    00370
    00379 void mwSession_setClientData(struct mwSession *session,
    00380                              gpointer data, GDestroyNotify clear);
    00381
    00382
    00383 gpointer mwSession_getClientData(struct mwSession *session);
    00384
    00385
    00388 void mwSession_removeClientData(struct mwSession *session);
    00389
    00390
    00391 #ifdef __cplusplus
    00392 }
    00393 #endif
    00394
    00395
    00396 #endif /* _MW_SESSION_H */
    00397