emsmdbp_object.c File Reference

Server-side specific objects init/release routines. More...

#include <ctype.h>
#include "mapiproxy/dcesrv_mapiproxy.h"
#include "mapiproxy/libmapiproxy/libmapiproxy.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

static char * emsmdbp_compute_parent_uri (TALLOC_CTX *mem_ctx, char *uri)
static enum mapistore_context_role emsmdbp_container_class_to_role (const char *container_class)
static int emsmdbp_copy_message_attachments_mapistore (struct emsmdbp_context *emsmdbp_ctx, struct emsmdbp_object *source_object, struct emsmdbp_object *dest_object)
static int emsmdbp_copy_message_recipients_mapistore (struct emsmdbp_context *emsmdbp_ctx, struct emsmdbp_object *source_object, struct emsmdbp_object *dest_object)
static int emsmdbp_copy_properties (struct emsmdbp_context *emsmdbp_ctx, struct emsmdbp_object *source_object, struct emsmdbp_object *dest_object, struct SPropTagArray *excluded_tags)
static int emsmdbp_days_in_month (int month, int year)
static void emsmdbp_fill_prop_index (struct emsmdbp_prop_index *prop_index, struct SPropTagArray *properties)
_PUBLIC_ void emsmdbp_fill_row_blob (TALLOC_CTX *mem_ctx, struct emsmdbp_context *emsmdbp_ctx, uint8_t *layout, DATA_BLOB *property_row, struct SPropTagArray *properties, void **data_pointers, enum MAPISTATUS *retvals, bool *untyped_status)
_PUBLIC_ void emsmdbp_fill_table_row_blob (TALLOC_CTX *mem_ctx, struct emsmdbp_context *emsmdbp_ctx, DATA_BLOB *table_row, uint16_t num_props, enum MAPITAGS *properties, void **data_pointers, enum MAPISTATUS *retvals)
_PUBLIC_ enum mapistore_error emsmdbp_folder_delete (struct emsmdbp_context *emsmdbp_ctx, struct emsmdbp_object *parent_folder, uint64_t fid, uint8_t flags)
int emsmdbp_folder_get_folder_count (struct emsmdbp_context *emsmdbp_ctx, struct emsmdbp_object *folder, uint32_t *row_countp)
_PUBLIC_ struct emsmdbp_objectemsmdbp_folder_open_table (TALLOC_CTX *mem_ctx, struct emsmdbp_object *parent_object, uint32_t table_type, uint32_t handle_id)
static void emsmdbp_freebusy_compile_fbarray (TALLOC_CTX *mem_ctx, uint8_t *minutes_array, struct Binary_r *fb_bin)
static void emsmdbp_freebusy_convert_filetime (struct FILETIME *ft_value, uint32_t *ymon, uint32_t *mins)
static void emsmdbp_freebusy_fill_fbarray (uint8_t **minutes_array, uint32_t *months_ranges, uint16_t nbr_months, struct FILETIME *start, struct FILETIME *end)
static uint16_t emsmdbp_freebusy_find_month_range (uint32_t ymon, uint32_t *months_ranges, uint16_t nbr_months, bool *overflow)
static void emsmdbp_freebusy_make_range (struct tm *start_time, struct tm *end_time)
static void emsmdbp_freebusy_merge_subarray (uint8_t *minutes_array, uint8_t *included_array)
_PUBLIC_ uint32_t emsmdbp_get_contextID (struct emsmdbp_object *object)
_PUBLIC_ int emsmdbp_get_fid_from_uri (struct emsmdbp_context *emsmdbp_ctx, const char *uri, uint64_t *fidp)
static struct emsmdbp_objectemsmdbp_get_mailbox (struct emsmdbp_object *object)
char * emsmdbp_get_owner (struct emsmdbp_object *object)
static int emsmdbp_get_parent_fid (struct emsmdbp_context *emsmdbp_ctx, uint64_t fid, uint64_t *parent_fidp)
_PUBLIC_ int emsmdbp_get_uri_from_fid (TALLOC_CTX *mem_ctx, struct emsmdbp_context *emsmdbp_ctx, uint64_t fid, char **urip)
const char * emsmdbp_getstr_type (struct emsmdbp_object *object)
bool emsmdbp_is_mailboxstore (struct emsmdbp_object *object)
bool emsmdbp_is_mapistore (struct emsmdbp_object *object)
static int emsmdbp_mins_in_ymon (uint32_t ymon)
_PUBLIC_ struct emsmdbp_objectemsmdbp_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, struct emsmdbp_object **new_folderp)
static int emsmdbp_object_destructor (void *data)
static enum mapistore_error emsmdbp_object_folder_commit_creation (struct emsmdbp_context *emsmdbp_ctx, struct emsmdbp_object *new_folder, bool force_container_class)
_PUBLIC_ struct emsmdbp_objectemsmdbp_object_folder_init (TALLOC_CTX *mem_ctx, struct emsmdbp_context *emsmdbp_ctx, uint64_t folderID, struct emsmdbp_object *parent_object)
_PUBLIC_ struct emsmdbp_objectemsmdbp_object_ftcontext_init (TALLOC_CTX *mem_ctx, struct emsmdbp_context *emsmdbp_ctx, struct emsmdbp_object *parent)
_PUBLIC_ int emsmdbp_object_get_available_properties (TALLOC_CTX *mem_ctx, struct emsmdbp_context *emsmdbp_ctx, struct emsmdbp_object *object, struct SPropTagArray **propertiesp)
_PUBLIC_ enum mapistore_error emsmdbp_object_get_fid_by_name (struct emsmdbp_context *emsmdbp_ctx, struct emsmdbp_object *parent_folder, const char *name, uint64_t *fidp)
_PUBLIC_ void ** emsmdbp_object_get_properties (TALLOC_CTX *mem_ctx, struct emsmdbp_context *emsmdbp_ctx, struct emsmdbp_object *object, struct SPropTagArray *properties, enum MAPISTATUS **retvalsp)
static int emsmdbp_object_get_properties_mailbox (TALLOC_CTX *mem_ctx, struct emsmdbp_context *emsmdbp_ctx, struct emsmdbp_object *object, struct SPropTagArray *properties, void **data_pointers, enum MAPISTATUS *retvals)
static int emsmdbp_object_get_properties_mapistore (TALLOC_CTX *mem_ctx, struct emsmdbp_context *emsmdbp_ctx, struct emsmdbp_object *object, struct SPropTagArray *properties, void **data_pointers, enum MAPISTATUS *retvals)
static int emsmdbp_object_get_properties_mapistore_root (TALLOC_CTX *mem_ctx, struct emsmdbp_context *emsmdbp_ctx, struct emsmdbp_object *object, struct SPropTagArray *properties, void **data_pointers, enum MAPISTATUS *retvals)
static int emsmdbp_object_get_properties_message (TALLOC_CTX *mem_ctx, struct emsmdbp_context *emsmdbp_ctx, struct emsmdbp_object *object, struct SPropTagArray *properties, void **data_pointers, enum MAPISTATUS *retvals)
static int emsmdbp_object_get_properties_systemspecialfolder (TALLOC_CTX *mem_ctx, struct emsmdbp_context *emsmdbp_ctx, struct emsmdbp_object *object, struct SPropTagArray *properties, void **data_pointers, enum MAPISTATUS *retvals)
_PUBLIC_ struct
emsmdbp_stream_data
emsmdbp_object_get_stream_data (struct emsmdbp_object *object, enum MAPITAGS prop_tag)
_PUBLIC_ struct emsmdbp_objectemsmdbp_object_init (TALLOC_CTX *mem_ctx, struct emsmdbp_context *emsmdbp_ctx, struct emsmdbp_object *parent_object)
_PUBLIC_ struct emsmdbp_objectemsmdbp_object_mailbox_init (TALLOC_CTX *mem_ctx, struct emsmdbp_context *emsmdbp_ctx, const char *essDN, bool mailboxstore)
static void emsmdbp_object_message_fill_freebusy_properties (struct emsmdbp_object *message_object)
_PUBLIC_ struct emsmdbp_objectemsmdbp_object_message_init (TALLOC_CTX *mem_ctx, struct emsmdbp_context *emsmdbp_ctx, uint64_t messageID, struct emsmdbp_object *parent)
_PUBLIC_ enum mapistore_error emsmdbp_object_message_open (TALLOC_CTX *mem_ctx, struct emsmdbp_context *emsmdbp_ctx, struct emsmdbp_object *parent_object, uint64_t folderID, uint64_t messageID, bool read_write, struct emsmdbp_object **messageP, struct mapistore_message **msgp)
_PUBLIC_ struct emsmdbp_objectemsmdbp_object_message_open_attachment_table (TALLOC_CTX *mem_ctx, struct emsmdbp_context *emsmdbp_ctx, struct emsmdbp_object *message_object)
_PUBLIC_ enum mapistore_error emsmdbp_object_open_folder (TALLOC_CTX *mem_ctx, struct emsmdbp_context *emsmdbp_ctx, struct emsmdbp_object *parent, uint64_t fid, struct emsmdbp_object **folder_object_p)
_PUBLIC_ enum mapistore_error 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)
_PUBLIC_ int emsmdbp_object_set_properties (struct emsmdbp_context *emsmdbp_ctx, struct emsmdbp_object *object, struct SRow *rowp)
_PUBLIC_ int emsmdbp_object_stream_commit (struct emsmdbp_object *stream_object)
_PUBLIC_ struct emsmdbp_objectemsmdbp_object_stream_init (TALLOC_CTX *mem_ctx, struct emsmdbp_context *emsmdbp_ctx, struct emsmdbp_object *parent)
_PUBLIC_ struct emsmdbp_objectemsmdbp_object_subscription_init (TALLOC_CTX *mem_ctx, struct emsmdbp_context *emsmdbp_ctx, struct emsmdbp_object *parent)
_PUBLIC_ struct emsmdbp_objectemsmdbp_object_synccontext_init (TALLOC_CTX *mem_ctx, struct emsmdbp_context *emsmdbp_ctx, struct emsmdbp_object *parent_object)
_PUBLIC_ int emsmdbp_object_table_get_available_properties (TALLOC_CTX *mem_ctx, struct emsmdbp_context *emsmdbp_ctx, struct emsmdbp_object *table_object, struct SPropTagArray **propertiesp)
_PUBLIC_ void ** emsmdbp_object_table_get_row_props (TALLOC_CTX *mem_ctx, struct emsmdbp_context *emsmdbp_ctx, struct emsmdbp_object *table_object, uint32_t row_id, enum mapistore_query_type query_type, enum MAPISTATUS **retvalsp)
_PUBLIC_ struct emsmdbp_objectemsmdbp_object_table_init (TALLOC_CTX *mem_ctx, struct emsmdbp_context *emsmdbp_ctx, struct emsmdbp_object *parent)
_PUBLIC_ struct
emsmdbp_stream_data
emsmdbp_stream_data_from_value (TALLOC_CTX *mem_ctx, enum MAPITAGS prop_tag, void *value)
_PUBLIC_ DATA_BLOB emsmdbp_stream_read_buffer (struct emsmdbp_stream *stream, uint32_t length)
_PUBLIC_ void emsmdbp_stream_write_buffer (TALLOC_CTX *mem_ctx, struct emsmdbp_stream *stream, DATA_BLOB new_buffer)

