Blame src/mw_srvc_resolve.h.fix-glib-headers

Packit ee6627
Packit ee6627
/*
Packit ee6627
  Meanwhile - Unofficial Lotus Sametime Community Client Library
Packit ee6627
  Copyright (C) 2004  Christopher (siege) O'Brien
Packit ee6627
  
Packit ee6627
  This library is free software; you can redistribute it and/or
Packit ee6627
  modify it under the terms of the GNU Library General Public
Packit ee6627
  License as published by the Free Software Foundation; either
Packit ee6627
  version 2 of the License, or (at your option) any later version.
Packit ee6627
  
Packit ee6627
  This library is distributed in the hope that it will be useful,
Packit ee6627
  but WITHOUT ANY WARRANTY; without even the implied warranty of
Packit ee6627
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
Packit ee6627
  Library General Public License for more details.
Packit ee6627
  
Packit ee6627
  You should have received a copy of the GNU Library General Public
Packit ee6627
  License along with this library; if not, write to the Free
Packit ee6627
  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
Packit ee6627
*/
Packit ee6627
Packit ee6627
#ifndef _MW_SRVC_RESOLVE_H
Packit ee6627
#define _MW_SRVC_RESOLVE_H
Packit ee6627
Packit ee6627
Packit ee6627
#include <glib.h>
Packit ee6627
#include <glib/glist.h>
Packit ee6627
Packit ee6627
Packit ee6627
#ifdef __cplusplus
Packit ee6627
extern "C" {
Packit ee6627
#endif
Packit ee6627
Packit ee6627
Packit ee6627
/** Type identifier for the conference service */
Packit ee6627
#define mwService_RESOLVE  0x00000015
Packit ee6627
Packit ee6627
Packit ee6627
/** Return value of mwServiceResolve_search indicating an error */
Packit ee6627
#define SEARCH_ERROR  0x00
Packit ee6627
Packit ee6627
Packit ee6627
/** @struct mwServiceResolve
Packit ee6627
    User lookup service */
Packit ee6627
struct mwServiceResolve;
Packit ee6627
Packit ee6627
Packit ee6627
enum mwResolveFlag {
Packit ee6627
  /** return unique results or none at all */
Packit ee6627
  mwResolveFlag_UNIQUE    = 0x00000001,
Packit ee6627
Packit ee6627
  /** return only the first result */
Packit ee6627
  mwResolveFlag_FIRST     = 0x00000002,
Packit ee6627
Packit ee6627
  /** search all directories, not just the first with a match */
Packit ee6627
  mwResolveFlag_ALL_DIRS  = 0x00000004,
Packit ee6627
Packit ee6627
  /** search for users */
Packit ee6627
  mwResolveFlag_USERS     = 0x00000008,
Packit ee6627
Packit ee6627
  /** search for groups */
Packit ee6627
  mwResolveFlag_GROUPS    = 0x00000010,
Packit ee6627
};
Packit ee6627
Packit ee6627
Packit ee6627
/** @see mwResolveResult */
Packit ee6627
enum mwResolveCode {
Packit ee6627
  /** successful search */
Packit ee6627
  mwResolveCode_SUCCESS     = 0x00000000,
Packit ee6627
Packit ee6627
  /** only some of the nested searches were successful */
Packit ee6627
  mwResolveCode_PARTIAL     = 0x00010000,
Packit ee6627
Packit ee6627
  /** more than one result (occurs when mwResolveFlag_UNIQUE is used
Packit ee6627
      and more than one result would have been otherwise returned) */
Packit ee6627
  mwResolveCode_MULTIPLE    = 0x80020000,
Packit ee6627
Packit ee6627
  /** the name is not resolvable due to its format */
Packit ee6627
  mwResolveCode_BAD_FORMAT  = 0x80030000,
Packit ee6627
};
Packit ee6627
Packit ee6627
Packit ee6627
enum mwResolveMatchType {
Packit ee6627
  mwResolveMatch_USER   = 0x00000001,
Packit ee6627
  mwResolveMatch_GROUP  = 0x00000002,
Packit ee6627
};
Packit ee6627
Packit ee6627
Packit ee6627
struct mwResolveMatch {
Packit ee6627
  char *id;      /**< user id */
Packit ee6627
  char *name;    /**< user name */
Packit ee6627
  char *desc;    /**< description */
Packit ee6627
  guint32 type;  /**< @see mwResolveMatchType */
Packit ee6627
};
Packit ee6627
Packit ee6627
Packit ee6627
struct mwResolveResult {
Packit ee6627
  guint32 code;    /**< @see mwResolveCode */
Packit ee6627
  char *name;      /**< name of the result */
Packit ee6627
  GList *matches;  /**< list of mwResolveMatch */
Packit ee6627
};
Packit ee6627
Packit ee6627
Packit ee6627
/** Handle the results of a resolve request. If there was a cleanup
Packit ee6627
    function specified to mwServiceResolve_search, it will be called
Packit ee6627
    upon the user data after this callback returns.
Packit ee6627
Packit ee6627
    @param srvc     the resolve service
Packit ee6627
    @param id       the resolve request ID
Packit ee6627
    @param code     return code
Packit ee6627
    @param results  list of mwResolveResult
Packit ee6627
    @param data     optional user data attached to the request
Packit ee6627
*/
Packit ee6627
typedef void (*mwResolveHandler)
Packit ee6627
     (struct mwServiceResolve *srvc,
Packit ee6627
      guint32 id, guint32 code, GList *results,
Packit ee6627
      gpointer data);
Packit ee6627
Packit ee6627
Packit ee6627
/** Allocate a new resolve service */
Packit ee6627
struct mwServiceResolve *mwServiceResolve_new(struct mwSession *);
Packit ee6627
Packit ee6627
Packit ee6627
/** Inisitate a resolve request.
Packit ee6627
Packit ee6627
    @param srvc     the resolve service
Packit ee6627
    @param queries  list query strings
Packit ee6627
    @param flags    search flags
Packit ee6627
    @param handler  result handling function
Packit ee6627
    @param data     optional user data attached to the request
Packit ee6627
    @param cleanup  optional function to clean up user data
Packit ee6627
    @return         generated ID for the search request, or SEARCH_ERROR
Packit ee6627
*/
Packit ee6627
guint32 mwServiceResolve_resolve(struct mwServiceResolve *srvc,
Packit ee6627
				 GList *queries, enum mwResolveFlag flags,
Packit ee6627
				 mwResolveHandler handler,
Packit ee6627
				 gpointer data, GDestroyNotify cleanup);
Packit ee6627
Packit ee6627
Packit ee6627
/** Cancel a resolve request by its generated ID. The handler function
Packit ee6627
    will not be called, and the optional cleanup function will be
Packit ee6627
    called upon the optional user data for the request */
Packit ee6627
void mwServiceResolve_cancelResolve(struct mwServiceResolve *, guint32);
Packit ee6627
Packit ee6627
Packit ee6627
#ifdef __cplusplus
Packit ee6627
}
Packit ee6627
#endif
Packit ee6627
Packit ee6627
Packit ee6627
#endif /* _MW_SRVC_RESOLVE_H */