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

_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_ 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)
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 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)
_PUBLIC_ struct emsmdbp_object * emsmdbp_object_subscription_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_ struct emsmdbp_object * emsmdbp_object_table_init (TALLOC_CTX *mem_ctx, struct emsmdbp_context *emsmdbp_ctx, struct emsmdbp_object *parent)

Detailed Description

Server-side specific objects init/release routines.

Function Documentation

char* emsmdbp_get_owner ( struct emsmdbp_object *  object)

Convenience function to determine the owner of an object

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

Referenced by EcDoRpc_RopDeleteMessages(), EcDoRpc_RopSaveChangesMessage(), EcDoRpc_RopSubmitMessage(), EcDoRpc_RopSyncGetTransferState(), EcDoRpc_RopSyncImportDeletes(), EcDoRpc_RopSyncImportHierarchyChange(), EcDoRpc_RopSyncImportMessageChange(), and EcDoRpc_RopSyncImportReadStateChanges().

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
_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_object_init().

Referenced by EcDoRpc_RopCreateAttach(), and EcDoRpc_RopOpenAttach().

_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_is_mapistore().

Referenced by EcDoRpc_RopCopyTo().

static int emsmdbp_object_destructor ( void *  data)
static

talloc destructor for emsmdbp_objects

Parameters
datageneric pointer on data
Returns
0 on success, otherwise -1

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

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

Initialize an emsmdbp_object

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

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_subscription_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 
)
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(), 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 
)
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_init().

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

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

Return the folder object associated to specified folder identified

Parameters
mem_ctxpointer to the memory context
emsmdbp_ctxpointer to the emsmdbp context
context_objectpointer to current context object
fidpointer to the Folder Identifier to lookup
Returns
Valid emsmdbp object structure on success, otherwise NULL

References emsmdbp_object_folder_init().

Referenced by EcDoRpc_RopCreateFolder(), EcDoRpc_RopCreateMessage(), EcDoRpc_RopOpenFolder(), and EcDoRpc_RopSyncImportHierarchyChange().

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

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

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_object_init(), and openchangedb_get_MailboxReplica().

Referenced by EcDoRpc_RopSyncConfigure(), and EcDoRpc_RopSyncOpenCollector().

_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_init().

Referenced by EcDoRpc_RopGetPermissionsTable().


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/