Variables

static const int max_mins_per_month = 31 * 24 * 60

Detailed Description

Server-side specific objects init/release routines.


Function Documentation

static char* emsmdbp_compute_parent_uri ( TALLOC_CTX *  mem_ctx,
char *  uri 
)
static

Referenced by emsmdbp_get_parent_fid().

static enum mapistore_context_role emsmdbp_container_class_to_role ( const char *  container_class)
static
static int emsmdbp_copy_message_recipients_mapistore ( struct emsmdbp_context emsmdbp_ctx,
struct emsmdbp_object source_object,
struct emsmdbp_object dest_object 
)
inlinestatic
static int emsmdbp_copy_properties ( struct emsmdbp_context emsmdbp_ctx,
struct emsmdbp_object source_object,
struct emsmdbp_object dest_object,
struct SPropTagArray *  excluded_tags 
)
static
static int emsmdbp_days_in_month ( int  month,
int  year 
)
static
static void emsmdbp_fill_prop_index ( struct emsmdbp_prop_index *  prop_index,
struct SPropTagArray *  properties 
)
inlinestatic
_PUBLIC_ void emsmdbp_fill_row_blob ( TALLOC_CTX *  mem_ctx,
struct emsmdbp_context emsmdbp_ctx,
uint8_t *  layout,
DATA_BLOB *  property_row,
struct SPropTagArray *  properties,
void **  data_pointers,
enum MAPISTATUS *  retvals,
bool *  untyped_status 
)
_PUBLIC_ void emsmdbp_fill_table_row_blob ( TALLOC_CTX *  mem_ctx,
struct emsmdbp_context emsmdbp_ctx,
DATA_BLOB *  table_row,
uint16_t  num_props,
enum MAPITAGS *  properties,
void **  data_pointers,
enum MAPISTATUS *  retvals 
)
static void emsmdbp_freebusy_compile_fbarray ( TALLOC_CTX *  mem_ctx,
uint8_t *  minutes_array,
struct Binary_r *  fb_bin 
)
static
static void emsmdbp_freebusy_convert_filetime ( struct FILETIME *  ft_value,
uint32_t *  ymon,
uint32_t *  mins 
)
static
static void emsmdbp_freebusy_fill_fbarray ( uint8_t **  minutes_array,
uint32_t *  months_ranges,
uint16_t  nbr_months,
struct FILETIME *  start,
struct FILETIME *  end 
)
static
static uint16_t emsmdbp_freebusy_find_month_range ( uint32_t  ymon,
uint32_t *  months_ranges,
uint16_t  nbr_months,
bool *  overflow 
)
static
static void emsmdbp_freebusy_make_range ( struct tm *  start_time,
struct tm *  end_time 
)
inlinestatic
static void emsmdbp_freebusy_merge_subarray ( uint8_t *  minutes_array,
uint8_t *  included_array 
)
static
_PUBLIC_ uint32_t emsmdbp_get_contextID ( struct emsmdbp_object object)

