Symbian
Symbian Developer Library

SYMBIAN OS V9.4

Feedback

[Index] [Previous] [Next]

#include <MSVENTRY.H>
Link against: msgs.lib
Link against: msgs_autoshutdown.lib

Class CMsvServerEntry

class CMsvServerEntry : public CActive, public MMsvStoreObserver;

Description

Accesses and acts upon a particular Message Server entry.

It provides similar functionality to that which CMsvEntry gives to client-side programs. The current entry that a CMsvServerEntry object relates is similarly referred to as its context.

A difference to note is that CMsvEntry functions, when used on a remote context, can result in requests to Server-side MTMs to change data on a remote server, as well as the local Message Server index. Naturally, as CMsvServerEntry is designed to be used by Server-side MTMs themselves, its comparable functions only alter the Message Server index.

A CBaseServerMTM-derived object gets an initial CMsvServerEntry on construction. It can get further CMsvServerEntry objects by calling CMsvServerEntry::NewEntryL(TMsvId). The context can be changed by CMsvServerEntry::SetEntry(TMsvId).

The context is locked, preventing it being accessed by other MTMs. The lock is released when the object is deleted, or the context changes.

As with CMsvEntry, CBaseServerMTM functions can be divided into two broad groups. The first provides means to access the various types of storage associated with an entry. The second provides a means to discover and access other entries that the entry owns (its children).

Derivation

Members

Defined in CMsvServerEntry:

Inherited from CActive:

Inherited from CBase:

Inherited from MMsvStoreObserver:


Member functions


SetEntry(TMsvId)

IMPORT_C TInt SetEntry(TMsvId aId);

Description

Changes the context of the specified entry.

The call locks the entry, preventing it from being accessed by other clients. The lock is released when the object is deleted or the context is changed.

Note that you can change the context to KMsvNullIndexEntryId to unlock an entry without locking another.

Parameters

TMsvId aId

ID of the entry to access

Return value

TInt

KErrNone if successful, KErrNotFound if the entry does not exist, or KErrLocked if the entry is locked.


Entry()const

inline const TMsvEntry& Entry() const;

Description

Gets the context's index entry.

Return value

const TMsvEntry &

The current entry


OwningService()const

IMPORT_C TMsvId OwningService() const;

Description

Gets the ID of the service that owns the context.

Local entries are considered as being members of the local service.

If the entry is the root, then the root ID (KMsvRootIndexEntryId) is returned.

Return value

TMsvId

ID of the service that owns this entry


ChangeEntry(const TMsvEntry &,TSecureId)

IMPORT_C TInt ChangeEntry(const TMsvEntry &aEntry, TSecureId aOwnerId);

Description

Sets the context's index entry to the specified values and updates the owner of the entry to that specified by the supplied ID.

Parameters

const TMsvEntry &aEntry

The new details for the entry.

TSecureId aOwnerId

The ID of the process that should own the entry.

Return value

TInt

KErrNone - success; KErrAccessDenied - the entry is read only (deleted entry, standard folder, or locked); KErrNotSupported - aEntry is invalid or the ID specified in aEntry is not the same as the context ID or no context has been set for the object; KErrNoMemory - a memory allocation failed.


ChangeEntry(const TMsvEntry &)

IMPORT_C TInt ChangeEntry(const TMsvEntry &aEntry);

Description

Sets the context's index entry to the specified values.

Parameters

const TMsvEntry &aEntry

The new details for the entry.

Return value

TInt

KErrNone - success; KErrAccessDenied - the entry is read only (deleted entry, standard folder, or locked); KErrNotSupported - aEntry is invalid or the ID specified in aEntry is not the same as the context ID or no context has been set for the object; KErrNoMemory - a memory allocation failed.


CreateEntry(TMsvEntry &)

IMPORT_C TInt CreateEntry(TMsvEntry &aEntry);

Description

Creates a new entry as a child of the current context.

The parent ID and entry ID are set by the Message Server.

Parameters

TMsvEntry &aEntry

Index entry value for the new entry

Return value

TInt

KErrNone - success; KErrNoMemory - a memory allocation failed; KErrNotSupported - aEntry is invalid


