src/protocols/sametime/meanwhile/mw_service.h

changeset 12957
9af807a5c9e7
parent 12956
39a4efae983c
child 12958
706645a0b944
--- a/src/protocols/sametime/meanwhile/mw_service.h	Fri Jan 20 00:19:53 2006 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,360 +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_SERVICE_H
-#define _MW_SERVICE_H
-
-
-#include "mw_common.h"
-
-
-/* place-holders */
-struct mwChannel;
-struct mwService;
-struct mwSession;
-struct mwMsgChannelCreate;
-struct mwMsgChannelAccept;
-struct mwMsgChannelDestroy;
-
-
-/** State-tracking for a service */
-enum mwServiceState {
-  mwServiceState_STOPPED,   /**< the service is not active */
-  mwServiceState_STOPPING,  /**< the service is shutting down */
-  mwServiceState_STARTED,   /**< the service is active */
-  mwServiceState_STARTING,  /**< the service is starting up */
-  mwServiceState_ERROR,     /**< error in service, shutting down */
-  mwServiceState_UNKNOWN,   /**< error determining state */
-};
-
-
-/** Casts a concrete service (such as mwServiceAware) into a mwService */
-#define MW_SERVICE(srv) ((struct mwService *) srv)
-
-
-#define MW_SERVICE_IS_STATE(srvc, state) \
-  (mwService_getState(MW_SERVICE(srvc)) == (state))
-
-#define MW_SERVICE_IS_STOPPED(srvc)  \
-  MW_SERVICE_IS_STATE(srvc, mwServiceState_STOPPED)
-
-#define MW_SERVICE_IS_STOPPING(srvc) \
-  MW_SERVICE_IS_STATE(srvc, mwServiceState_STOPPING)
-
-#define MW_SERVICE_IS_STARTED(srvc)  \
-  MW_SERVICE_IS_STATE(srvc, mwServiceState_STARTED)
-
-#define MW_SERVICE_IS_STARTING(srvc) \
-  MW_SERVICE_IS_STATE(srvc, mwServiceState_STARTING)
-
-
-/** If a service is STARTING or STARTED, it's considered LIVE */
-#define MW_SERVICE_IS_LIVE(srvc) \
-  (MW_SERVICE_IS_STARTING(srvc) || MW_SERVICE_IS_STARTED(srvc))
-
-/** If a service is STOPPING or STOPPED, it's considered DEAD */
-#define MW_SERVICE_IS_DEAD(srvc) \
-  (MW_SERVICE_IS_STOPPING(srvc) || MW_SERVICE_IS_STOPPED(srvc))
-
-
-typedef void (*mwService_funcStart)(struct mwService *service);
-
-typedef void (*mwService_funcStop)(struct mwService *service);
-
-typedef void (*mwService_funcClear)(struct mwService *service);
-
-typedef const char *(*mwService_funcGetName)(struct mwService *service);
-
-typedef const char *(*mwService_funcGetDesc)(struct mwService *service);
-
-/** @todo remove msg and replace with appropriate additional parameters */
-typedef void (*mwService_funcRecvCreate)
-     (struct mwService *service,
-      struct mwChannel *channel,
-      struct mwMsgChannelCreate *msg);
-
-/** @todo remove msg and replace with appropriate additional parameters */
-typedef void (*mwService_funcRecvAccept)
-     (struct mwService *service,
-      struct mwChannel *channel,
-      struct mwMsgChannelAccept *msg);
-
-/** @todo remove msg and replace with appropriate additional parameters */
-typedef void (*mwService_funcRecvDestroy)
-     (struct mwService *service,
-      struct mwChannel *channel,
-      struct mwMsgChannelDestroy *msg);
-
-typedef void (*mwService_funcRecv)
-     (struct mwService *service,
-      struct mwChannel *channel,
-      guint16 msg_type,
-      struct mwOpaque *data);
-
-
-/** A service is the recipient of sendOnCnl messages sent over
-    channels marked with the corresponding service id. Services
-    provide functionality such as IM relaying, Awareness tracking and
-    notification, and Conference handling.  It is a service's
-    responsibility to accept or destroy channels, and to process data
-    sent over those channels */
-struct mwService {
-
-  /** the unique identifier by which this service is registered. The
-      type value also relates to those channels which will be directed
-      to this service */
-  guint32 type;
-
-  /** the state of this service. Determines whether or not the session
-      should call the start function upon receipt of a service
-      available message. Should not be set or checked by hand.
-
-      @relates mwService_getState */
-  enum mwServiceState state;
-
-  /** session this service is attached to.
-      @relates mwService_getSession */
-  struct mwSession *session;
-
-  /** @return string short name of the service
-      @relates mwService_getName */
-  mwService_funcGetName get_name;
-
-  /** @return string short description of the service
-      @relates mwService_getDesc */
-  mwService_funcGetDesc get_desc;
-
-  /** The service's channel create handler. Called when the session
-      receives a channel create message with a service matching this
-      service's type.
-
-      @relates mwService_recvCreate */
-  mwService_funcRecvCreate recv_create;
-
-  /** The service's channel accept handler. Called when the session
-      receives a channel accept message for a channel with a service
-      matching this service's type.
-
-      @relates mwService_recvAccept */
-  mwService_funcRecvAccept recv_accept;
-
-  /** The service's channel destroy handler. Called when the session
-      receives a channel destroy message for a channel with a service
-      matching this service's type.
-
-      @relates mwService_recvDestroy */
-  mwService_funcRecvDestroy recv_destroy;
-
-  /** The service's input handler. Called when the session receives
-      data on a channel belonging to this service
-
-      @relates mwService_recv */
-  mwService_funcRecv recv;
-
-  /** The service's start handler. Called upon the receipt of a
-      service available message.
-
-      @relates mwService_start */
-  mwService_funcStart start;
-
-  /** The service's stop handler. Called when the session is shutting
-      down, or when the service is free'd.
-
-      @relates mwService_stop */
-  mwService_funcStop stop;
-  
-  /** The service's cleanup handler. Service implementations should
-      presume that mwService::stop will be called first. The clear
-      handler is not for shutting down channels or generating
-      non-cleanup side-effects, it is only for handling tear-down of
-      the service, and will only be called once for any instance.
-
-      @relates mwService_free */
-  mwService_funcClear clear;
-
-  /** Optional client data, not for use by service implementations
-
-      @relates mwService_getClientData
-      @relates mwService_setClientData */
-  gpointer client_data;
-
-  /** Optional client data cleanup function. Called with client_data
-      from mwService_free
-
-      @relates mwService_getClientData
-      @relates mwService_setClientData */
-  GDestroyNotify client_cleanup;
-};
-
-
-/** @name Service Extension API
-
-    These functions are for use by service implementations */
-/*@{*/
-
-
-/** Prepares a newly allocated service for use.
-    
-    Intended for use by service implementations, rather than by code
-    utilizing a service.
-    
-    The service state will be initialized to STOPPED.
-    
-    @param service       the service to initialize
-    @param session       the service's owning session
-    @param service_type  the service ID number */
-void mwService_init(struct mwService *service,
-		    struct mwSession *session,
-		    guint32 service_type);
-
-
-/** Indicate that a service is started. To be used by service
-    implementations when the service is fully started. */
-void mwService_started(struct mwService *service);
-
-
-/** Indicate that a service is stopped. To be used by service
-    implementations when the service is fully stopped. */
-void mwService_stopped(struct mwService *service);
-
-
-/*@}*/
-
-
-/** @name General Services API
-
-    These functions provide unified access to the general functions of
-    a client service, with some simple sanity-checking. */
-/*@{*/
-
-
-/** Triggers the recv_create handler on the service.
-
-    @param service  the service to handle the message
-    @param channel  the channel being created
-    @param msg      the channel create message */
-void mwService_recvCreate(struct mwService *service,
-			  struct mwChannel *channel,
-			  struct mwMsgChannelCreate *msg);
-
-
-/** Triggers the recv_accept handler on the service.
-
-    @param service  the service to handle the message
-    @param channel  the channel being accepted
-    @param msg      the channel accept message */
-void mwService_recvAccept(struct mwService *service,
-			  struct mwChannel *channel,
-			  struct mwMsgChannelAccept *msg);
-
-
-/** Triggers the recv_destroy handler on the service.
-
-    @param service  the service to handle the message
-    @param channel  the channel being destroyed
-    @param msg      the channel destroy message */
-void mwService_recvDestroy(struct mwService *service,
-			   struct mwChannel *channel,
-			   struct mwMsgChannelDestroy *msg);
-
-
-/** Triggers the input handler on the service
-
-    @param service   the service to receive the input
-    @param channel   the channel the input was received from
-    @param msg_type  the service-dependant message type
-    @param data      the message data */
-void mwService_recv(struct mwService *service,
-		    struct mwChannel *channel,
-		    guint16 msg_type,
-		    struct mwOpaque *data);
-
-
-/** @return the appropriate type id for the service */
-guint32 mwService_getType(struct mwService *);
-
-
-/** @return string short name of the service */
-const char *mwService_getName(struct mwService *);
-
-
-/** @return string short description of the service */
-const char *mwService_getDesc(struct mwService *);
-
-
-/** @return the service's session */
-struct mwSession *mwService_getSession(struct mwService *service);
-
-
-/** @returns the service's state
-*/
-enum mwServiceState mwService_getState(struct mwService *service);
-
-
-/** Triggers the start handler for the service. Normally called from
-    the session upon receipt of a service available message. Service
-    implementations should use this handler to open any necessary
-    channels, etc. Checks that the service is STOPPED, or returns.
-    
-    @param service The service to start
-*/
-void mwService_start(struct mwService *service);
-
-
-/** Triggers the stop handler for the service. Normally called from
-    the session before closing down the connection. Checks that the
-    service is STARTED or STARTING, or returns
-
-    @param service The service to stop
-*/
-void mwService_stop(struct mwService *service);
-
-
-/** Frees memory used by a service. Will trigger the stop handler if
-    the service is STARTED or STARTING. Triggers clear handler to allow
-    cleanup.
-
-    @param service The service to clear and free
-*/
-void mwService_free(struct mwService *service);
-
-
-/** Associates client data with service. If there is existing data, it
-    will not have its cleanup function called. Client data is not for
-    use by service implementations. Rather, it is for use by client
-    code which may later make use of those service implementations. */
-void mwService_setClientData(struct mwService *service,
-			     gpointer data, GDestroyNotify cleanup);
-
-
-/** Reference associated client data */
-gpointer mwService_getClientData(struct mwService *service);
-
-
-/** Removes client data from service. If there is a cleanup function,
-    it will be called. */
-void mwService_removeClientData(struct mwService *service);
-
-
-/*@}*/
-
-
-#endif
-

mercurial