Return the contextID associated to a handle

Parameters:
objectpointer to the emsmdp object
Returns:
contextID value on success, otherwise -1

References emsmdbp_get_contextID(), EMSMDBP_OBJECT_FOLDER, EMSMDBP_OBJECT_MAILBOX, emsmdbp_objects::folder, emsmdbp_object_folder::mapistore_root, emsmdbp_object::object, emsmdbp_object::parent_object, and emsmdbp_object::type.

Referenced by EcDoRpc_RopCreateAttach(), EcDoRpc_RopCreateMessage(), EcDoRpc_RopDeleteMessages(), EcDoRpc_RopFindRow(), EcDoRpc_RopModifyPermissions(), EcDoRpc_RopModifyRecipients(), EcDoRpc_RopMoveCopyMessages(), 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_copy_message_attachments_mapistore(), emsmdbp_copy_message_recipients_mapistore(), emsmdbp_fill_notification(), emsmdbp_folder_delete(), emsmdbp_folder_get_folder_count(), emsmdbp_folder_open_table(), emsmdbp_get_contextID(), emsmdbp_object_create_folder(), emsmdbp_object_destructor(), emsmdbp_object_get_available_properties(), emsmdbp_object_get_fid_by_name(), emsmdbp_object_get_properties_mapistore(), emsmdbp_object_get_properties_mapistore_root(), emsmdbp_object_message_fill_freebusy_properties(), emsmdbp_object_message_open(), emsmdbp_object_message_open_attachment_table(), emsmdbp_object_open_folder(), emsmdbp_object_set_properties(), emsmdbp_object_table_get_available_properties(), emsmdbp_object_table_get_row_props(), oxcfxics_fill_transfer_state_arrays(), oxcfxics_push_folderChange(), oxcfxics_push_messageChange(), oxcfxics_push_messageChange_attachments(), oxcfxics_table_set_cn_restriction(), oxomsg_mapistore_handle_message_relocation(), and RopEmptyFolder_GenericFolder().

