MAPIProxy 2.0 API Documentation

- Main Page
- Related Pages
- Data Structures
- Files

- File List
- Globals

Functions
mapi_handles.c File Reference

API for MAPI handles management. More...

`#include "mapiproxy/dcesrv_mapiproxy.h"`
`#include "libmapi/libmapi.h"`
`#include "libmapi/libmapi_private.h"`
`#include "libmapiproxy.h"`

## Functions
_PUBLIC_ enum MAPISTATUS | mapi_handles_add (struct mapi_handles_context *handles_ctx, uint32_t container_handle, struct mapi_handles **rec)
_PUBLIC_ enum MAPISTATUS | mapi_handles_delete (struct mapi_handles_context *handles_ctx, uint32_t handle)
_PUBLIC_ enum MAPISTATUS | mapi_handles_get_private_data (struct mapi_handles *handle, void **private_data)
_PUBLIC_ struct mapi_handles_context * | mapi_handles_init (TALLOC_CTX *mem_ctx)
_PUBLIC_ enum MAPISTATUS | mapi_handles_release (struct mapi_handles_context *handles_ctx)
_PUBLIC_ enum MAPISTATUS | mapi_handles_search (struct mapi_handles_context *handles_ctx, uint32_t handle, struct mapi_handles **rec)
_PUBLIC_ enum MAPISTATUS | mapi_handles_set_private_data (struct mapi_handles *handle, void *private_data)
static enum MAPISTATUS | mapi_handles_tdb_free (struct mapi_handles_context *handles_ctx, uint32_t handle)
static enum MAPISTATUS | mapi_handles_tdb_update (struct mapi_handles_context *handles_ctx, uint32_t handle, uint32_t container_handle)
static int | mapi_handles_traverse_delete (TDB_CONTEXT *tdb_ctx, TDB_DATA key, TDB_DATA dbuf, void *state)
static int | mapi_handles_traverse_null (TDB_CONTEXT *tdb_ctx, TDB_DATA key, TDB_DATA dbuf, void *state)

## Detailed Description

API for MAPI handles management.

## Function Documentation

_PUBLIC_ enum MAPISTATUS mapi_handles_add | ( | struct mapi_handles_context * | handles_ctx,
|  | uint32_t | container_handle,
|  | struct mapi_handles ** | rec
| ) |  |

Add a handles to the database and return a pointer on created record

Parameters

  handles_ctx | pointer to the MAPI handles context
  container_handle | the container handle if available
  rec | pointer on pointer to the MAPI handle structure the function returns

Returns
  MAPI_E_SUCCESS on success, otherwise MAPI error

References mapi_handles_tdb_free(), mapi_handles_tdb_update(), and mapi_handles_traverse_null().

Referenced by EcDoRpc_RopCreateAttach(), EcDoRpc_RopCreateFolder(), EcDoRpc_RopCreateMessage(), EcDoRpc_RopFastTransferSourceCopyTo(), EcDoRpc_RopGetAttachmentTable(), EcDoRpc_RopGetContentsTable(), EcDoRpc_RopGetHierarchyTable(), EcDoRpc_RopGetPermissionsTable(), EcDoRpc_RopLogon(), EcDoRpc_RopOpenAttach(), EcDoRpc_RopOpenEmbeddedMessage(), EcDoRpc_RopOpenFolder(), EcDoRpc_RopOpenMessage(), EcDoRpc_RopOpenStream(), EcDoRpc_RopRegisterNotification(), EcDoRpc_RopSyncConfigure(), EcDoRpc_RopSyncGetTransferState(), EcDoRpc_RopSyncImportMessageChange(), and EcDoRpc_RopSyncOpenCollector().

_PUBLIC_ enum MAPISTATUS mapi_handles_delete | ( | struct mapi_handles_context * | handles_ctx,
|  | uint32_t | handle
| ) |  |

Remove the MAPI handle referenced by the handle parameter from the double chained list and mark its associated TDB record as null

