src/protocols/sametime/meanwhile/mw_srvc_im.h

changeset 12496
788b20ccec91
parent 12495
4b2c27ae504a
child 12497
a17568773be3
--- a/src/protocols/sametime/meanwhile/mw_srvc_im.h	Fri Dec 16 03:34:01 2005 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,267 +0,0 @@
-
-/*
-  Meanwhile - Unofficial Lotus Sametime Community Client Library
-  Copyright (C) 2004  Christopher (siege) O'Brien
-  
-  This library is free software; you can redistribute it and/or
-  modify it under the terms of the GNU Library General Public
-  License as published by the Free Software Foundation; either
-  version 2 of the License, or (at your option) any later version.
-  
-  This library is distributed in the hope that it will be useful,
-  but WITHOUT ANY WARRANTY; without even the implied warranty of
-  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-  Library General Public License for more details.
-  
-  You should have received a copy of the GNU Library General Public
-  License along with this library; if not, write to the Free
-  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
-*/
-
-#ifndef _MW_SRVC_IM_H
-#define _MW_SRVC_IM_H
-
-
-#include <glib.h>
-#include "mw_common.h"
-
-
-/** @file mw_srvc_im.h
-
-    The IM service provides one-on-one communication between
-    users. Messages sent over conversations may relay different types
-    of information, in a variety of formats. The basic feature-set
-    provides plain-text chat with typing notification. More complex
-    features may be negotiated transparently by setting the IM Client
-    Type for a conversation, or for the service as a whole.
- */
-
-
-/** Type identifier for the IM service */
-#define mwService_IM  0x00001000
-
-
-/** @struct mwServiceIm
-
-    An instance of the IM service. This service provides simple
-    instant messaging functionality */
-struct mwServiceIm;
-
-
-/** @struct mwConversation
-
-    A conversation between the local service and a single other user */
-struct mwConversation;
-
-
-enum mwImClientType {
-  mwImClient_PLAIN       = 0x00000001,  /**< text, typing */
-  mwImClient_NOTESBUDDY  = 0x00033453,  /**< adds html, subject, mime */
-  mwImClient_PRECONF     = 0x00000019,  /**< pre-conference, legacy */
-  mwImClient_UNKNOWN     = 0xffffffff,  /**< trouble determining type */
-};
-
-
-/**
-   Types of supported messages. When a conversation is created, the
-   least common denominator of features between either side of the
-   conversation (based on what features are available in the IM
-   service itself) becomes the set of supported features for that
-   conversation. At any point, the feature set for the service may
-   change, without affecting any existing conversations.
-
-   @see mwServiceIm_supports
-   @see mwServiceIm_setSupported
-   @see mwConversation_supports
-   @see mwConversation_send
-   @see mwServiceImHandler::conversation_recv
- */
-enum mwImSendType {
-  mwImSend_PLAIN,   /**< char *, plain-text message */
-  mwImSend_TYPING,  /**< gboolean, typing status */
-  mwImSend_HTML,    /**< char *, HTML formatted message (NOTESBUDDY) */
-  mwImSend_SUBJECT, /**< char *, conversation subject (NOTESBUDDY) */
-  mwImSend_MIME,    /**< char *, MIME-encoded message (NOTESBUDDY) */
-  mwImSend_TIMESTAMP, /**< char *, YYYY:MM:DD:HH:mm:SS format (NOTESBUDDY) */
-};
-
-
-
-/** @see mwConversation_getState */
-enum mwConversationState {
-  mwConversation_CLOSED,   /**< conversation is not open */
-  mwConversation_PENDING,  /**< conversation is opening */
-  mwConversation_OPEN,     /**< conversation is open */
-  mwConversation_UNKNOWN,  /**< unknown state */
-};
-
-
-#define mwConversation_isState(conv, state) \
-  (mwConversation_getState(conv) == (state))
-
-#define mwConversation_isClosed(conv) \
-  mwConversation_isState((conv), mwConversation_CLOSED)
-
-#define mwConversation_isPending(conv) \
-  mwConversation_isState((conv), mwConversation_PENDING)
-
-#define mwConversation_isOpen(conv) \
-  mwConversation_isState((conv), mwConversation_OPEN)
-
-
-
-/** IM Service Handler. Provides functions for events triggered from an
-    IM service instance. */
-struct mwImHandler {
-
-  /** A conversation has been successfully opened */
-  void (*conversation_opened)(struct mwConversation *conv);
-
-  /** A conversation has been closed */
-  void (*conversation_closed)(struct mwConversation *conv, guint32 err);
-  
-  /** A message has been received on a conversation */
-  void (*conversation_recv)(struct mwConversation *conv,
-			    enum mwImSendType type, gconstpointer msg);
-
-  /** Handle a Place invitation. Set this to NULL and we should end up
-      receiving a conference invitation instead. */
-  void (*place_invite)(struct mwConversation *conv,
-		       const char *message,
-		       const char *title, const char *name);
-
-  /** optional. called from mwService_free */
-  void (*clear)(struct mwServiceIm *srvc);
-};
-
-
-struct mwServiceIm *mwServiceIm_new(struct mwSession *session,
-				    struct mwImHandler *handler);
-
-
-struct mwImHandler *mwServiceIm_getHandler(struct mwServiceIm *srvc);
-
-
-/** reference an existing conversation to target, or create a new
-    conversation to target if one does not already exist */
-struct mwConversation *mwServiceIm_getConversation(struct mwServiceIm *srvc,
-						   struct mwIdBlock *target);
-
-
-/** reference an existing conversation to target */
-struct mwConversation *mwServiceIm_findConversation(struct mwServiceIm *srvc,
-						    struct mwIdBlock *target);
-
-
-/** determine if the conversations created from this service will
-    support a given send type */
-gboolean mwServiceIm_supports(struct mwServiceIm *srvc,
-			      enum mwImSendType type);
-
-
-/** Set the default client type for the service. Newly created
-    conversations will attempt to meet this level of functionality
-    first.
-
-    @param srvc       the IM service
-    @param type       the send type to enable/disable
-*/
-void mwServiceIm_setClientType(struct mwServiceIm *srvc,
-			       enum mwImClientType type);
-
-
-enum mwImClientType mwServiceIm_getClientType(struct mwServiceIm *srvc);
-
-
-/** attempt to open a conversation. If the conversation was not
-    already open and it is accepted,
-    mwServiceImHandler::conversation_opened will be triggered. Upon
-    failure, mwServiceImHandler::conversation_closed will be
-    triggered */
-void mwConversation_open(struct mwConversation *conv);
-
-
-/** close a conversation. If the conversation was not already closed,
-    mwServiceImHandler::conversation_closed will be triggered */
-void mwConversation_close(struct mwConversation *conv, guint32 err);
-
-
-/** determine whether a conversation supports the given message type */
-gboolean mwConversation_supports(struct mwConversation *conv,
-				 enum mwImSendType type);
-
-
-enum mwImClientType mwConversation_getClientType(struct mwConversation *conv);
-
-
-/** get the state of a conversation
-
-    @see mwConversation_isOpen
-    @see mwConversation_isClosed
-    @see mwConversation_isPending
-*/
-enum mwConversationState mwConversation_getState(struct mwConversation *conv);
-
-
-/** send a message over an open conversation */
-int mwConversation_send(struct mwConversation *conv,
-			enum mwImSendType type, gconstpointer send);
-
-
-/** @returns owning service for a conversation */
-struct mwServiceIm *mwConversation_getService(struct mwConversation *conv);
-
-
-/** login information for conversation partner. returns NULL if conversation 
-    is not OPEN */
-struct mwLoginInfo *mwConversation_getTargetInfo(struct mwConversation *conv);
-
-
-/** ID for conversation partner */
-struct mwIdBlock *mwConversation_getTarget(struct mwConversation *conv);
-
-
-/** set whether outgoing messages should be encrypted using the
-    negotiated cipher, if any */
-void mwConversation_setEncrypted(struct mwConversation *conv,
-				 gboolean useCipher);
-
-
-/** determine whether outgoing messages are being encrypted */
-gboolean mwConversation_isEncrypted(struct mwConversation *conv);
-
-
-/** Associates client data with a conversation. If there is existing data,
-    it will not have its cleanup function called.
-
-    @see mwConversation_getClientData
-    @see mwConversation_removeClientData
-*/
-void mwConversation_setClientData(struct mwConversation *conv,
-				  gpointer data, GDestroyNotify clean);
-
-
-/** Reference associated client data
-
-    @see mwConversation_setClientData
-    @see mwConversation_removeClientData
- */
-gpointer mwConversation_getClientData(struct mwConversation *conv);
-
-
-/** Remove any associated client data, calling the optional cleanup
-    function if one was provided
-
-    @see mwConversation_setClientData
-    @see mwConversation_getClientData
-*/
-void mwConversation_removeClientData(struct mwConversation *conv);
-
-
-/** close and destroy the conversation and its backing channel, and
-    call the optional client data cleanup function */
-void mwConversation_free(struct mwConversation *conv);
-
-
-#endif
-

mercurial