_PUBLIC_ int emsmdbp_get_fid_from_uri ( struct emsmdbp_context emsmdbp_ctx,
const char *  uri,
uint64_t *  fidp 
)
static int emsmdbp_get_parent_fid ( struct emsmdbp_context emsmdbp_ctx,
uint64_t  fid,
uint64_t *  parent_fidp 
)
static
_PUBLIC_ int emsmdbp_get_uri_from_fid ( TALLOC_CTX *  mem_ctx,
struct emsmdbp_context emsmdbp_ctx,
uint64_t  fid,
char **  urip 
)
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.

Parameters:
objectpointer to the emsmdp object
Returns:
true if parent is within mailbox store, otherwise false

References emsmdbp_get_mailbox(), emsmdbp_objects::mailbox, emsmdbp_object_mailbox::mailboxstore, and emsmdbp_object::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

Parameters:
objectpointer to the emsmdp object
Returns:
true if parent is using mapistore, otherwise false

References emsmdbp_is_mapistore(), EMSMDBP_OBJECT_FOLDER, EMSMDBP_OBJECT_MAILBOX, emsmdbp_objects::folder, emsmdbp_object_folder::mapistore_root, emsmdbp_object::object, emsmdbp_object::parent_object, and emsmdbp_object::type.

Referenced by EcDoRpc_RopCreateAttach(), EcDoRpc_RopCreateMessage(), EcDoRpc_RopDeleteMessages(), EcDoRpc_RopEmptyFolder(), EcDoRpc_RopFindRow(), EcDoRpc_RopGetPermissionsTable(), EcDoRpc_RopModifyPermissions(), EcDoRpc_RopModifyRecipients(), EcDoRpc_RopMoveCopyMessages(), 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_copy_message_attachments_mapistore(), emsmdbp_copy_message_recipients_mapistore(), emsmdbp_folder_delete(), emsmdbp_folder_get_folder_count(), emsmdbp_folder_open_table(), emsmdbp_is_mapistore(), emsmdbp_object_copy_properties(), emsmdbp_object_create_folder(), emsmdbp_object_destructor(), emsmdbp_object_get_available_properties(), emsmdbp_object_get_fid_by_name(), emsmdbp_object_get_properties(), emsmdbp_object_message_fill_freebusy_properties(), emsmdbp_object_message_open(), emsmdbp_object_message_open_attachment_table(), emsmdbp_object_open_folder(), emsmdbp_object_set_properties(), emsmdbp_object_table_get_available_properties(), emsmdbp_object_table_get_row_props(), oxcfxics_fill_transfer_state_arrays(), oxcfxics_push_folderChange(), oxcfxics_push_messageChange(), oxcfxics_push_messageChange_attachments(), and oxcfxics_table_set_cn_restriction().