Parameters

  handles_ctx | pointer to the MAPI handles context
  handle | the handle to delete

Returns
  MAPI_E_SUCCESS on success, otherwise MAPI error

References mapi_handles_tdb_free(), and mapi_handles_traverse_delete().

Referenced by EcDoRpc_RopCreateAttach(), EcDoRpc_RopCreateFolder(), EcDoRpc_RopGetAttachmentTable(), EcDoRpc_RopGetPermissionsTable(), EcDoRpc_RopOpenAttach(), EcDoRpc_RopOpenMessage(), EcDoRpc_RopRelease(), EcDoRpc_RopSyncImportMessageChange(), and mapi_handles_traverse_delete().

_PUBLIC_ enum MAPISTATUS mapi_handles_get_private_data | ( | struct mapi_handles * | handle,
|  | void ** | private_data
| ) |  |

Get the private data associated to a MAPI handle

Parameters

  handle | pointer to the MAPI handle structure
  private_data | pointer on pointer to the private data the function returns

Returns
  MAPI_E_SUCCESS on success, otherwise MAPI_E_NOT_FOUND

Referenced by EcDoRpc_RopCommitStream(), EcDoRpc_RopCopyFolder(), EcDoRpc_RopCopyTo(), EcDoRpc_RopCreateAttach(), EcDoRpc_RopCreateFolder(), EcDoRpc_RopCreateMessage(), EcDoRpc_RopDeleteFolder(), EcDoRpc_RopDeleteMessages(), EcDoRpc_RopEmptyFolder(), EcDoRpc_RopFastTransferSourceCopyTo(), EcDoRpc_RopFastTransferSourceGetBuffer(), EcDoRpc_RopFindRow(), EcDoRpc_RopGetAttachmentTable(), EcDoRpc_RopGetContentsTable(), EcDoRpc_RopGetHierarchyTable(), EcDoRpc_RopGetLocalReplicaIds(), EcDoRpc_RopGetPermissionsTable(), EcDoRpc_RopGetPropertiesAll(), EcDoRpc_RopGetPropertiesList(), EcDoRpc_RopGetPropertiesSpecific(), EcDoRpc_RopGetStreamSize(), EcDoRpc_RopGetTransportFolder(), EcDoRpc_RopIdFromLongTermId(), EcDoRpc_RopLongTermIdFromId(), EcDoRpc_RopModifyPermissions(), EcDoRpc_RopModifyRecipients(), EcDoRpc_RopMoveFolder(), EcDoRpc_RopOpenAttach(), EcDoRpc_RopOpenEmbeddedMessage(), EcDoRpc_RopOpenFolder(), EcDoRpc_RopOpenMessage(), EcDoRpc_RopOpenStream(), EcDoRpc_RopQueryPosition(), EcDoRpc_RopQueryRows(), EcDoRpc_RopReadStream(), EcDoRpc_RopRegisterNotification(), EcDoRpc_RopReloadCachedInformation(), EcDoRpc_RopRemoveAllRecipients(), EcDoRpc_RopResetTable(), EcDoRpc_RopRestrict(), EcDoRpc_RopSaveChangesMessage(), EcDoRpc_RopSeekRow(), EcDoRpc_RopSeekStream(), EcDoRpc_RopSetColumns(), EcDoRpc_RopSetMessageReadFlag(), EcDoRpc_RopSetProperties(), EcDoRpc_RopSetStreamSize(), EcDoRpc_RopSortTable(), EcDoRpc_RopSubmitMessage(), EcDoRpc_RopSyncConfigure(), EcDoRpc_RopSyncGetTransferState(), EcDoRpc_RopSyncImportDeletes(), EcDoRpc_RopSyncImportHierarchyChange(), EcDoRpc_RopSyncImportMessageChange(), EcDoRpc_RopSyncImportReadStateChanges(), EcDoRpc_RopSyncOpenCollector(), EcDoRpc_RopSyncUploadStateStreamBegin(), EcDoRpc_RopSyncUploadStateStreamContinue(), EcDoRpc_RopSyncUploadStateStreamEnd(), EcDoRpc_RopTransportSend(), EcDoRpc_RopWriteStream(), RopGetReceiveFolder(), and RopSetReceiveFolder().