CreateEntry(TMsvEntry &,TSecureId)

IMPORT_C TInt CreateEntry(TMsvEntry &aEntry, TSecureId aOwnerId);

Description

Creates a new entry as a child of the current context.

Ownership of the created entry is given to the process with the specified SID.

The parent ID and entry ID are set by the Message Server.

Parameters

TMsvEntry &aEntry

Index entry value for the new entry

TSecureId aOwnerId

The SID of the process that will own the create entry.

Return value

TInt

KErrNone - success; KErrNoMemory - a memory allocation failed; KErrNotSupported - aEntry is invalid


CreateEntry(TMsvEntry &,TSecureId,TBool)

IMPORT_C TInt CreateEntry(TMsvEntry &aEntry, TSecureId aOwnerId, TBool aBulk);

Description

Creates a new entry as a child of the current context.

Ownership of the created entry is given to the process with the specified SID.

The parent ID and entry ID are set by the Message Server.

Parameters

TMsvEntry &aEntry

Index entry value for the new entry

TSecureId aOwnerId

The SID of the process that will own the create entry.

TBool aBulk

A boolean value to indicate whether this is part of a bulk operation. (ETrue = bulk)

Return value

TInt

KErrNone - success; KErrNoMemory - a memory allocation failed; KErrNotSupported - aEntry is invalid


DeleteEntry(TMsvId)

IMPORT_C TInt DeleteEntry(TMsvId aId);

Description

Deletes a child entry of the context. The delete works recursively through all the descendants.

If a child or any descendant is locked by another client, then no entries are deleted.

Parameters

TMsvId aId

The ID of the entry to delete

Return value

TInt

KErrNone if successful, KErrAccessDenied if the entry or a descendant was locked by another client, KErrInUse if the store or a file associated with the entry is open, or KErrNotFound if the entry is not a child of the context.


DeleteEntries(CMsvEntrySelection &)

IMPORT_C TInt DeleteEntries(CMsvEntrySelection &aSelection);

Description

Deletes a selection of child entries. The delete works recursively through all the descendants.

If a child or any descendant is locked by another client, then no entries are deleted.

Parameters

CMsvEntrySelection &aSelection

The entries to delete. On return, contains the children that could not be fully deleted

Return value

TInt

KErrNone if successful, KErrAccessDenied if the entry or a descendant was locked by another client, KErrInUse if the store or a file associated with the entry is open, or KErrNotFound if the entry is not a child of the context.


MoveEntryWithinService(TMsvId,TMsvId)

IMPORT_C TInt MoveEntryWithinService(TMsvId aId, TMsvId aDestination);

Description

Moves a child of the context to under another entry. All descendants will be moved as well. The destination must belong to the same service as the context.

If an error occurs, no changes are made.

For pre-Unicode releases see the synchronous overload of MoveEntry().

Parameters

TMsvId aId

The ID of the entry to move

TMsvId aDestination

The ID of new parent

Return value

TInt

KErrNone if successful, KErrArgument if the destination is a child of aId, KErrInUse if the store or a file associated with the entry is open, KErrNotFound if the aId is not a child of the context KErrPathNotFound, if the destination does not exist.


MoveEntriesWithinService(CMsvEntrySelection &,TMsvId)

IMPORT_C TInt MoveEntriesWithinService(CMsvEntrySelection &aSelection, TMsvId aDestination);

Description

Moves a child of the context to under another entry. All descendants will be moved as well. The destination must belong to the same service as the context.

Parameters

CMsvEntrySelection &aSelection

The entries to move. On return, contains the children that could not be fully moved.

TMsvId aDestination

The ID of new parent

Return value

TInt

KErrNone if successful, KErrArgument if the destination is a child of aSelection entry, KErrInUse if the store or a file associated with an entry is open, KErrNotFound if an aSelection entry is not a child of the context the, or KErrPathNotFound if the destination does not exist.


ChangeAttributes(const CMsvEntrySelection &,TUint,TUint)

IMPORT_C TInt ChangeAttributes(const CMsvEntrySelection &aSelection, TUint aSetAttributes, TUint aClearAttributes);