static int emsmdbp_mins_in_ymon ( uint32_t  ymon)
static
_PUBLIC_ struct emsmdbp_object* emsmdbp_object_attachment_init ( TALLOC_CTX *  mem_ctx,
struct emsmdbp_context emsmdbp_ctx,
uint64_t  messageID,
struct emsmdbp_object parent 
)
read

Initialize a attachment object

Parameters:
mem_ctxpointer to the memory context
emsmdbp_ctxpointer to the emsmdb provider cotnext
folderIDthe folder identifier
messageIDthe message identifier
parentemsmdbp object of the parent

References emsmdbp_objects::attachment, EMSMDBP_OBJECT_ATTACHMENT, emsmdbp_object_init(), and emsmdbp_object::object.

Referenced by EcDoRpc_RopCreateAttach(), EcDoRpc_RopOpenAttach(), and emsmdbp_copy_message_attachments_mapistore().

_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

Parameters:
emsmdbp_ctxpointer to the emsmdb provider context
source_objectpointer to the source object
target_objectpointer to the target object
excluded_propertiespointer to a SPropTagArray listing properties that must not be copied
deep_copyindicates whether subobjects must be copied
Returns:
Allocated emsmdbp object on success, otherwise NULL

References emsmdbp_copy_message_attachments_mapistore(), emsmdbp_copy_message_recipients_mapistore(), emsmdbp_copy_properties(), emsmdbp_is_mapistore(), EMSMDBP_OBJECT_ATTACHMENT, EMSMDBP_OBJECT_FOLDER, EMSMDBP_OBJECT_MAILBOX, EMSMDBP_OBJECT_MESSAGE, and emsmdbp_object::type.

Referenced by EcDoRpc_RopCopyTo(), and oxomsg_mapistore_handle_message_relocation().

_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 
)
read

Initialize a folder object

Parameters:
mem_ctxpointer to the memory context
emsmdbp_ctxpointer to the emsmdb provider context
folderIDthe folder identifier
parentemsmdbp object of the parent folder for this folder
Returns:
Allocated emsmdbp object on success, otherwise NULL

References EMSMDBP_OBJECT_FOLDER, emsmdbp_object_init(), emsmdbp_objects::folder, and emsmdbp_object::object.

Referenced by emsmdbp_object_create_folder(), emsmdbp_object_open_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 
)
read

Initialize a ftcontext object

Parameters:
mem_ctxpointer to the memory context
emsmdbp_ctxpointer to the emsmdb provider cotnext
whole_storewhether the subscription applies to the specified change on the entire store or stricly on the specified folder/message
folderIDthe folder identifier
messageIDthe message identifier
parentemsmdbp object of the parent

References EMSMDBP_OBJECT_FTCONTEXT, emsmdbp_object_init(), emsmdbp_objects::ftcontext, and emsmdbp_object::object.

