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 struct
mapistore_freebusy_properties * 
emsmdbp_fetch_freebusy (TALLOC_CTX *mem_ctx, struct emsmdbp_context *emsmdbp_ctx, const char *username, struct tm *start_tm, struct tm *end_tm)
 
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_ enum mapistore_error emsmdbp_folder_move_folder (struct emsmdbp_context *emsmdbp_ctx, struct emsmdbp_object *move_folder, struct emsmdbp_object *target_folder, TALLOC_CTX *mem_ctx, const char *new_name)
 
_PUBLIC_ struct emsmdbp_objectemsmdbp_folder_open_table (TALLOC_CTX *mem_ctx, struct emsmdbp_object *parent_object, uint32_t table_type, uint32_t handle_id)
 
_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)
 
_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, bool read_write)
 
_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)
 

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 struct mapistore_freebusy_properties* emsmdbp_fetch_freebusy ( TALLOC_CTX *  mem_ctx,
struct emsmdbp_context emsmdbp_ctx,
const char *  username,
struct tm *  start_tm,
struct tm *  end_tm 
)
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 
)
_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_RopCopyFolder(), 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_fetch_freebusy(), emsmdbp_fill_notification(), emsmdbp_folder_delete(), emsmdbp_folder_get_folder_count(), emsmdbp_folder_move_folder(), 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_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_RopCopyFolder(), 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_fetch_freebusy(), emsmdbp_folder_delete(), emsmdbp_folder_get_folder_count(), emsmdbp_folder_move_folder(), 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_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().

_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

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 
)

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 
)

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_message ( 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 
)
_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 
)

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_fetch_freebusy().

static void emsmdbp_object_message_fill_freebusy_properties ( struct emsmdbp_object message_object)
static
_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

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_ATTACHMENT, 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 
)

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 
)

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 
)

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 
)

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,
bool  read_write 
)
_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 
)

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/