Blame src/mw_srvc_resolve.h

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