Referenced by EcDoRpc_RopFastTransferSourceCopyTo(), and EcDoRpc_RopSyncGetTransferState().

static int emsmdbp_object_get_properties_mailbox ( TALLOC_CTX *  mem_ctx,
struct emsmdbp_context emsmdbp_ctx,
struct emsmdbp_object object,
struct SPropTagArray *  properties,
void **  data_pointers,
enum MAPISTATUS *  retvals 
)
static
static int emsmdbp_object_get_properties_mapistore ( TALLOC_CTX *  mem_ctx,
struct emsmdbp_context emsmdbp_ctx,
struct emsmdbp_object object,
struct SPropTagArray *  properties,
void **  data_pointers,
enum MAPISTATUS *  retvals 
)
static
static int emsmdbp_object_get_properties_mapistore_root ( TALLOC_CTX *  mem_ctx,
struct emsmdbp_context emsmdbp_ctx,
struct emsmdbp_object object,
struct SPropTagArray *  properties,
void **  data_pointers,
enum MAPISTATUS *  retvals 
)
static
static int emsmdbp_object_get_properties_systemspecialfolder ( TALLOC_CTX *  mem_ctx,
struct emsmdbp_context emsmdbp_ctx,
struct emsmdbp_object object,
struct SPropTagArray *  properties,
void **  data_pointers,
enum MAPISTATUS *  retvals 
)
static
_PUBLIC_ struct emsmdbp_stream_data* emsmdbp_object_get_stream_data ( struct emsmdbp_object object,
enum MAPITAGS  prop_tag 
)
read
_PUBLIC_ struct emsmdbp_object* emsmdbp_object_init ( TALLOC_CTX *  mem_ctx,
struct emsmdbp_context emsmdbp_ctx,
struct emsmdbp_object parent_object 
)
read
_PUBLIC_ struct emsmdbp_object* emsmdbp_object_mailbox_init ( TALLOC_CTX *  mem_ctx,
struct emsmdbp_context emsmdbp_ctx,
const char *  essDN,
bool  mailboxstore 
)
read

Initialize a mailbox object

Parameters:
mem_ctxpointer to the memory context
emsmdbp_ctxpointer to the emsmdb provider context
requestpointer to the Logon MAPI request
mailboxstoreboolean which specifies whether the mailbox object is a PF store or a private mailbox store
Returns:
Allocated emsmdbp object on success, otherwise NULL

References emsmdbp_object_init(), EMSMDBP_OBJECT_MAILBOX, EMSMDBP_PF_ROOT, emsmdbp_object_mailbox::folderID, emsmdbp_objects::mailbox, emsmdbp_object::object, emsmdbp_context::oc_ctx, openchangedb_get_PublicFolderID(), openchangedb_get_SystemFolderID(), emsmdbp_object_mailbox::owner_EssDN, emsmdbp_object_mailbox::owner_username, emsmdbp_context::samdb_ctx, and emsmdbp_context::szUserDN.

Referenced by EcDoRpc_RopLogon(), and emsmdbp_object_message_fill_freebusy_properties().

_PUBLIC_ struct emsmdbp_object* emsmdbp_object_message_init ( TALLOC_CTX *  mem_ctx,
struct emsmdbp_context emsmdbp_ctx,
uint64_t  messageID,
struct emsmdbp_object parent 
)
read

Initialize a message object

Parameters:
mem_ctxpointer to the memory context
emsmdbp_ctxpointer to the emsmdb provider context
messageIDthe message identifier
parentemsmdbp object of the parent
Returns:
Allocated emsmdbp object on success, otherwise NULL

References EMSMDBP_OBJECT_FOLDER, emsmdbp_object_init(), EMSMDBP_OBJECT_MAILBOX, EMSMDBP_OBJECT_MESSAGE, emsmdbp_objects::message, emsmdbp_object::object, and emsmdbp_object::type.

Referenced by EcDoRpc_RopCreateMessage(), EcDoRpc_RopOpenEmbeddedMessage(), EcDoRpc_RopSyncImportMessageChange(), emsmdbp_object_message_open(), and oxomsg_mapistore_handle_message_relocation().

_PUBLIC_ enum mapistore_error 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 
)
_PUBLIC_ struct emsmdbp_object* emsmdbp_object_stream_init ( TALLOC_CTX *  mem_ctx,
struct emsmdbp_context emsmdbp_ctx,
struct emsmdbp_object parent 
)
read