_PUBLIC_ struct mapi_handles_context* mapi_handles_init | ( | TALLOC_CTX * | mem_ctx | ) |
| read

Initialize MAPI handles context

Parameters

  mem_ctx | pointer to the memory context

Returns
  Allocated MAPI handles context on success, otherwise NULL

Referenced by emsmdbp_init().

_PUBLIC_ enum MAPISTATUS mapi_handles_release | ( | struct mapi_handles_context * | handles_ctx | ) |

Release MAPI handles context

Parameters

  handles_ctx | pointer to the MAPI handles context

Returns
  MAPI_E_SUCCESS on success, otherwise MAPI error

Referenced by emsmdbp_mapi_handles_destructor().

_PUBLIC_ enum MAPISTATUS mapi_handles_search | ( | struct mapi_handles_context * | handles_ctx,
|  | uint32_t | handle,
|  | struct mapi_handles ** | rec
| ) |  |

Search for a record in the TDB database

Parameters

  handles_ctx | pointer to the MAPI handles context
  handle | MAPI handle to lookup
  rec | pointer to the MAPI handle structure the function returns

Returns
  MAPI_E_SUCCESS on success, otherwise MAPI error

Referenced by EcDoRpc_RopCommitStream(), EcDoRpc_RopCopyFolder(), EcDoRpc_RopCopyTo(), EcDoRpc_RopCreateAttach(), EcDoRpc_RopCreateFolder(), EcDoRpc_RopCreateMessage(), EcDoRpc_RopDeleteFolder(), EcDoRpc_RopDeleteMessages(), EcDoRpc_RopEmptyFolder(), EcDoRpc_RopFastTransferSourceCopyTo(), EcDoRpc_RopFastTransferSourceGetBuffer(), EcDoRpc_RopFindRow(), EcDoRpc_RopGetAttachmentTable(), EcDoRpc_RopGetContentsTable(), EcDoRpc_RopGetHierarchyTable(), EcDoRpc_RopGetLocalReplicaIds(), EcDoRpc_RopGetPermissionsTable(), EcDoRpc_RopGetPropertiesAll(), EcDoRpc_RopGetPropertiesList(), EcDoRpc_RopGetPropertiesSpecific(), EcDoRpc_RopGetStreamSize(), EcDoRpc_RopGetTransportFolder(), EcDoRpc_RopIdFromLongTermId(), EcDoRpc_RopLongTermIdFromId(), EcDoRpc_RopModifyPermissions(), EcDoRpc_RopModifyRecipients(), EcDoRpc_RopMoveFolder(), EcDoRpc_RopOpenAttach(), EcDoRpc_RopOpenEmbeddedMessage(), EcDoRpc_RopOpenFolder(), EcDoRpc_RopOpenMessage(), EcDoRpc_RopOpenStream(), EcDoRpc_RopQueryPosition(), EcDoRpc_RopQueryRows(), EcDoRpc_RopReadStream(), EcDoRpc_RopRegisterNotification(), EcDoRpc_RopReloadCachedInformation(), EcDoRpc_RopRemoveAllRecipients(), EcDoRpc_RopResetTable(), EcDoRpc_RopRestrict(), EcDoRpc_RopSaveChangesMessage(), EcDoRpc_RopSeekRow(), EcDoRpc_RopSeekStream(), EcDoRpc_RopSetColumns(), EcDoRpc_RopSetMessageReadFlag(), EcDoRpc_RopSetProperties(), EcDoRpc_RopSetStreamSize(), EcDoRpc_RopSortTable(), EcDoRpc_RopSubmitMessage(), EcDoRpc_RopSyncConfigure(), EcDoRpc_RopSyncGetTransferState(), EcDoRpc_RopSyncImportDeletes(), EcDoRpc_RopSyncImportHierarchyChange(), EcDoRpc_RopSyncImportMessageChange(), EcDoRpc_RopSyncImportReadStateChanges(), EcDoRpc_RopSyncOpenCollector(), EcDoRpc_RopSyncUploadStateStreamBegin(), EcDoRpc_RopSyncUploadStateStreamContinue(), EcDoRpc_RopSyncUploadStateStreamEnd(), EcDoRpc_RopTransportSend(), EcDoRpc_RopWriteStream(), RopGetReceiveFolder(), and RopSetReceiveFolder().