Description

Provides a quick way to set or clear multiple fields in a selection of entries.

Fields to change are specified using a bitmask of TMsvAttribute values. Possible fields that can be changed using this function are:

1. PC synchronisation

2. Visibility flag

3. Read flag

4. In-preparation flag

5. Connected flag

6. New flag

Parameters

const CMsvEntrySelection &aSelection

The entries to change

TUint aSetAttributes

A bitmask of the fields to set

TUint aClearAttributes

A bitmask of the fields to clear

Return value

TInt

KErrNone if successful, otherwise one of the system-wide error codes. KErrNotFound if a specified entry does not exist.

See also:


MoveEntryL(TMsvId,TMsvId,TRequestStatus &)

IMPORT_C void MoveEntryL(TMsvId aId, TMsvId aDestination, TRequestStatus &aObserverStatus);

Description

Moves a child of the context to another entry that belongs to a different service. All descendants will be moved as well.

The move is carried out asynchronously. The caller should supply in aObserverStatus the status word of an active object that it owns. The function will signal this to be completed when the move is complete.

If the function leaves, no changes are made.

In pre-Unicode versions an asynchronous move can be cancelled through CancelMoveEntry(); in other releases, use CActive::Cancel().

Parameters

TMsvId aId

The ID of the entry to move

TMsvId aDestination

The ID of new parent

TRequestStatus &aObserverStatus

The request status to be completed when the operation has finished

Leave codes

KErrArgument

The destination is a child of aId

KErrInUse

The store or a file associated with the entry is open

KErrNoMemory

A memory allocation failed

KErrNotFound

aId is not a child of the context

KErrPathNotFound

The destination does not exist


MoveEntriesL(const CMsvEntrySelection &,TMsvId,TRequestStatus &)

IMPORT_C void MoveEntriesL(const CMsvEntrySelection &aSelection, TMsvId aDestination, TRequestStatus &aObserverStatus);

Description

Moves a selection of children of the context to another entry that belongs to a different service. All descendants will be moved as well.

The move is carried out asynchronously. The caller should supply in aObserverStatus the status word of an active object that it owns. The function will signal this to be completed when the move is complete.

Parameters

const CMsvEntrySelection &aSelection

The IDs of the entry to move. On return, contains the children that could not be fully moved.

TMsvId aDestination

The ID of new parent

TRequestStatus &aObserverStatus

The request status to be completed when the operation has finished

Leave codes

KErrArgument

The destination is a child of an aSelection entry

KErrInUse

The store or a file associated with an entry is open

KErrNoMemory

A memory allocation failed

KErrNotFound

An aSelection entry is not a child of the context

KErrPathNotFound

The destination does not exist


CopyEntryL(TMsvId,TMsvId,TRequestStatus &)

IMPORT_C void CopyEntryL(TMsvId aId, TMsvId aDestination, TRequestStatus &aObserverStatus);

Description

Copies a child of the context to another entry. All descendants will be copied as well.

The copy is carried out asynchronously. The caller should supply in aObserverStatus the status word of an active object that it owns. The function will signal this to be completed when the copy is complete.

If the function leaves, no changes are made.

Parameters

TMsvId aId

The ID of the entry to copy

TMsvId aDestination

The ID of new parent

TRequestStatus &aObserverStatus

The request status to be completed when the operation has finished

Leave codes

KErrArgument

The destination is a child of an aSelection entry

KErrInUse

The store or a file associated with an entry is open

KErrNoMemory

A memory allocation failed

KErrNotFound

An aSelection entry is not a child of the context

KErrPathNotFound

The destination does not exist


CopyEntryL(TMsvId,TMsvId,TMsvId &,TRequestStatus &)

IMPORT_C void CopyEntryL(TMsvId aId, TMsvId aDestination, TMsvId &aCompletedEntry, TRequestStatus &aObserverStatus);

Description

Copies a child of the context to another entry. All descendants will be copied as well.

This overload returns the ID of the new entry.

The copy is carried out asynchronously. The caller should supply in aObserverStatus the status word of an active object that it owns. The function will signal this to be completed when the copy is complete.

