libmapi/IMSProvider.c File Reference

Provider operations. More...

#include <libmapi/libmapi.h>

Functions

enum MAPISTATUS GetNewLogonId (struct mapi_session *session, uint8_t *logon_id)
_PUBLIC_ enum MAPISTATUS Logoff (mapi_object_t *obj_store)
enum MAPISTATUS Logon (struct mapi_session *session, struct mapi_provider *provider, enum PROVIDER_ID provider_id)
_PUBLIC_ enum MAPISTATUS RegisterNotification (uint16_t ulEventMask)
_PUBLIC_ enum MAPISTATUS RfrGetFQDNFromLegacyDN (struct mapi_session *session, const char **serverFQDN)
_PUBLIC_ char * RfrGetNewDSA (struct mapi_session *session, const char *server, const char *userDN)

Detailed Description

Provider operations.


Function Documentation

enum MAPISTATUS GetNewLogonId ( struct mapi_session session,
uint8_t *  logon_id 
)

Retrieve a free logon identifier within the session

Parameters:
session pointer to the MAPI session context
logon_id pointer to the logon identifier the function returns
Returns:
MAPI_E_SUCCESS on success, otherwise MAPI eorr

References mapi_session::logon_ids, and OPENCHANGE_RETVAL_IF.

Referenced by OpenPublicFolder(), and OpenUserMailbox().

_PUBLIC_ enum MAPISTATUS Logoff ( mapi_object_t obj_store  ) 

Logoff an Exchange store

This function uninitializes the MAPI session associated to the object.

Parameters:
obj_store pointer to the store object
Returns:
MAPI_E_SUCCESS on success, otherwise MAPI_E_NOT_FOUND
Examples:
fetchappointment.c, and fetchmail.c.

References DLIST_REMOVE, global_mapi_ctx, mapi_object_get_session(), mapi_object_release(), mapi_session::next, OPENCHANGE_RETVAL_IF, and mapi_ctx::session.

_PUBLIC_ enum MAPISTATUS RegisterNotification ( uint16_t  ulEventMask  ) 

Initialize the notification subsystem

This function initializes the notification subsystem, binds a local UDP port to receive Exchange (server side) notifications and configures the server to send notifications on this port.

Parameters:
ulEventMask the mask of events to provide notifications for.
Returns:
MAPI_E_SUCCESS on success, otherwise MAPI error.
Note:
Developers may also call GetLastError() to retrieve the last MAPI error code. Possible MAPI error codes are:
  • MAPI_E_NOT_INITIALIZED: MAPI subsystem has not been initialized
  • MAPI_E_CALL_FAILED: A network problem was encountered during the transaction
See also:
Subscribe, Unsubscribe, MonitorNotification, GetLastError

References mapi_provider::ctx, mapi_session::emsmdb, emsmdb_bind_notification(), emsmdb_register_notification(), global_mapi_ctx, emsmdb_context::mem_ctx, mapi_session::notify_ctx, OPENCHANGE_RETVAL_IF, and mapi_ctx::session.

_PUBLIC_ enum MAPISTATUS RfrGetFQDNFromLegacyDN ( struct mapi_session session,
const char **  serverFQDN 
)

Returns the FQDN of the NSPI server corresponding to a DN

Parameters:
session pointer to the MAPI session context
serverFQDN pointer to the server FQDN string (return value)
Returns:
MAPI_E_SUCCESS on success, otherwise a MAPI error and serverFQDN content set to NULL.

References mapi_profile::credentials, global_mapi_ctx, mapi_profile::homemdb, mapi_ctx::lp_ctx, OPENCHANGE_RETVAL_IF, mapi_session::profile, RfrGetFQDNFromLegacyDN(), and mapi_profile::server.

Referenced by RfrGetFQDNFromLegacyDN().

_PUBLIC_ char* RfrGetNewDSA ( struct mapi_session session,
const char *  server,
const char *  userDN 
)

Returns the name of an NSPI server

Parameters:
session pointer to the MAPI session context
server the Exchange server address (IP or FQDN)
userDN optional user mailbox DN
Returns:
a valid allocated string on success, otherwise NULL.
Note:
The string returned can either be RfrGetNewDSA one on success, or a copy of the server's argument one on failure. If no server string is provided, NULL is returned.

It is up to the developer to free the returned string when not needed anymore.

References mapi_profile::credentials, global_mapi_ctx, mapi_ctx::lp_ctx, mapi_session::profile, RfrGetNewDSA(), and mapi_ctx::session.

Referenced by Logon(), and RfrGetNewDSA().


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/