statechange.h 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. /** BEGIN COPYRIGHT BLOCK
  2. * Copyright (C) 2001 Sun Microsystems, Inc. Used by permission.
  3. * Copyright (C) 2005 Red Hat, Inc.
  4. * All rights reserved.
  5. *
  6. * License: GPL (version 3 or any later version).
  7. * See LICENSE for details.
  8. * END COPYRIGHT BLOCK **/
  9. #ifdef HAVE_CONFIG_H
  10. # include <config.h>
  11. #endif
  12. #ifndef _STATE_NOTIFY_H_
  13. #define _STATE_NOTIFY_H_
  14. /* mechanics */
  15. typedef void (*notify_callback)(Slapi_Entry *e, char *dn, int modtype, Slapi_PBlock *pb, void *caller_data);
  16. typedef void (*caller_data_free_callback)(void *caller_data);
  17. typedef int (*api_statechange_register)(char *caller_id, char *dn, char *filter, void *caller_data, notify_callback func);
  18. /* returns pointer to caller data passed to api_statechange_register */
  19. typedef void *(*api_statechange_unregister)(char *dn, char *filter, notify_callback func);
  20. typedef void (*api_statechange_unregister_all)(char *caller_id, caller_data_free_callback callback);
  21. /* API ID for slapi_apib_get_interface */
  22. #define StateChange_v1_0_GUID "0A340151-6FB3-11d3-80D2-006008A6EFF3"
  23. /* API */
  24. /* the api broker reserves api[0] for its use */
  25. #define statechange_register(api, caller_id, dn, filter, caller, func) \
  26. ((api_statechange_register*)(api))[1]( caller_id, dn, filter, caller, func)
  27. #define statechange_unregister(api, dn, filter, func) \
  28. ((api_statechange_unregister*)(api))[2]( dn, filter, func)
  29. #define statechange_unregister_all(api, caller_id, callback) \
  30. ((api_statechange_unregister*)(api))[3](caller_id, callback)
  31. /* Vattr state change handler to be passed to statechange_register() by va sps*/
  32. #define statechange_vattr_cache_invalidator_callback(api) api[4]
  33. #define STATECHANGE_VATTR_GLOBAL_INVALIDATE 1
  34. #define STATECHANGE_VATTR_ENTRY_INVALIDATE 2
  35. /* Vattr api caller data to be passed to statechange_register() */
  36. #ifdef DEFINE_STATECHANGE_STATICS
  37. static int vattr_global_invalidate = STATECHANGE_VATTR_GLOBAL_INVALIDATE;
  38. /* static int vattr_entry_invalidate = STATECHANGE_VATTR_ENTRY_INVALIDATE; */
  39. #endif /* DEFINE_STATECHANGE_STATICS */
  40. #endif /*_STATE_NOTIFY_H_*/