If the function leaves, no changes are made.

Parameters

TMsvId aId

The ID of the entry to copy

TMsvId aDestination

The ID of new parent

TMsvId &aCompletedEntry

On return, the ID of the new entry

TRequestStatus &aObserverStatus

The request status to be completed when the operation has finished

Leave codes

KErrArgument

The destination is a child of an aSelection entry

KErrInUse

The store or a file associated with an entry is open

KErrNoMemory

A memory allocation failed

KErrNotFound

An aSelection entry is not a child of the context

KErrPathNotFound

The destination does not exist


CopyEntriesL(const CMsvEntrySelection &,TMsvId,TRequestStatus &)

IMPORT_C void CopyEntriesL(const CMsvEntrySelection &aSelection, TMsvId aDestination, TRequestStatus &aObserverStatus);

Description

Copies a selection of children of the context to another entry that belongs to a different service. All descendants will be copied as well.

The copy is carried out asynchronously. The caller should supply in aObserverStatus the status word of an active object that it owns. The function will signal this to be completed when the copy is complete.

Parameters

const CMsvEntrySelection &aSelection

The IDs of the entry to copy. On return, contains the children that could not be fully copied.

TMsvId aDestination

The ID of new parent

TRequestStatus &aObserverStatus

The request status to be completed when the operation has finished

Leave codes

KErrArgument

The destination is a child of an aSelection entry

KErrInUse

The store or a file associated with an entry is open

KErrNoMemory

A memory allocation failed

KErrNotFound

An aSelection entry is not a child of the context

KErrPathNotFound

The destination does not exist


CopyEntriesL(const CMsvEntrySelection &,TMsvId,CMsvEntrySelection &,TRequestStatus &)

IMPORT_C void CopyEntriesL(const CMsvEntrySelection &aSelection, TMsvId aDestination, CMsvEntrySelection &aCompletedSelection, TRequestStatus &aObserverStatus);

Description

Copies a selection of children of the context to another entry that belongs to a different service. All descendants will be copied as well.

This overload returns the IDs of the new entries.

The copy is carried out asynchronously. The caller should supply in aObserverStatus the status word of an active object that it owns. The function will signal this to be completed when the copy is complete.

Parameters

const CMsvEntrySelection &aSelection

The IDs of the entry to copy. On return, contains the children that could not be fully copied.

TMsvId aDestination

The ID of new parent

CMsvEntrySelection &aCompletedSelection

On return, the IDs of the new entries.

TRequestStatus &aObserverStatus

The request status to be completed when the operation has finished

Leave codes

KErrArgument

The destination is a child of an aSelection entry

KErrInUse

The store or a file associated with an entry is open

KErrNoMemory

A memory allocation failed

KErrNotFound

An aSelection entry is not a child of the context

KErrPathNotFound

The destination does not exist


GetEntryFromId(TMsvId,TMsvEntry *&)

IMPORT_C TInt GetEntryFromId(TMsvId aId, TMsvEntry *&aEntry);

Description

Gets the index entry for a specified entry ID.

Parameters

TMsvId aId

ID of the entry to get

TMsvEntry *&aEntry

On return, a pointer to the index entry with ID aId

Return value

TInt

KErrNone on success; KErrNotFound if the no entry exists with the specified ID


ReadStoreL()

IMPORT_C CMsvStore* ReadStoreL();

Description

Obtains the message store for the current context with read-only access.

Multiple clients can read from a store simultaneously. If another client is already writing to the store, the function leaves with KErrAccessDenied.

The returned CMsvStore must be deleted when it is no longer required.

Return value

CMsvStore *

Context's message store open for read-only access

Leave codes

KErrAccessDenied

Store is locked by another process

KErrNoMemory

Not enough memory to open store

KErrNotFound

There is no store associated with this entry


EditStoreL()

IMPORT_C CMsvStore* EditStoreL();

Description

Obtains the message store for the current context with read-write access.

Only one client can edit a message store at one time. If another client is already writing to the store, KErrAccessDenied is returned. However, any number of clients can read from the store simultaneously.