Initialize a stream object

Parameters:
mem_ctxpointer to the memory context
emsmdbp_ctxpointer to the emsmdb provider cotnext
propertythe stream property identifier
parentemsmdbp object of the parent

References emsmdbp_object_init(), EMSMDBP_OBJECT_STREAM, emsmdbp_object::object, and emsmdbp_objects::stream.

Referenced by EcDoRpc_RopOpenStream().

_PUBLIC_ struct emsmdbp_object* emsmdbp_object_subscription_init ( TALLOC_CTX *  mem_ctx,
struct emsmdbp_context emsmdbp_ctx,
struct emsmdbp_object parent 
)
read

Initialize a notification subscription object

Parameters:
mem_ctxpointer to the memory context
emsmdbp_ctxpointer to the emsmdb provider cotnext
whole_storewhether the subscription applies to the specified change on the entire store or stricly on the specified folder/message
folderIDthe folder identifier
messageIDthe message identifier
parentemsmdbp object of the parent

References emsmdbp_object_init(), EMSMDBP_OBJECT_SUBSCRIPTION, emsmdbp_object::object, and emsmdbp_objects::subscription.

Referenced by EcDoRpc_RopRegisterNotification().

_PUBLIC_ struct emsmdbp_object* emsmdbp_object_synccontext_init ( TALLOC_CTX *  mem_ctx,
struct emsmdbp_context emsmdbp_ctx,
struct emsmdbp_object parent_object 
)
read

Initialize a synccontext object

Parameters:
mem_ctxpointer to the memory context
emsmdbp_ctxpointer to the emsmdb provider cotnext
whole_storewhether the subscription applies to the specified change on the entire store or stricly on the specified folder/message
folderIDthe folder identifier
messageIDthe message identifier
parentemsmdbp object of the parent

References emsmdbp_stream::buffer, emsmdbp_object_synccontext::cnset_seen, EMSMDBP_OBJECT_FOLDER, emsmdbp_object_init(), EMSMDBP_OBJECT_MAILBOX, EMSMDBP_OBJECT_SYNCCONTEXT, emsmdbp_object::object, emsmdbp_context::oc_ctx, openchangedb_get_MailboxReplica(), emsmdbp_object_synccontext::state_property, emsmdbp_object_synccontext::state_stream, emsmdbp_object_synccontext::stream, emsmdbp_objects::synccontext, emsmdbp_object::type, and emsmdbp_context::username.

Referenced by EcDoRpc_RopSyncConfigure(), and EcDoRpc_RopSyncOpenCollector().

_PUBLIC_ int emsmdbp_object_table_get_available_properties ( TALLOC_CTX *  mem_ctx,
struct emsmdbp_context emsmdbp_ctx,
struct emsmdbp_object table_object,
struct SPropTagArray **  propertiesp 
)
_PUBLIC_ struct emsmdbp_object* emsmdbp_object_table_init ( TALLOC_CTX *  mem_ctx,
struct emsmdbp_context emsmdbp_ctx,
struct emsmdbp_object parent 
)
read

Initialize a table object

Parameters:
mem_ctxpointer to the memory context
emsmdbp_ctxpointer to the emsmdb provider context
parentemsmdbp object of the parent
Returns:
Allocated emsmdbp object on success, otherwise NULL

References EMSMDBP_OBJECT_FOLDER, emsmdbp_object_init(), EMSMDBP_OBJECT_MAILBOX, EMSMDBP_OBJECT_MESSAGE, EMSMDBP_OBJECT_TABLE, emsmdbp_object::object, emsmdbp_objects::table, and emsmdbp_object::type.

Referenced by EcDoRpc_RopGetPermissionsTable(), EcDoRpc_RopGetRulesTable(), emsmdbp_folder_open_table(), and emsmdbp_object_message_open_attachment_table().

_PUBLIC_ struct emsmdbp_stream_data* emsmdbp_stream_data_from_value ( TALLOC_CTX *  mem_ctx,
enum MAPITAGS  prop_tag,
void *  value 
)
read
_PUBLIC_ DATA_BLOB emsmdbp_stream_read_buffer ( struct emsmdbp_stream stream,
uint32_t  length 
)
_PUBLIC_ void emsmdbp_stream_write_buffer ( TALLOC_CTX *  mem_ctx,
struct emsmdbp_stream stream,
DATA_BLOB  new_buffer 
)

Variable Documentation


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