Server-side specific objects init/release routines. More...
#include <ctype.h>#include "mapiproxy/dcesrv_mapiproxy.h"#include "mapiproxy/libmapiproxy/libmapiproxy.h"#include "mapiproxy/libmapiproxy/fault_util.h"#include "mapiproxy/libmapiserver/libmapiserver.h"#include "mapiproxy/libmapistore/mapistore_nameid.h"#include "libmapi/property_tags.h"#include "libmapi/property_altnames.h"#include "dcesrv_exchange_emsmdb.h"Functions | |
| _PUBLIC_ enum mapistore_error | emsmdbp_folder_delete (struct emsmdbp_context *emsmdbp_ctx, struct emsmdbp_object *parent_folder, uint64_t fid, uint8_t flags) |
| _PUBLIC_ enum mapistore_error | emsmdbp_folder_delete_indexing_records (struct mapistore_context *mstore_ctx, uint32_t context_id, char *username, uint64_t fid, uint64_t *deleted_fmids, uint32_t deleted_fmids_count, uint8_t flags) |
| enum MAPISTATUS | emsmdbp_folder_get_recursive_folder_count (struct emsmdbp_context *emsmdbp_ctx, struct emsmdbp_object *folder, uint32_t *row_countp) |
| _PUBLIC_ uint32_t | emsmdbp_get_contextID (struct emsmdbp_object *object) |
| char * | emsmdbp_get_owner (struct emsmdbp_object *object) |
| bool | emsmdbp_is_mailboxstore (struct emsmdbp_object *object) |
| bool | emsmdbp_is_mapistore (struct emsmdbp_object *object) |
| _PUBLIC_ enum MAPISTATUS | emsmdbp_object_attach_sharing_metadata_XML_file (struct emsmdbp_context *emsmdbp_ctx, struct emsmdbp_object *sharing_object) |
| _PUBLIC_ struct emsmdbp_object * | emsmdbp_object_attachment_init (TALLOC_CTX *mem_ctx, struct emsmdbp_context *emsmdbp_ctx, uint64_t messageID, struct emsmdbp_object *parent) |
| _PUBLIC_ int | emsmdbp_object_copy_properties (struct emsmdbp_context *emsmdbp_ctx, struct emsmdbp_object *source_object, struct emsmdbp_object *target_object, struct SPropTagArray *excluded_properties, bool deep_copy) |
| _PUBLIC_ enum MAPISTATUS | emsmdbp_object_create_folder (struct emsmdbp_context *emsmdbp_ctx, struct emsmdbp_object *parent_folder, TALLOC_CTX *mem_ctx, uint64_t fid, struct SRow *rowp, bool force_container_class, struct emsmdbp_object **new_folderp) |
| static int | emsmdbp_object_destructor (void *data) |
| _PUBLIC_ struct emsmdbp_object * | emsmdbp_object_folder_init (TALLOC_CTX *mem_ctx, struct emsmdbp_context *emsmdbp_ctx, uint64_t folderID, struct emsmdbp_object *parent_object) |
| _PUBLIC_ struct emsmdbp_object * | emsmdbp_object_ftcontext_init (TALLOC_CTX *mem_ctx, struct emsmdbp_context *emsmdbp_ctx, struct emsmdbp_object *parent) |
| _PUBLIC_ struct emsmdbp_object * | emsmdbp_object_init (TALLOC_CTX *mem_ctx, struct emsmdbp_context *emsmdbp_ctx, struct emsmdbp_object *parent_object) |
| _PUBLIC_ struct emsmdbp_object * | emsmdbp_object_mailbox_init (TALLOC_CTX *mem_ctx, struct emsmdbp_context *emsmdbp_ctx, const char *essDN, bool mailboxstore) |
| _PUBLIC_ struct emsmdbp_object * | emsmdbp_object_message_init (TALLOC_CTX *mem_ctx, struct emsmdbp_context *emsmdbp_ctx, uint64_t messageID, struct emsmdbp_object *parent) |
| _PUBLIC_ enum MAPISTATUS | emsmdbp_object_open_folder_by_fid (TALLOC_CTX *mem_ctx, struct emsmdbp_context *emsmdbp_ctx, struct emsmdbp_object *context_object, uint64_t fid, struct emsmdbp_object **folder_object_p) |
| static enum MAPISTATUS | emsmdbp_object_sharing_metadata_property (struct emsmdbp_context *emsmdbp_ctx, struct emsmdbp_object *sharing_object, struct Binary_r **attach_bin, TALLOC_CTX *mem_ctx) |
| static enum MAPISTATUS | emsmdbp_object_sharing_metadata_providers_node (struct emsmdbp_context *emsmdbp_ctx, struct emsmdbp_object *sharing_object, char *remote_uid, char *remote_store_uid, char *target_recipients, char **providers_node, TALLOC_CTX *mem_ctx) |
| static enum MAPISTATUS | emsmdbp_object_sharing_metadata_recipients_attr (struct emsmdbp_context *emsmdbp_ctx, struct emsmdbp_object *sharing_object, char **target_recipients_attr, TALLOC_CTX *mem_ctx) |
| _PUBLIC_ struct emsmdbp_object * | emsmdbp_object_stream_init (TALLOC_CTX *mem_ctx, struct emsmdbp_context *emsmdbp_ctx, struct emsmdbp_object *parent) |
| _PUBLIC_ struct emsmdbp_object * | emsmdbp_object_synccontext_init (TALLOC_CTX *mem_ctx, struct emsmdbp_context *emsmdbp_ctx, struct emsmdbp_object *parent_object) |
| _PUBLIC_ enum MAPISTATUS | emsmdbp_object_table_get_recursive_row_props (TALLOC_CTX *mem_ctx, struct emsmdbp_context *emsmdbp_ctx, struct emsmdbp_object *context_object, DATA_BLOB *datablob, struct SPropTagArray *properties, uint64_t current_fid, int64_t *remaining, uint32_t *count) |
| _PUBLIC_ struct emsmdbp_object * | emsmdbp_object_table_init (TALLOC_CTX *mem_ctx, struct emsmdbp_context *emsmdbp_ctx, struct emsmdbp_object *parent) |
| static void * | get_emsmdbp_data (enum MAPITAGS ul_prop_tag, struct SPropTagArray *s_prop_tag_array, void **data_pointers, enum MAPISTATUS *retvals) |
Server-side specific objects init/release routines.
| _PUBLIC_ enum mapistore_error emsmdbp_folder_delete | ( | struct emsmdbp_context * | emsmdbp_ctx, |
| struct emsmdbp_object * | parent_folder, | ||
| uint64_t | fid, | ||
| uint8_t | flags | ||
| ) |
Delete a folder.
| emsmdbp_ctx | pointer to the emsmdbp context |
| parent_folder | the parent folder |
| fid | the folder identifier to delete from parent_folder |
| flags | the delete flags. |
Possible values for flags are:
References emsmdbp_folder_delete_indexing_records(), emsmdbp_get_contextID(), emsmdbp_get_owner(), emsmdbp_is_mailboxstore(), emsmdbp_is_mapistore(), openchangedb_delete_folder(), openchangedb_get_mapistoreURI(), and oxosfld_is_special_folder().
Referenced by EcDoRpc_RopDeleteFolder(), and EcDoRpc_RopSyncImportDeletes().
| _PUBLIC_ enum mapistore_error emsmdbp_folder_delete_indexing_records | ( | struct mapistore_context * | mstore_ctx, |
| uint32_t | context_id, | ||
| char * | username, | ||
| uint64_t | fid, | ||
| uint64_t * | deleted_fmids, | ||
| uint32_t | deleted_fmids_count, | ||
| uint8_t | flags | ||
| ) |
Delete the fmids from a folder in the indexing database.
| mstore_ctx | pointer to the mapistore context |
| context_id | the context identifier |
| username | the owner of the folder to delete its entries |
| fid | the folder identifier |
| deleted_fmid | the array of child fmids from the folder |
| deleted_fmid_count | the number of deleted_fmids |
| flags | the delete flags. See emsmdbp_folder_delete for details. |
Referenced by emsmdbp_folder_delete().
| enum MAPISTATUS emsmdbp_folder_get_recursive_folder_count | ( | struct emsmdbp_context * | emsmdbp_ctx, |
| struct emsmdbp_object * | folder, | ||
| uint32_t * | row_countp | ||
| ) |
Return the full number of folders within specified folder's hierarchy
| emsmdbp_ctx | pointer to the emsmdbp context |
| folder | pointer to the emsmdb folder to start the count from |
| row_countp | pointer on the number of folders to return |
References emsmdbp_get_contextID(), emsmdbp_object_open_folder_by_fid(), mapi_handles_add(), and mapi_handles_delete().
Referenced by EcDoRpc_RopGetHierarchyTable().
| _PUBLIC_ uint32_t emsmdbp_get_contextID | ( | struct emsmdbp_object * | object | ) |
Return the contextID associated to a handle
| object | pointer to the emsmdp object |
Referenced by EcDoRpc_RopCopyFolder(), EcDoRpc_RopCreateAttach(), EcDoRpc_RopCreateMessage(), EcDoRpc_RopDeleteMessages(), EcDoRpc_RopFindRow(), EcDoRpc_RopModifyPermissions(), EcDoRpc_RopModifyRecipients(), EcDoRpc_RopOpenAttach(), EcDoRpc_RopOpenEmbeddedMessage(), EcDoRpc_RopReloadCachedInformation(), EcDoRpc_RopRemoveAllRecipients(), EcDoRpc_RopResetTable(), EcDoRpc_RopRestrict(), EcDoRpc_RopSaveChangesMessage(), EcDoRpc_RopSetColumns(), EcDoRpc_RopSetMessageReadFlag(), EcDoRpc_RopSortTable(), EcDoRpc_RopSubmitMessage(), EcDoRpc_RopSyncImportDeletes(), EcDoRpc_RopSyncImportMessageChange(), EcDoRpc_RopSyncImportMessageMove(), EcDoRpc_RopSyncImportReadStateChanges(), EcDoRpc_RopTransportSend(), emsmdbp_folder_delete(), emsmdbp_folder_get_recursive_folder_count(), emsmdbp_object_attach_sharing_metadata_XML_file(), emsmdbp_object_create_folder(), emsmdbp_object_destructor(), emsmdbp_object_sharing_metadata_recipients_attr(), emsmdbp_object_table_get_recursive_row_props(), oxcfxics_push_folderChange(), and oxcfxics_push_messageChange().
| char* emsmdbp_get_owner | ( | struct emsmdbp_object * | object | ) |
Convenience function to determine the owner of an object
| object | pointer to the emsmdp object |
Referenced by EcDoRpc_RopDeleteMessages(), EcDoRpc_RopSaveChangesMessage(), EcDoRpc_RopSubmitMessage(), EcDoRpc_RopSyncGetTransferState(), EcDoRpc_RopSyncImportDeletes(), EcDoRpc_RopSyncImportHierarchyChange(), EcDoRpc_RopSyncImportMessageChange(), EcDoRpc_RopSyncImportMessageMove(), EcDoRpc_RopSyncImportReadStateChanges(), and emsmdbp_folder_delete().
| bool emsmdbp_is_mailboxstore | ( | struct emsmdbp_object * | object | ) |
Convenient function to determine whether specified mapi_handles refers to object within mailbox or public folders store.
| object | pointer to the emsmdp object |
Referenced by emsmdbp_folder_delete().
| bool emsmdbp_is_mapistore | ( | struct emsmdbp_object * | object | ) |
Convenient function to determine whether specified object is using mapistore or not
| object | pointer to the emsmdp object |
Referenced by EcDoRpc_RopCopyFolder(), EcDoRpc_RopCreateAttach(), EcDoRpc_RopCreateFolder(), EcDoRpc_RopCreateMessage(), EcDoRpc_RopDeleteMessages(), EcDoRpc_RopEmptyFolder(), EcDoRpc_RopFindRow(), EcDoRpc_RopGetMessageStatus(), EcDoRpc_RopGetPermissionsTable(), EcDoRpc_RopModifyPermissions(), EcDoRpc_RopModifyRecipients(), EcDoRpc_RopOpenAttach(), EcDoRpc_RopOpenEmbeddedMessage(), EcDoRpc_RopReloadCachedInformation(), EcDoRpc_RopRemoveAllRecipients(), EcDoRpc_RopResetTable(), EcDoRpc_RopRestrict(), EcDoRpc_RopSaveChangesMessage(), EcDoRpc_RopSetColumns(), EcDoRpc_RopSetMessageReadFlag(), EcDoRpc_RopSortTable(), EcDoRpc_RopSubmitMessage(), EcDoRpc_RopSyncImportDeletes(), EcDoRpc_RopSyncImportMessageChange(), EcDoRpc_RopSyncImportMessageMove(), EcDoRpc_RopSyncImportReadStateChanges(), EcDoRpc_RopTransportSend(), emsmdbp_folder_delete(), emsmdbp_object_attach_sharing_metadata_XML_file(), emsmdbp_object_copy_properties(), emsmdbp_object_create_folder(), emsmdbp_object_destructor(), oxcfxics_push_folderChange(), and oxcfxics_push_messageChange().
| _PUBLIC_ enum MAPISTATUS emsmdbp_object_attach_sharing_metadata_XML_file | ( | struct emsmdbp_context * | emsmdbp_ctx, |
| struct emsmdbp_object * | sharing_object | ||
| ) |
Create a sharing metadata XML file for folder sharing invitation, request and response and store it as attachment in the sharing object. See [MS-OXSHARE] for this kind of messages and [MS-OXSHRMSG] for the XML format.
| emsmdbp_ctx | pointer to the emsmdb provider context |
| sharing_object | the original sharing message object to dump the XML data from |
References emsmdbp_get_contextID(), emsmdbp_is_mapistore(), emsmdbp_object_attachment_init(), and emsmdbp_object_sharing_metadata_property().
Referenced by EcDoRpc_RopTransportSend().
| _PUBLIC_ struct emsmdbp_object* emsmdbp_object_attachment_init | ( | TALLOC_CTX * | mem_ctx, |
| struct emsmdbp_context * | emsmdbp_ctx, | ||
| uint64_t | messageID, | ||
| struct emsmdbp_object * | parent | ||
| ) |
Initialize a attachment object
| mem_ctx | pointer to the memory context |
| emsmdbp_ctx | pointer to the emsmdb provider cotnext |
| folderID | the folder identifier |
| messageID | the message identifier |
| parent | emsmdbp object of the parent |
References emsmdbp_object_init().
Referenced by EcDoRpc_RopCreateAttach(), EcDoRpc_RopOpenAttach(), and emsmdbp_object_attach_sharing_metadata_XML_file().
| _PUBLIC_ int emsmdbp_object_copy_properties | ( | struct emsmdbp_context * | emsmdbp_ctx, |
| struct emsmdbp_object * | source_object, | ||
| struct emsmdbp_object * | target_object, | ||
| struct SPropTagArray * | excluded_properties, | ||
| bool | deep_copy | ||
| ) |
Copy properties from an object to another object
| emsmdbp_ctx | pointer to the emsmdb provider context |
| source_object | pointer to the source object |
| target_object | pointer to the target object |
| excluded_properties | pointer to a SPropTagArray listing properties that must not be copied |
| deep_copy | indicates whether subobjects must be copied |
References emsmdbp_is_mapistore().
Referenced by EcDoRpc_RopCopyTo().
| _PUBLIC_ enum MAPISTATUS emsmdbp_object_create_folder | ( | struct emsmdbp_context * | emsmdbp_ctx, |
| struct emsmdbp_object * | parent_folder, | ||
| TALLOC_CTX * | mem_ctx, | ||
| uint64_t | fid, | ||
| struct SRow * | rowp, | ||
| bool | force_container_class, | ||
| struct emsmdbp_object ** | new_folderp | ||
| ) |
Create a folder
| emsmdbp_ctx | pointer to the emsmdbp context | |
| parent_folder | pointer to parent folder where to create the new folder | |
| mem_ctx | pointer to the memory context | |
| fid | Folder Identifier to assign the new folder object | |
| rowp | the properties to set to the new folder | |
| force_container_class | force the usage of Fallback role if we are creating a mapistore root folder and the container class is not available at rowp parameter | |
| [out] | new_folderp | location to store new emsmdbp object on success |
References emsmdbp_get_contextID(), emsmdbp_is_mapistore(), emsmdbp_object_folder_init(), and openchangedb_get_fid_by_name().
Referenced by EcDoRpc_RopCreateFolder(), and EcDoRpc_RopSyncImportHierarchyChange().
|
static |
talloc destructor for emsmdbp_objects
| data | generic pointer on data |
References emsmdbp_get_contextID(), and emsmdbp_is_mapistore().
Referenced by emsmdbp_object_init().
| _PUBLIC_ struct emsmdbp_object* emsmdbp_object_folder_init | ( | TALLOC_CTX * | mem_ctx, |
| struct emsmdbp_context * | emsmdbp_ctx, | ||
| uint64_t | folderID, | ||
| struct emsmdbp_object * | parent_object | ||
| ) |
Initialize a folder object
| mem_ctx | pointer to the memory context |
| emsmdbp_ctx | pointer to the emsmdb provider context |
| folderID | the folder identifier |
| parent | emsmdbp object of the parent folder for this folder |
References emsmdbp_object_init().
Referenced by emsmdbp_object_create_folder(), and emsmdbp_object_open_folder_by_fid().
| _PUBLIC_ struct emsmdbp_object* emsmdbp_object_ftcontext_init | ( | TALLOC_CTX * | mem_ctx, |
| struct emsmdbp_context * | emsmdbp_ctx, | ||
| struct emsmdbp_object * | parent | ||
| ) |
Initialize a ftcontext object
| mem_ctx | pointer to the memory context |
| emsmdbp_ctx | pointer to the emsmdb provider cotnext |
| whole_store | whether the subscription applies to the specified change on the entire store or stricly on the specified folder/message |
| folderID | the folder identifier |
| messageID | the message identifier |
| parent | emsmdbp object of the parent |
References emsmdbp_object_init().
Referenced by EcDoRpc_RopFastTransferSourceCopyTo(), and EcDoRpc_RopSyncGetTransferState().
| _PUBLIC_ struct emsmdbp_object* emsmdbp_object_init | ( | TALLOC_CTX * | mem_ctx, |
| struct emsmdbp_context * | emsmdbp_ctx, | ||
| struct emsmdbp_object * | parent_object | ||
| ) |
Initialize an emsmdbp_object
| mem_ctx | pointer to the memory context |
| emsmdbp_ctx | pointer to the emsmdb provider context |
References emsmdbp_object_destructor().
Referenced by emsmdbp_object_attachment_init(), emsmdbp_object_folder_init(), emsmdbp_object_ftcontext_init(), emsmdbp_object_mailbox_init(), emsmdbp_object_message_init(), emsmdbp_object_stream_init(), emsmdbp_object_synccontext_init(), and emsmdbp_object_table_init().
| _PUBLIC_ struct emsmdbp_object* emsmdbp_object_mailbox_init | ( | TALLOC_CTX * | mem_ctx, |
| struct emsmdbp_context * | emsmdbp_ctx, | ||
| const char * | essDN, | ||
| bool | mailboxstore | ||
| ) |
Initialize a mailbox object
| mem_ctx | pointer to the memory context |
| emsmdbp_ctx | pointer to the emsmdb provider context |
| request | pointer to the Logon MAPI request |
| mailboxstore | boolean which specifies whether the mailbox object is a PF store or a private mailbox store |
References emsmdbp_object_init(), openchangedb_get_PublicFolderID(), and openchangedb_get_SystemFolderID().
Referenced by EcDoRpc_RopLogon().
| _PUBLIC_ struct emsmdbp_object* emsmdbp_object_message_init | ( | TALLOC_CTX * | mem_ctx, |
| struct emsmdbp_context * | emsmdbp_ctx, | ||
| uint64_t | messageID, | ||
| struct emsmdbp_object * | parent | ||
| ) |
Initialize a message object
| mem_ctx | pointer to the memory context |
| emsmdbp_ctx | pointer to the emsmdb provider context |
| messageID | the message identifier |
| parent | emsmdbp object of the parent |
References emsmdbp_object_init().
Referenced by EcDoRpc_RopCreateMessage(), EcDoRpc_RopOpenEmbeddedMessage(), and EcDoRpc_RopSyncImportMessageChange().
| _PUBLIC_ enum MAPISTATUS emsmdbp_object_open_folder_by_fid | ( | TALLOC_CTX * | mem_ctx, |
| struct emsmdbp_context * | emsmdbp_ctx, | ||
| struct emsmdbp_object * | context_object, | ||
| uint64_t | fid, | ||
| struct emsmdbp_object ** | folder_object_p | ||
| ) |
Return the folder object associated to specified folder identified
| mem_ctx | pointer to the memory context | |
| emsmdbp_ctx | pointer to the emsmdbp context | |
| context_object | pointer to current context object | |
| fid | pointer to the Folder Identifier to lookup | |
| [out] | folder_object_p | location to store emsmdbp object on success |
References emsmdbp_object_folder_init().
Referenced by EcDoRpc_RopCreateFolder(), EcDoRpc_RopCreateMessage(), EcDoRpc_RopOpenFolder(), EcDoRpc_RopSyncImportHierarchyChange(), EcDoRpc_RopSyncImportMessageMove(), emsmdbp_folder_get_recursive_folder_count(), and emsmdbp_object_table_get_recursive_row_props().
|
static |
Create the XML file from the sharing message object and store it as binary property in attach_bin out parameter.
| emsmdbp_ctx | pointer to the emsmdb provider cotnext | |
| sharing_object | the sharing message object to get the XML data from | |
| [out] | attach_bin | pointer to Binary_r property value pointer where the XML data is stored |
| mem_ctx | pointer to memory context where the attach_bin is created |
References emsmdbp_object_sharing_metadata_providers_node(), emsmdbp_object_sharing_metadata_recipients_attr(), and get_emsmdbp_data().
Referenced by emsmdbp_object_attach_sharing_metadata_XML_file().
|
static |
Store the Providers node into providers_node out parameter.
| emsmdbp_ctx | pointer to the emsmdb provider cotnext | |
| sharing_object | the sharing message object to get the XML data from | |
| remote_uid | string with the folder id to share, NULL when no required | |
| remote_store_uid | string with the mailbox id where the folder belongs to, NULL when non-required | |
| target_recipients | the string where the recipients' email addresses separated by semi colons are stored | |
| [out] | providers_node | pointer to string where the Providers XML node is stored |
| mem_ctx | pointer to memory context where the providers_node is created |
Referenced by emsmdbp_object_sharing_metadata_property().
|
static |
Store the target recipients attribute in out parameter.
| emsmdbp_ctx | pointer to the emsmdb provider cotnext | |
| sharing_object | the sharing message object to get the XML data from | |
| [out] | pointer | to string where the TargetRecipients XML attribute is stored |
| mem_ctx | pointer to memory context where the target_recipients_attr is created |
References emsmdbp_get_contextID().
Referenced by emsmdbp_object_sharing_metadata_property().
| _PUBLIC_ struct emsmdbp_object* emsmdbp_object_stream_init | ( | TALLOC_CTX * | mem_ctx, |
| struct emsmdbp_context * | emsmdbp_ctx, | ||
| struct emsmdbp_object * | parent | ||
| ) |
Initialize a stream object
| mem_ctx | pointer to the memory context |
| emsmdbp_ctx | pointer to the emsmdb provider cotnext |
| property | the stream property identifier |
| parent | emsmdbp object of the parent |
References emsmdbp_object_init().
Referenced by EcDoRpc_RopOpenStream().
| _PUBLIC_ struct emsmdbp_object* emsmdbp_object_synccontext_init | ( | TALLOC_CTX * | mem_ctx, |
| struct emsmdbp_context * | emsmdbp_ctx, | ||
| struct emsmdbp_object * | parent_object | ||
| ) |
Initialize a synccontext object
| mem_ctx | pointer to the memory context |
| emsmdbp_ctx | pointer to the emsmdb provider cotnext |
| whole_store | whether the subscription applies to the specified change on the entire store or stricly on the specified folder/message |
| folderID | the folder identifier |
| messageID | the message identifier |
| parent | emsmdbp object of the parent |
References emsmdbp_object_init(), and openchangedb_get_MailboxReplica().
Referenced by EcDoRpc_RopSyncConfigure(), and EcDoRpc_RopSyncOpenCollector().
| _PUBLIC_ enum MAPISTATUS emsmdbp_object_table_get_recursive_row_props | ( | TALLOC_CTX * | mem_ctx, |
| struct emsmdbp_context * | emsmdbp_ctx, | ||
| struct emsmdbp_object * | context_object, | ||
| DATA_BLOB * | datablob, | ||
| struct SPropTagArray * | properties, | ||
| uint64_t | current_fid, | ||
| int64_t * | remaining, | ||
| uint32_t * | count | ||
| ) |
This function process the hierarchy of folders recursively and fill requested rows.
| mem_ctx | pointer to the memory context |
| emsmdbp_ctx | pointer to the emsmdb context |
| context_object | pointer to the context object |
| datablob | pointer to the DATA blob to fill |
| properties | pointer to the array of properties used to fill a row of the table |
| current_fid | the FolderID of the folder to open and process |
| remaining | pointer on the remaining rows to process |
| count | pointer on the number of rows processed to return |
We currently rely on Outlook asking for 4096 rows to fill this buffer in one operation.
References emsmdbp_get_contextID(), emsmdbp_object_open_folder_by_fid(), mapi_handles_add(), and mapi_handles_delete().
Referenced by EcDoRpc_RopQueryRows().
| _PUBLIC_ struct emsmdbp_object* emsmdbp_object_table_init | ( | TALLOC_CTX * | mem_ctx, |
| struct emsmdbp_context * | emsmdbp_ctx, | ||
| struct emsmdbp_object * | parent | ||
| ) |
Initialize a table object
| mem_ctx | pointer to the memory context |
| emsmdbp_ctx | pointer to the emsmdb provider context |
| parent | emsmdbp object of the parent |
References emsmdbp_object_init().
Referenced by EcDoRpc_RopGetPermissionsTable(), and EcDoRpc_RopGetRulesTable().
|
static |
Convenience function to extract values from data_pointers safely.
| ulPropTag | MAPI property tag |
| SPropTagArray | array of property tags |
| data_pointers | array with the property values that matches the previous SPropTagArray |
| retvals | array of returned value result of getting the property |
Referenced by emsmdbp_object_sharing_metadata_property().
|
|
This content is licensed under the Creative Commons Attribution ShareAlike License v. 3.0: http://creativecommons.org/licenses/by-sa/3.0/ |