If the message store does not exist when EditStore() is called, a new message store is created.

The returned CMsvStore must be deleted when it is no longer required.

Return value

CMsvStore *

Context's message store open for read-write access

Leave codes

KErrAccessDenied

Store is locked by another process or is read-only

KErrNoMemory

Not enough memory to open store


Sort()

inline const TMsvSelectionOrdering& Sort();

Description

Gets the current sort order of children of the entry.

Return value

const TMsvSelectionOrdering &

Current sort type


SetSort(TMsvSelectionOrdering &)

inline void SetSort(TMsvSelectionOrdering &aOrdering);

Description

Sets the sort order that is used when listing children, for example with CMsvServerEntry::GetChildren(CMsvEntrySelection &).

Parameters

TMsvSelectionOrdering &aOrdering

Sort order to use


SetMtm(TUid)

inline void SetMtm(TUid aMtm);

Description

Sets this MTM sorting type to specified UID. When children of an entry are sorted, entries belonging to the same MTM type can be grouped together.

Parameters

TUid aMtm

UID of MTM for sort


GetChildren(CMsvEntrySelection &)

IMPORT_C TInt GetChildren(CMsvEntrySelection &aSelection);

Description

Gets a selection containing the IDs of all the context children.

If the entry has no children, the selection is empty.

Parameters

CMsvEntrySelection &aSelection

Initially, this must be an empty selection. On return, it lists the children.

Return value

TInt

KErrNone - success; KErrMemory - a memory allocation failed


GetChildrenWithService(TMsvId,CMsvEntrySelection &)

IMPORT_C TInt GetChildrenWithService(TMsvId aServiceId, CMsvEntrySelection &aSelection);

Description

Gets a selection containing the IDs of all the context children with the specified service.

If the entry has no children, the selection is empty.

Parameters

TMsvId aServiceId

Service by which to filter children

CMsvEntrySelection &aSelection

Initially, this must be an empty selection. On return, it lists the children.

Return value

TInt

KErrNone - success; KErrMemory - a memory allocation failed


GetChildrenWithMtm(TUid,CMsvEntrySelection &)

IMPORT_C TInt GetChildrenWithMtm(TUid aMtm, CMsvEntrySelection &aSelection);

Description

Gets a selection containing the IDs of all the context children with the specified MTM.

If the entry has no children, the selection is empty.

Parameters

TUid aMtm

MTM by which to filter children

CMsvEntrySelection &aSelection

Initially, this must be an empty selection. On return, it lists the children.

Return value

TInt

KErrNone - success; KErrMemory - a memory allocation failed


GetChildrenWithType(TUid,CMsvEntrySelection &)

IMPORT_C TInt GetChildrenWithType(TUid aType, CMsvEntrySelection &aSelection);

Description

Gets a selection containing the IDs of all the context children with the specified entry type.

If the entry has no children, the selection is empty.

Parameters

TUid aType

Entry type by which to filter children

CMsvEntrySelection &aSelection

Initially, this must be an empty selection. On return, it lists the children.

Return value

TInt

KErrNone - success; KErrMemory - a memory allocation failed


NewEntryL(TMsvId)

IMPORT_C CMsvServerEntry* NewEntryL(TMsvId aId);

Description

Gets a new CMsvServerEntry object for the specified entry ID.

The call locks the entry, preventing it being accessed by other clients.

The object must be deleted when it is no longer required. The lock is released when the object is deleted or the context is changed with CMsvServerEntry::SetEntry(TMsvId).

Parameters

TMsvId aId

ID of the entry to access

Return value

CMsvServerEntry *

If the function succeeds, this is a pointer to a newly allocated and initialised object.

Leave codes

KErrLocked

Entry is locked

KErrNoMemory

A memory allocation failed

KErrNotFound

The entry does not exist


HasStoreL()const

IMPORT_C TBool HasStoreL() const;

Description

Tests if the context has an associated message store.

Return value

TBool

ETrue: entry has a message store EFalse: entry does not have a message store


FileSession()

IMPORT_C RFs& FileSession();

Description

Allows a Server-side MTM to access the file session handle created by the Message Server. This is preferable, as more efficient, to creating another handle.