_PUBLIC_ enum MAPISTATUS mapi_handles_set_private_data | ( | struct mapi_handles * | handle,
|  | void * | private_data
| ) |  |

Set the private data associated to a MAPI handle

Parameters

  handle | pointer to the MAPI handle structure
  private_data | pointer to the private data to associate to the MAPI handle

Returns
  MAPI_E_SUCCESS on success, otherwise MAPI error

Referenced by EcDoRpc_RopCreateAttach(), EcDoRpc_RopCreateFolder(), EcDoRpc_RopCreateMessage(), EcDoRpc_RopFastTransferSourceCopyTo(), EcDoRpc_RopGetAttachmentTable(), EcDoRpc_RopGetContentsTable(), EcDoRpc_RopGetHierarchyTable(), EcDoRpc_RopGetPermissionsTable(), EcDoRpc_RopLogon(), EcDoRpc_RopOpenAttach(), EcDoRpc_RopOpenEmbeddedMessage(), EcDoRpc_RopOpenFolder(), EcDoRpc_RopOpenMessage(), EcDoRpc_RopOpenStream(), EcDoRpc_RopRegisterNotification(), EcDoRpc_RopSyncConfigure(), EcDoRpc_RopSyncGetTransferState(), EcDoRpc_RopSyncImportMessageChange(), and EcDoRpc_RopSyncOpenCollector().

static enum MAPISTATUS mapi_handles_tdb_free | ( | struct mapi_handles_context * | handles_ctx,
|  | uint32_t | handle
| ) |  |
| static

Set a TDB record data as null meaning it can be reused in the future.

Parameters

  handles_ctx | pointer to the MAPI handles context
  handle | handle key value to free

Returns
  MAPI_E_SUCCESS on success, otherwise MAPI error

Referenced by mapi_handles_add(), and mapi_handles_delete().

static enum MAPISTATUS mapi_handles_tdb_update | ( | struct mapi_handles_context * | handles_ctx,
|  | uint32_t | handle,
|  | uint32_t | container_handle
| ) |  |
| static

Update a TDB record

Referenced by mapi_handles_add().

static int mapi_handles_traverse_delete | ( | TDB_CONTEXT * | tdb_ctx,
|  | TDB_DATA | key,
|  | TDB_DATA | dbuf,
|  | void * | state
| ) |  |
| static

Traverse TDB database and search for records which dbuf value is set to state.

Parameters

  tdb_ctx | pointer to the TDB context
  key | the current TDB key (potential child handle)
  dbuf | the current TDB value (parent handle)
  state | pointer on private data

Returns
  1 when a free record is found, otherwise 0

References mapi_handles_delete().

Referenced by mapi_handles_delete().

static int mapi_handles_traverse_null | ( | TDB_CONTEXT * | tdb_ctx,
|  | TDB_DATA | key,
|  | TDB_DATA | dbuf,
|  | void * | state
| ) |  |
| static

Traverse TDB database and search for the first record which dbuf value is "null" string.

Parameters

  tdb_ctx | pointer to the TDB context
  key | the current TDB key
  dbuf | the current TDB value
  state | pointer on private data

Returns
  1 when a free record is found, otherwise 0

Referenced by mapi_handles_add().

| This content is licensed under the Creative Commons Attribution ShareAlike License v. 3.0: http://creativecommons.org/licenses/by-sa/3.0/