Return value

RFs &

File session handle


CreateEntryBulk(TMsvEntry &,TSecureId)

IMPORT_C TInt CreateEntryBulk(TMsvEntry &aEntry, TSecureId aOwnerId);

Description

Creates a new entry as a child of the current context as part of a bulk creation operation. The entry will not be committed to file immediately.

The parent ID and entry ID are set by the Message Server.

Parameters

TMsvEntry &aEntry

Index entry value for the new entry

TSecureId aOwnerId

The SID of the process that will own the create entry.

Return value

TInt

KErrNone - success; KErrNoMemory - a memory allocation failed; KErrNotSupported - aEntry is invalid


CreateEntryBulk(TMsvEntry &)

IMPORT_C TInt CreateEntryBulk(TMsvEntry &aEntry);

Description

Creates a new entry as a child of the current context as part of a bulk creation operation

The parent ID and entry ID are set by the Message Server.

Parameters

TMsvEntry &aEntry

Index entry value for the new entry

Return value

TInt

KErrNone - success; KErrNoMemory - a memory allocation failed; KErrNotSupported - aEntry is invalid


ChangeEntryBulk(const TMsvEntry &,TSecureId)

IMPORT_C TInt ChangeEntryBulk(const TMsvEntry &aEntry, TSecureId aOwnerId);

Description

Sets the context's index entry to the specified values and updates the owner of the entry to that specified by the supplied ID. It does this as part of a bulk operation, so the changes are not immediately committed to file.

Parameters

const TMsvEntry &aEntry

The new details for the entry.

TSecureId aOwnerId

The ID of the process that should own the entry. Only commits changes to file at specified bulk commit interval.

Return value

TInt

KErrNone - success; KErrAccessDenied - the entry is read only (deleted entry, standard folder, or locked); KErrNotSupported - aEntry is invalid or the ID specified in aEntry is not the same as the context ID or no context has been set for the object; KErrNoMemory - a memory allocation failed.


ChangeEntryBulk(const TMsvEntry &)

IMPORT_C TInt ChangeEntryBulk(const TMsvEntry &aEntry);

Description

Sets the context's index entry to the specified values and updates the owner of the entry to that specified by the supplied ID. It does this as part of a bulk operation, so the changes are not immediately committed to file.

Parameters

const TMsvEntry &aEntry

The new details for the entry.

Return value

TInt

KErrNone - success; KErrAccessDenied - the entry is read only (deleted entry, standard folder, or locked); KErrNotSupported - aEntry is invalid or the ID specified in aEntry is not the same as the context ID or no context has been set for the object; KErrNoMemory - a memory allocation failed.


CompleteBulk()

IMPORT_C void CompleteBulk();

Description

Completes the current bulk transaction (if any) Requests that the message server commit to the index file on disk any entries which have not been committed and to generate notifications for any entries which require them.


RunL()

protected: virtual void RunL();

Description

Handles an active object's request completion event.

A derived class must provide an implementation to handle the completed request. If appropriate, it may issue another request.

The function is called by the active scheduler when a request completion event occurs, i.e. after the active scheduler's WaitForAnyRequest() function completes.

Before calling this active object's CMsvServerEntry::RunL() function, the active scheduler has:

1. decided that this is the highest priority active object with a completed request

2. marked this active object's request as complete (i.e. the request is no longer outstanding)

CMsvServerEntry::RunL() runs under a trap harness in the active scheduler. If it leaves, then the active scheduler calls CActive::RunError(TInt) to handle the leave.

Note that once the active scheduler's Start() function has been called, all user code is run under one of the program's active object's CMsvServerEntry::RunL() or CActive::RunError(TInt) functions.

See also:


DoCancel()

protected: virtual void DoCancel();

Description

Implements cancellation of an outstanding request.

This function is called as part of the active object's CActive::Cancel().

It must call the appropriate cancel function offered by the active object's asynchronous service provider. The asynchronous service provider's cancel is expected to act immediately.

CMsvServerEntry::DoCancel() must not wait for event completion; this is handled by CActive::Cancel().

See also: