messagingfw/msgsrvnstore/server/src/MSVSESS.CPP
author Pat Downey <patd@symbian.org>
Fri, 04 Jun 2010 10:32:16 +0100
changeset 22 bde600d88860
child 35 f8ad95794a08
child 40 320ec5cd0227
permissions -rw-r--r--
Revert last code drop.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
22
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
     1
// Copyright (c) 1998-2009 Nokia Corporation and/or its subsidiary(-ies).
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
     2
// All rights reserved.
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
     3
// This component and the accompanying materials are made available
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
     4
// under the terms of "Eclipse Public License v1.0"
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
     5
// which accompanies this distribution, and is available
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
     6
// at the URL "http://www.eclipse.org/legal/epl-v10.html".
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
     7
//
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
     8
// Initial Contributors:
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
     9
// Nokia Corporation - initial contribution.
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
    10
//
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
    11
// Contributors:
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
    12
//
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
    13
// Description:
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
    14
//
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
    15
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
    16
#ifdef _DEBUG
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
    17
#undef _NO_SERVER_LOGGING_
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
    18
#endif
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
    19
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
    20
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
    21
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
    22
#include <e32std.h>
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
    23
#include <s32mem.h>
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
    24
#include <tmsvsystemprogress.h>
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
    25
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
    26
#include "MSVSTD.H"
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
    27
#include "MSVIPC.H"
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
    28
#include "MSVREG.H"
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
    29
#include "MSVREGIP.H"
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
    30
#include "MSVIDS.H"
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
    31
#include "MSVUIDS.H"
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
    32
#include "MSVENTRY.H"
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
    33
#include "MSERVER.H"
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
    34
#include "MSVSERV.H"
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
    35
#include "MSVLOPS.H"
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
    36
#include "MSVROPS.H"
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
    37
#include "MSVUTILS.H"
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
    38
#include "MTSR.H"
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
    39
#include "MSVPANIC.H"
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
    40
#include "CMsvChangeBuffer.h"
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
    41
#include "MsvSecurityCapabilitySet.h"
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
    42
#include "cmsvcopystoreoperation.h"
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
    43
#include "cmsvdeletestoreoperation.h"
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
    44
#include "MSVAPI.H"
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
    45
#include "msvindexadapter.h"
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
    46
#include "msvcacheentry.h"
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
    47
#include "msvsearchsortcacheentry.h"
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
    48
#include "msvsearchsortcachemanager.h"
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
    49
#include "msvsearchsortdeltacache.h"
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
    50
#include <msvsearchsortquery.h>
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
    51
#include <msvsearchsortoperation.h>
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
    52
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
    53
#if (defined SYMBIAN_MESSAGESTORE_HEADER_BODY_USING_SQLDB)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
    54
#include <u32std.h>
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
    55
#include "cmsvconverterwaiter.h"
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
    56
#endif
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
    57
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
    58
const TInt KMsvOperationIndexGranularity=8;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
    59
const TInt KMsvOperationDataArrayGranularity=4;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
    60
const TInt KMsvMtmRefCountArrayGranularity=4;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
    61
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
    62
_LIT(KMsvClientPanicString, "MSGS Client");
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
    63
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
    64
//**********************************
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
    65
// TMtmGroupRefCount
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
    66
//**********************************
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
    67
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
    68
TMtmGroupRefCount::TMtmGroupRefCount(TUid aMtmTypeUid)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
    69
: iMtmTypeUid(aMtmTypeUid), iRefCount(0)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
    70
	{}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
    71
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
    72
//**********************************
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
    73
// CMsvOperationData
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
    74
//**********************************
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
    75
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
    76
CMsvOperationData::CMsvOperationData(TMsvOp aOpId)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
    77
: iOpId(aOpId)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
    78
	{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
    79
	__DECLARE_NAME(_S("CMsvOperationData"));
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
    80
	}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
    81
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
    82
CMsvOperationData::~CMsvOperationData()
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
    83
	{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
    84
	delete iBuffer;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
    85
	}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
    86
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
    87
//**********************************
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
    88
// CMsvServerSession
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
    89
//**********************************
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
    90
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
    91
CMsvServerSession::CMsvServerSession(CMsvServer& aServer)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
    92
:   CSession2(),
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
    93
	iMsvServer(aServer),
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
    94
	iOperations(KMsvOperationIndexGranularity),
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
    95
	iMtmGroupRefCountArray(KMsvMtmRefCountArrayGranularity),
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
    96
	iOperationDataArray(KMsvOperationDataArrayGranularity),
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
    97
	iReceiveEntryEvents(ETrue)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
    98
	{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
    99
	__DECLARE_NAME(_S("CMsvServerSession"));
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   100
	iSessionId = iMsvServer.SessionId();
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   101
	}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   102
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   103
CMsvServerSession* CMsvServerSession::NewL(CMsvServer& aServer, const RMessage2 &aMessage)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   104
	{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   105
	CMsvServerSession* self = new(ELeave) CMsvServerSession(aServer);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   106
	CleanupStack::PushL(self);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   107
	self->ConstructL(aMessage);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   108
	CleanupStack::Pop();
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   109
	return self;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   110
	}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   111
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   112
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   113
void CMsvServerSession::ConstructL(const RMessage2 &aMessage)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   114
	{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   115
	iChangeBuffer = CMsvChangeBuffer::NewL();
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   116
	iBuffer = HBufC8::NewL(KMsvSessionBufferLength);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   117
	iChildrenSelection = new(ELeave) CArrayPtrSeg<const TMsvEntry>(16);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   118
	iChildrenSelectionIds = new(ELeave) CMsvEntrySelection;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   119
	
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   120
	// if the index is already loaded, tell the client
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   121
	if (iMsvServer.HasContext() && iMsvServer.Context().State()==TMsvIndexLoadProgress::EIndexComplete)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   122
		{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   123
		TMsvNotifBuffer buffer;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   124
		TMsvPackedChangeNotification package(buffer);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   125
		package.Pack(EMsvIndexLoaded, 0, 0, 0);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   126
		NotifyChangedL(buffer);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   127
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   128
		// Send disk status notifications
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   129
		if (iMsvServer.StartupState() != EMsvNullNotification)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   130
			{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   131
			package.Pack(iMsvServer.StartupState(), KMsvNullIndexEntryId, iMsvServer.Context().Config().iDrive, 0);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   132
			NotifyChangedL(buffer);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   133
			}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   134
	
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   135
	#if (defined SYMBIAN_MESSAGESTORE_HEADER_BODY_USING_SQLDB)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   136
			// if we have unsupported drives, notify the client
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   137
		if(FoundUnSupportedDrives())
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   138
			{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   139
			package.Pack(EMsvMessageStoreNotSupported, 0, 0, 0);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   140
			NotifyChangedL(buffer);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   141
			}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   142
	#endif
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   143
		}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   144
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   145
	RThread thread;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   146
	aMessage.Client(thread);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   147
	iProcessName = thread.Name();
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   148
	thread.Close();
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   149
	}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   150
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   151
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   152
CMsvServerSession::~CMsvServerSession()
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   153
	{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   154
	// releasing locks
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   155
	__ASSERT_DEBUG(iLockedStores.Count()==0, PanicClient(iQueuedMessage, EMsvLockedStoresOnExit));
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   156
	TInt count = iLockedStores.Count();
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   157
	while (count--)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   158
		{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   159
		iMsvServer.IndexAdapter().ReleaseStore(iLockedStores.At(count)); // ignore any errors
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   160
		}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   161
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   162
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   163
	// deleting outstanding operations
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   164
	__ASSERT_DEBUG(iOperations.Count()==0, PanicClient(iQueuedMessage, EMsvOutstandingOperationsOnExit));
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   165
	count=iOperations.Count();
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   166
	while (count--)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   167
		{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   168
		delete iOperations.At(count); // operation are deleted last in first out order
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   169
		iOperations.Delete(count);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   170
		}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   171
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   172
	iOperationDataArray.ResetAndDestroy();
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   173
	iMtmGroupRefCountArray.Reset();
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   174
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   175
	// Set request queued flag to false so we're not notified to close the session
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   176
	iRequestQueued = EFalse;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   177
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   178
	iMsvServer.ClosingSession(iSessionId);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   179
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   180
	delete iChildrenSelection;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   181
	delete iChildrenSelectionIds;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   182
	if(iChangeBuffer != NULL)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   183
		{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   184
		delete iChangeBuffer;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   185
		}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   186
	if(iBuffer != NULL)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   187
		{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   188
		delete iBuffer;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   189
		
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   190
		}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   191
	}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   192
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   193
void CMsvServerSession::ServiceL(const RMessage2& aMessage)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   194
//
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   195
//
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   196
//
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   197
	{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   198
	if ((!iMsvServer.HasContext() || iMsvServer.Context().State()!=TMsvIndexLoadProgress::EIndexComplete) && aMessage.Function()!=EMsvNotifySessionEvent && aMessage.Function()!=EMsvCancelSessionEventNotification)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   199
		aMessage.Complete(KErrNotReady);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   200
	else
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   201
		{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   202
		TRAPD(error, DoServiceL(aMessage));
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   203
		if (error)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   204
			aMessage.Complete(error);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   205
		}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   206
	}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   207
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   208
void CMsvServerSession::DoServiceL(const RMessage2& aMessage)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   209
//
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   210
// service a client request; test the opcode and then do appropriate servicing
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   211
//
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   212
	{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   213
	// all functions called should ensure that all synchronous messages have been completed
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   214
	switch (aMessage.Function())
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   215
		{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   216
		case EMsvNotifySessionEvent:
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   217
			QueueSessionEventRequestL(aMessage);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   218
			break;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   219
		case EMsvCancelSessionEventNotification:
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   220
			CancelSessionEventRequest(aMessage);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   221
			break;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   222
		case EMsvOperationData:
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   223
			CopyOperationDataL(aMessage);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   224
			break;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   225
		case EMsvCommandData:
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   226
			CopyCommandDataL(aMessage);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   227
			break;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   228
		case EMsvCreateEntry:
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   229
			CreateEntryL(aMessage);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   230
			break;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   231
		case EMsvGetEntry:
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   232
			GetEntryL(aMessage);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   233
			break;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   234
		case EMsvChangeEntry:
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   235
			ChangeEntryL(aMessage);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   236
			break;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   237
		case EMsvGetChildren:
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   238
			GetChildrenL(aMessage);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   239
			break;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   240
		case EMsvGetRemainingChildren:
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   241
			GetRemainingChildrenL(aMessage);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   242
			break;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   243
		case EMsvDeleteEntries:
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   244
			DeleteEntriesL(aMessage);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   245
			break;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   246
		case EMsvLockEntry:
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   247
			LockEntryL(aMessage);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   248
			break;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   249
		case EMsvReleaseEntry:
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   250
			ReleaseEntryL(aMessage);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   251
			break;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   252
		case EMsvReadStore:
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   253
			ReadStoreL(aMessage);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   254
			break;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   255
		case EMsvLockStore:
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   256
			LockStoreL(aMessage);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   257
			break;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   258
		case EMsvReleaseStore:
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   259
			ReleaseStoreL(aMessage);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   260
			break;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   261
		case EMsvCancelOperation:
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   262
			CancelOperationL(aMessage);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   263
			break;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   264
		case EMsvOperationCompletion:
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   265
			OperationCompletionL(aMessage);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   266
			break;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   267
		case EMsvOperationProgress:
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   268
			OperationProgressL(aMessage);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   269
			break;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   270
		case EMsvOperationSystemProgress:
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   271
			OperationSystemProgressL(aMessage);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   272
			break;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   273
		case EMsvOperationMtm:
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   274
			OperationMtmL(aMessage);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   275
			break;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   276
		case EMsvMoveEntries:
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   277
			MoveEntriesL(aMessage);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   278
			break;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   279
		case EMsvCopyEntries:
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   280
			CopyEntriesL(aMessage);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   281
			break;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   282
		case EMsvMtmCommand:
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   283
			TransferCommandL(aMessage);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   284
			break;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   285
		case EMsvFillRegisteredMtmDllArray:
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   286
			FillRegisteredMtmDllArray(aMessage);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   287
			break;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   288
		case EMsvInstallMtmGroup:
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   289
			MtmGroupL(aMessage, ETrue);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   290
			break;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   291
		case EMsvDeInstallMtmGroup:
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   292
			MtmGroupL(aMessage, EFalse);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   293
			break;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   294
		case EMsvUseMtmGroup:
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   295
			UseMtmGroup(aMessage);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   296
			break;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   297
		case EMsvReleaseMtmGroup:
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   298
			ReleaseMtmGroup(aMessage);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   299
			break;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   300
		case EMsvGetMtmGroupData:
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   301
			GetMtmGroupDataL(aMessage);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   302
			break;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   303
		case EMsvGetMtmRequiredCapabilities:
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   304
			GetMtmRequiredCapabilitiesL(aMessage);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   305
			break;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   306
		case EMsvCloseServer:
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   307
			iMsvServer.CloseServer(aMessage);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   308
			break;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   309
		case EMsvStopService:
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   310
			iMsvServer.StopServiceL(aMessage);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   311
			break;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   312
		case EMsvServiceActive:
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   313
			iMsvServer.ServiceActive(aMessage);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   314
			break;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   315
		case EMsvServiceProgress:
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   316
			ServiceProgressL(aMessage);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   317
			break;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   318
		case EMsvRemoveEntry:
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   319
			RemoveEntry(aMessage);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   320
			break;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   321
		case EMsvGetMessageDirectory:
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   322
			MessageFolderL(aMessage);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   323
			break;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   324
		case EMsvSlotAvailable:
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   325
			if (iOperations.Count()<KMsvMaxSlotsAvailable)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   326
				aMessage.Complete(KErrNone);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   327
			else
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   328
				aMessage.Complete(KErrServerBusy);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   329
			break;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   330
		case EMsvSetSessionAsObserver:
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   331
			iObserverOnly=ETrue;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   332
			aMessage.Complete(KErrNone);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   333
			break;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   334
		case EMsvSetFailure:
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   335
			iMsvServer.SetFailure((TMsvFailure)aMessage.Int0(), aMessage.Int1(), aMessage.Int2(), aMessage.Int3());
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   336
			aMessage.Complete(KErrNone);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   337
			break;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   338
		case EMsvChangeAttributes:
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   339
			ChangeAttributesL(aMessage);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   340
			break;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   341
		case EMsvGetChildIds:
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   342
			GetChildIdsL(aMessage);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   343
			break;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   344
		case EMsvChangeDrive:
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   345
			ChangeDriveL(aMessage);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   346
			break;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   347
		case EMsvOutstandingOperations:
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   348
			OutstandingOperationsL(aMessage);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   349
			break;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   350
		case EMsvGetNotifySequence:
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   351
			GetNotifySequenceL(aMessage);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   352
			break;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   353
		case EMsvSetReceiveEntyEvents:
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   354
			SetReceiveEntryEvents(aMessage);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   355
			break;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   356
		case EMsvDecStoreReaderCount:
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   357
			DecStoreReaderCountL(aMessage);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   358
			break;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   359
		case EMsvGetMessageDrive:
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   360
#if (defined SYMBIAN_MSGS_ENHANCED_REMOVABLE_MEDIA_SUPPORT)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   361
			MessageDrive(aMessage);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   362
#else
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   363
			aMessage.Complete(iMsvServer.Context().Config().iDrive);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   364
#endif
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   365
			break;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   366
		case EMsvCreateAttachmentForWrite:
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   367
			CreateAttachmentForWriteL(aMessage);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   368
			break;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   369
		case EMsvReplaceAttachmentForWrite:
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   370
			ReplaceAttachmentForWriteL(aMessage);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   371
			break;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   372
		case EMsvOpenAttachment:
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   373
			OpenAttachmentL(aMessage);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   374
			break;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   375
		case EMsvOpenAttachmentForWrite:
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   376
			OpenAttachmentForWriteL(aMessage);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   377
			break;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   378
		case EMsvDeleteAttachment:
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   379
			DeleteAttachmentL(aMessage);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   380
			break;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   381
		case EMsvRenameAttachment:
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   382
			RenameAttachmentL(aMessage);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   383
			break;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   384
		case EMsvFileExists :
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   385
			FileExistsL(aMessage);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   386
			break;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   387
		case EMsvGetAttachmentFilePath:
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   388
			GetAttachmentFilePathL(aMessage);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   389
			break;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   390
		case EMsvOpenFileStoreForRead:
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   391
			OpenFileStoreForReadL(aMessage);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   392
			break;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   393
		case EMsvOpenTempStoreFile:
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   394
			OpenTempStoreFileL(aMessage);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   395
			break;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   396
		case EMsvReplaceFileStore:
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   397
			ReplaceFileStoreL(aMessage);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   398
			break;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   399
		case EMsvDeleteFileStore:
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   400
			DeleteFileStoreL(aMessage);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   401
			break;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   402
		case EMsvFileStoreExists:
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   403
			FileStoreExistsL(aMessage);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   404
			break;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   405
		case EMsvGetAndClearIndexCorruptFlag:
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   406
			aMessage.Complete(iMsvServer.Context().GetAndClearIndexCorruptFlagL());
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   407
			break;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   408
		case EMsvCopyStore:
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   409
			CopyStoreL(aMessage);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   410
			break;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   411
		case EMsvDeleteStore:
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   412
			DeleteStoreL(aMessage);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   413
			break;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   414
		case EMsvDriveContainsStore:
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   415
			aMessage.Complete(MessageServer::DriveContainsStore(iMsvServer.FileSession(),aMessage.Int0()));
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   416
			break;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   417
		case EMsvMessageStoreDrivePresent:
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   418
			aMessage.Complete(MessageServer::IsMessageStoreDrivePresentL(iMsvServer.FileSession()));			
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   419
			break;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   420
		case EMsvGetBodyTextFilePath:
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   421
			 BodyTextFilePathL(aMessage);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   422
			 break;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   423
		case EMsvOpenTextFileForRead:
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   424
			 OpenPlainTextFileL(aMessage);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   425
			 break;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   426
		case EMsvCreatePlainTextFile:
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   427
			 CreatePlainTextFileL(aMessage);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   428
			 break;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   429
		case EMsvDeletePlainTextFile:
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   430
			DeletePlainTextFileL(aMessage); 
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   431
			break;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   432
		case EMsvReplacePlainTextFile:
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   433
			ReplacePlainTextFileL(aMessage);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   434
			break;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   435
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   436
		case EMsvGetNonOperationMtmData:
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   437
			{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   438
			GetNonOperationMtmDataL(aMessage);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   439
			break;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   440
			}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   441
		case EMsvSearchSortOperation: // On HEADER AND BODY
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   442
			SearchSortOnHeaderAndBodytMsgL(aMessage);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   443
			break;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   444
	
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   445
		case EMsvSearchSortOnIndexEntry: //On INDEX ENTRY.
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   446
			SearchSortOnIndexEntryL(aMessage);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   447
			break;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   448
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   449
		case EMsvGetResult ://Index entry result.
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   450
			SendSearchSortIndexEntryResultL(aMessage);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   451
			break;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   452
		
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   453
		case EMsvGetIdsOrResult://header result.
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   454
			SendResultOrIdsToSearchL(aMessage);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   455
			break;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   456
		
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   457
		case EMsvGetResultCount:
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   458
			GetSearchSortResultCountL(aMessage);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   459
			break;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   460
			
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   461
		case EMsvGetNextId:
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   462
			GetResultInIteratorL(aMessage);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   463
			break;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   464
		
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   465
		case EMsvGetNextEntry:
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   466
			GetNextEntryInIteratorL(aMessage);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   467
			break;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   468
		
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   469
		case EMsvGetQueryId:
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   470
			GetQueryIDL(aMessage);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   471
			break;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   472
	
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   473
		case EMsvUnmarQueryId:
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   474
			QueryUnMarkedL(aMessage);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   475
			break;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   476
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   477
		case EMsvIdWithSortFiled:
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   478
			UpdateSearchSortCacheWithSortFiledL(aMessage);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   479
			break;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   480
	
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   481
		case EMsvSearchSortQueryId:
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   482
			GetResultForQueryIDL(aMessage);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   483
			break;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   484
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   485
		case EMsvQueryData:
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   486
			CopyQueryDataL(aMessage);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   487
			break;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   488
			
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   489
		case EMsvGetSearchSortProgress:
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   490
			GetSearchSortProgressInfoL(aMessage);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   491
			break;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   492
			
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   493
		case EMsvCancelSearchSortOp:
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   494
			SearchSortOperationCancelL(aMessage);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   495
			break;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   496
			
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   497
		case EMsvUpdateAndSort:
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   498
			UpdateSearchSortResultsAndSortByEntryL(aMessage);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   499
			break;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   500
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   501
// Code changes for PREQ 557.	   
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   502
#if (defined SYMBIAN_MSGS_ENHANCED_REMOVABLE_MEDIA_SUPPORT)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   503
		case EMsvGetChildrenALL:
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   504
			GetChildrenAllL(aMessage);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   505
			break;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   506
		case EMsvGetChildIdsALL:
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   507
			GetChildIdsAllL(aMessage);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   508
			break;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   509
		case EMsvGetCurrentDriveInfo:
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   510
			CurrentDriveInfoL(aMessage);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   511
			break;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   512
		case EMsvGetDriveList:
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   513
			DriveListL(aMessage);	   
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   514
			break;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   515
		case EMsvGetAvailableDriveList:
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   516
			AvailableDriveListL(aMessage);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   517
			break;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   518
		case EMsvAddDriveToDriveList:
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   519
			AddDriveL(aMessage);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   520
			break;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   521
		case EMsvRemoveDriveFromDriveList:
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   522
			RemoveDriveL(aMessage); 
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   523
			break;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   524
		case EMsvUpdateDrivePriority:
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   525
			UpdateDrivePriorityL(aMessage);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   526
			break;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   527
#if (defined SYMBIAN_MESSAGESTORE_UNIT_TESTCODE)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   528
		case EMsvResetRepository:
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   529
			ResetRepositoryL(aMessage);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   530
			break;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   531
		case EMsvPrintCache:
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   532
			PrintCache(aMessage);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   533
			break;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   534
#endif	  // #if (defined SYMBIAN_MESSAGESTORE_UNIT_TESTCODE)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   535
#endif	  // #if (defined SYMBIAN_MSGS_ENHANCED_REMOVABLE_MEDIA_SUPPORT)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   536
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   537
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   538
#if (defined SYMBIAN_MESSAGESTORE_HEADER_BODY_USING_SQLDB)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   539
		case EMsvCreateStore:
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   540
			CreateHeaderTableL(aMessage);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   541
			break;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   542
		case EMsvCheckStoreExists:
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   543
			DoesStoreExistsL(aMessage);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   544
			break;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   545
		case EMsvLastErrorMessage:
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   546
			LastErrorMessageL(aMessage);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   547
			break;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   548
		case EMsvCreateHeaderEntry:
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   549
			CreateHeaderEntryL(aMessage);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   550
			break;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   551
		case EMsvLoadHeaderEntry:
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   552
			LoadHeaderEntryL(aMessage);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   553
			break;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   554
		case EMsvUpdateHeaderEntry:
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   555
			UpdateHeaderEntryL(aMessage);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   556
			break;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   557
		case EMsvDeleteHeaderEntry:
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   558
			DeleteHeaderEntryL(aMessage);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   559
			break;							  
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   560
		case EMsvCheckAnyStoreExists:
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   561
			DoesAnyStoreExists(aMessage);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   562
			break;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   563
		case EMsvCheckHeaderTableExist:
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   564
			{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   565
			DoesHeaderTableExist(aMessage);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   566
			break;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   567
			}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   568
		case EMsvGetConvertibleDriveList:
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   569
			GetConvertibleDriveListL(aMessage);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   570
			break;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   571
		case EMsvConvertMessageStore:
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   572
			ConvertMessageStoreL(aMessage);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   573
			break;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   574
		case EMsvGetConversionStatus:
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   575
			GetConversionStatus(aMessage);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   576
			break;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   577
		case EMsvCancelConversionRequest:
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   578
			CancelConversionRequestL(aMessage);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   579
			break;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   580
#endif	  // #if (defined SYMBIAN_MESSAGESTORE_HEADER_BODY_USING_SQLDB)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   581
		default:
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   582
			PanicClient(aMessage, EMsvBadRequest);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   583
			break;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   584
		}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   585
	}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   586
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   587
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   588
void CMsvServerSession::QueueSessionEventRequestL(const RMessage2 &aMessage)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   589
//
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   590
// The client is requesting notifcation of any changes
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   591
//
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   592
	{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   593
	if (iRequestQueued)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   594
		{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   595
		PanicClient(aMessage, EMsvDuplicatedChangeRequest);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   596
		return;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   597
		}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   598
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   599
	if (iChangeBuffer->IsEmpty())
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   600
		{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   601
		// queue this request until a change occurs
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   602
		iQueuedMessage = aMessage;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   603
		iRequestQueued = ETrue;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   604
		}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   605
	else
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   606
		{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   607
		// inform client of change which has been queued
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   608
		SendNotificationL(aMessage);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   609
		}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   610
	}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   611
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   612
void CMsvServerSession::SendNotificationL(const RMessage2& aMessage)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   613
	{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   614
	// inform client of change which has been queued
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   615
	TPckgBuf<TUint32> sequence;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   616
	aMessage.WriteL(0, iChangeBuffer->Next(sequence()));
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   617
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   618
	// Tell the client the notification sequence number
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   619
	aMessage.WriteL(1, sequence);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   620
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   621
#ifndef _NO_SERVER_LOGGING_
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   622
	iMsvServer.Log(_L("Sending notification sequence %d"), sequence());
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   623
#endif
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   624
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   625
	aMessage.Complete(KErrNone);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   626
	iChangeBuffer->Out();
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   627
	}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   628
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   629
void CMsvServerSession::CancelSessionEventRequest(const RMessage2 &aMessage)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   630
//
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   631
// The client is cancelling the outstanding request
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   632
//
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   633
	{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   634
	if (iRequestQueued)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   635
		{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   636
		iQueuedMessage.Complete(KErrNone);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   637
		iRequestQueued = EFalse;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   638
		}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   639
	aMessage.Complete(KErrNone);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   640
	}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   641
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   642
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   643
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   644
void CMsvServerSession::ReadBufferL(const RMessage2& aMessage, TInt aParam, HBufC8*& aBuffer)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   645
//
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   646
// Copies a buffer from the client
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   647
// Only fails if there is not enough memory to increase the buffer size (if needed)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   648
//
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   649
	{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   650
	TInt desLen = aMessage.GetDesLength(aParam);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   651
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   652
	if(desLen >= 0)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   653
		{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   654
		TBool alloced=EFalse;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   655
		HBufC8* localBuffer=NULL;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   656
		
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   657
		if (aBuffer==NULL)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   658
			{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   659
			localBuffer = HBufC8::NewLC(desLen);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   660
			alloced=ETrue;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   661
			}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   662
		else if (desLen > aBuffer->Des().MaxLength())
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   663
			{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   664
			// we have to increase the size of iBuffer
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   665
			aBuffer->Des().SetLength(0); // to avoid copying the contents
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   666
			localBuffer = aBuffer->ReAlloc(desLen);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   667
			if (localBuffer==NULL)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   668
				{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   669
				User::Leave(KErrNoMemory); // unable to create buffer large enough
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   670
				}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   671
			}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   672
		
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   673
		if(localBuffer)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   674
			{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   675
			TPtr8 desPtr = localBuffer->Des();
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   676
			aMessage.ReadL(aParam, desPtr);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   677
				
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   678
			if (alloced)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   679
				{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   680
				CleanupStack::Pop(); // localBuffer
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   681
				}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   682
			
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   683
			aBuffer = localBuffer;  
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   684
			}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   685
		//use aBuffer
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   686
		else
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   687
			{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   688
			TPtr8 desPtr = aBuffer->Des();
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   689
			aMessage.ReadL(aParam, desPtr); 
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   690
			}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   691
		}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   692
	else
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   693
		{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   694
		// desLen is negative leave with an error.
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   695
		User::Leave(KErrArgument);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   696
		}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   697
	}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   698
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   699
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   700
void CMsvServerSession::WriteBufferL(const RMessage2& aMessage, TInt aParam)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   701
//
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   702
// Copies the packed entry buffer from the client
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   703
// Only fails if the client buffer is not large enough
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   704
//
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   705
	{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   706
	TInt desLen = aMessage.GetDesMaxLength(aParam);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   707
	if (desLen < iBuffer->Des().Length())
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   708
		User::Leave(KErrOverflow);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   709
	aMessage.WriteL(aParam, iBuffer->Des());
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   710
	}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   711
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   712
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   713
void CMsvServerSession::WriteL(const RMessage2& aMessage, TInt aParam, const TDesC8& aDes)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   714
//
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   715
// Write a descriptor to the client thread; if unsuccessful,leave so that client can handle it.
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   716
//
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   717
	{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   718
	TInt error = aMessage.Write(aParam, aDes);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   719
	if (error)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   720
		{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   721
		User::Leave(error);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   722
		}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   723
	}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   724
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   725
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   726
void CMsvServerSession::ReadL(const RMessage2& aMessage, TInt aParam, TDes8& aDes)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   727
//
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   728
// Reads a descriptor from the client thread; if unsuccessful,leave so that client can handle it
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   729
//
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   730
	{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   731
	TInt error = aMessage.Read(aParam, aDes);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   732
	if (error)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   733
		{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   734
		User::Leave(error);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   735
		}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   736
	}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   737
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   738
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   739
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   740
void CMsvServerSession::CopyOperationDataL(const RMessage2 &aMessage)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   741
//
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   742
// Copies operation data from the client and stores for the asynchronous operation request
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   743
//
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   744
	{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   745
	TMsvOp operationId = aMessage.Int0();
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   746
	CMsvOperationData* opData = new (ELeave) CMsvOperationData(operationId);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   747
	CleanupStack::PushL(opData);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   748
	ReadBufferL(aMessage, 1, opData->iBuffer);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   749
	iOperationDataArray.AppendL(opData);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   750
	CleanupStack::Pop(); // opData
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   751
	aMessage.Complete(KErrNone);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   752
	}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   753
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   754
void CMsvServerSession::CopyCommandDataL(const RMessage2 &aMessage)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   755
//
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   756
// Copies operation data from the client and stores for the asynchronous operation request
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   757
//
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   758
	{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   759
	TMsvOp operationId = aMessage.Int0();
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   760
	// operation data
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   761
	CMsvOperationData* opData = new (ELeave) CMsvOperationData(operationId);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   762
	CleanupStack::PushL(opData);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   763
	ReadBufferL(aMessage, 1, opData->iBuffer);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   764
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   765
	// This is to check if the buffer is a valid , before it is added to 
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   766
	// the operationData array
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   767
	TMsvPackedOperation packedOperation(opData->iBuffer);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   768
	CMsvEntrySelection* selection = new (ELeave) CMsvEntrySelection;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   769
	CleanupStack::PushL(selection);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   770
	TInt command, temp;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   771
	packedOperation.UnpackL(*selection, command, temp);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   772
	CleanupStack::PopAndDestroy(selection);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   773
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   774
	iOperationDataArray.AppendL(opData);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   775
	
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   776
	// additional parameter
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   777
	CMsvOperationData* opParam = new (ELeave) CMsvOperationData(operationId);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   778
	CleanupStack::PushL(opParam);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   779
	ReadBufferL(aMessage, 2, opParam->iBuffer);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   780
	iOperationDataArray.AppendL(opParam);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   781
	CleanupStack::Pop(2, opData); // opParam, opData
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   782
	//
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   783
	aMessage.Complete(KErrNone);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   784
	}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   785
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   786
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   787
HBufC8* CMsvServerSession::RecoverOperationData(TMsvOp aOpId)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   788
//
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   789
// Returns the operation data previously copied from the client
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   790
// NOTE the calling function is responsible for deleting the returned HBufC
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   791
//
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   792
	{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   793
	// find the data
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   794
	TInt count = 0;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   795
	TInt totalCount=iOperationDataArray.Count();
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   796
	for (; count<totalCount; count++)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   797
		{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   798
		if (iOperationDataArray.At(count)->OperationId()==aOpId)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   799
			break;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   800
		}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   801
	// Panic during debug if cannot find data
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   802
	__ASSERT_DEBUG(count<iOperationDataArray.Count(), PanicServer(EMsvEntryDataNotFound));
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   803
	// At runtime, return NULL.
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   804
	if(count >= iOperationDataArray.Count())
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   805
		{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   806
		return NULL;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   807
		}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   808
	// return the data to the caller, and delete the container object
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   809
	HBufC8* opData = iOperationDataArray.At(count)->iBuffer;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   810
	iOperationDataArray.At(count)->iBuffer = NULL;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   811
	delete iOperationDataArray.At(count);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   812
	iOperationDataArray.Delete(count);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   813
	return opData;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   814
	}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   815
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   816
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   817
void CMsvServerSession::CreateEntryL(const RMessage2 &aMessage)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   818
//
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   819
// Create a entry in the index
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   820
//
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   821
	{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   822
	// Recover the operation data
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   823
	TMsvOp operationId = aMessage.Int0();
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   824
	HBufC8* opData = RecoverOperationData(operationId);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   825
	// Check for NULL data entry to be changed, must have been given incorrect id for argument.
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   826
	if(opData == NULL)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   827
		{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   828
		aMessage.Complete(KErrArgument);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   829
		return;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   830
		}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   831
	
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   832
	CleanupStack::PushL(opData);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   833
	// Unpack the data
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   834
	TMsvPackedEntry packedEntry(opData);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   835
	TMsvEntry entry;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   836
	packedEntry.UnpackEntry(entry);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   837
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   838
	// Check the content of the entry are conforming to policy
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   839
	if (!MsvUtils::ValidEntry(entry, ETrue))
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   840
		{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   841
		PanicClient(aMessage, EMsvIncorrectEntry);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   842
		User::Leave(KErrNotSupported);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   843
		}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   844
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   845
	// Check if the entry is local or the entry is a service
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   846
	TBool local=ETrue;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   847
	// Police request - client must be able to create the entry.
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   848
	iMsvServer.PoliceCreateEntryL(aMessage, entry, local, __PLATSEC_DIAGNOSTIC_STRING("Checked by CMsvServerSession::CreateEntryL"));
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   849
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   850
	// For purpose of creating a service entry, it is considered local as an MTM
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   851
	// is not required to do the work.
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   852
	if( entry.iType == KUidMsvServiceEntry )
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   853
		local = ETrue;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   854
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   855
	// start the change for local or remote entries
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   856
	if (local)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   857
		{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   858
		TSecureId ownerId = aMessage.Int1();
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   859
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   860
		DoCreateLocalEntryL(entry, operationId, aMessage, ownerId);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   861
		}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   862
	else
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   863
		DoCreateRemoteEntryL(entry, operationId, aMessage);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   864
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   865
	CleanupStack::PopAndDestroy(); // opData
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   866
	}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   867
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   868
void CMsvServerSession::DoCreateLocalEntryL(const TMsvEntry& aEntry, TMsvOp aOpId, const RMessage2 &aMessage, TSecureId aOwnerId)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   869
//
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   870
// Create a local entry in the index
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   871
//
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   872
	{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   873
	CMsvLocalCreateOperation* operation = new(ELeave) CMsvLocalCreateOperation(aMessage, aOpId, aEntry, iMsvServer);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   874
	CleanupStack::PushL(operation);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   875
	iOperations.AppendL(operation);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   876
	CleanupStack::Pop(operation);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   877
	operation->Start(aOwnerId);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   878
	}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   879
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   880
void CMsvServerSession::DoCreateRemoteEntryL(const TMsvEntry& aEntry, TMsvOp aOpId, const RMessage2 &aMessage)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   881
//
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   882
// Create a remote entry in the index
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   883
//
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   884
	{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   885
	// make sure that the operation can be added to the list
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   886
	iOperations.SetReserveL(iOperations.Count()+1);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   887
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   888
	// create the operation and pass it to the server for starting/queuing
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   889
	CMsvMtmOperation* operation = CMsvMtmOperation::NewL(aMessage, aOpId, aEntry.iMtm, aEntry.iServiceId, iSessionId, iMsvServer);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   890
	CleanupStack::PushL(operation);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   891
	operation->CreateL(aEntry);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   892
	iMsvServer.StartOperationL(*operation, iSessionId, aMessage, ETrue);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   893
	iOperations.AppendL(operation); // will not fail - see start of function
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   894
	CleanupStack::Pop(); // operation
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   895
	}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   896
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   897
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   898
void CMsvServerSession::ChangeEntryL(const RMessage2 &aMessage)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   899
//
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   900
// Changes the entry
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   901
//
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   902
	{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   903
	// Recover the operation data
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   904
	TMsvOp operationId = aMessage.Int0();
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   905
	HBufC8* opData = RecoverOperationData(operationId);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   906
	// Check for NULL data entry to be changed, must have been given incorrect id for argument.
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   907
	if(opData == NULL)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   908
		{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   909
		aMessage.Complete(KErrArgument);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   910
		return;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   911
		}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   912
		
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   913
	CleanupStack::PushL(opData);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   914
	// Unpack the data
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   915
	TMsvPackedEntry packedEntry(opData);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   916
	TMsvEntry entry;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   917
	packedEntry.UnpackEntry(entry);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   918
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   919
	// Check the content of the entry are conforming to policy
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   920
	__ASSERT_DEBUG(MsvUtils::ValidEntry(entry), PanicClient(aMessage, EMsvIncorrectEntry));
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   921
	if (!MsvUtils::ValidEntry(entry))
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   922
		User::Leave(KErrNotSupported);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   923
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   924
	// Check if the entry is local or the entry is a service
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   925
	TBool local=ETrue;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   926
	// Police request - client must be able to modify the entry.
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   927
	iMsvServer.PoliceModifyEntryL(aMessage, entry, local, __PLATSEC_DIAGNOSTIC_STRING("Checked by CMsvServerSession::ChangeEntryL"));
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   928
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   929
	// For purpose of changing a service entry, it is considered local as an MTM
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   930
	// is not required to do the work.
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   931
	if( entry.iType == KUidMsvServiceEntry )
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   932
		local = ETrue;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   933
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   934
	// start the change for local or remote entries
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   935
	if (local)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   936
		{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   937
		// Extract the owner ID from the message.
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   938
		TSecureId ownerId = aMessage.Int1();
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   939
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   940
		DoChangeLocalEntryL(entry, operationId, aMessage, ownerId);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   941
		}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   942
	else
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   943
		DoChangeRemoteEntryL(entry, operationId, aMessage);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   944
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   945
	CleanupStack::PopAndDestroy(); // opData
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   946
	}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   947
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   948
void CMsvServerSession::DoChangeLocalEntryL(const TMsvEntry& aEntry, TMsvOp aOpId, const RMessage2 &aMessage, TSecureId aOwnerId)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   949
//
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   950
// Create a local entry in the index
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   951
//
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   952
	{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   953
	CMsvLocalChangeOperation* operation = new(ELeave) CMsvLocalChangeOperation(aMessage, aOpId, aEntry, iMsvServer);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   954
	CleanupStack::PushL(operation);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   955
	// Check the given owner ID - if NULL then this is not a forced update, but
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   956
	// need to set the ID to that of the requesting process.
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   957
	TBool forcedUpdate = (aOwnerId != aMessage.SecureId());
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   958
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   959
	operation->StartL(aOwnerId, forcedUpdate);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   960
	iOperations.AppendL(operation);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   961
	CleanupStack::Pop(); //operation
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   962
	}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   963
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   964
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   965
void CMsvServerSession::DoChangeRemoteEntryL(const TMsvEntry& aEntry, TMsvOp aOpId, const RMessage2 &aMessage)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   966
//
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   967
// Change a entry under a remote service
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   968
//
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   969
	{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   970
	// make sure that the operation can be added to the list
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   971
	iOperations.SetReserveL(iOperations.Count()+1);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   972
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   973
	// create the operation
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   974
	CMsvMtmOperation* operation = CMsvMtmOperation::NewL(aMessage, aOpId, aEntry.iMtm, aEntry.iServiceId, iSessionId, iMsvServer);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   975
	CleanupStack::PushL(operation);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   976
	operation->ChangeL(aEntry);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   977
	iMsvServer.StartOperationL(*operation, iSessionId, aMessage, ETrue);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   978
	iOperations.AppendL(operation); // will not fail - see start of function
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   979
	CleanupStack::Pop(); // operation
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   980
	}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   981
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   982
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   983
void CMsvServerSession::PackEntryAndWriteBufferL(const RMessage2 &aMessage, const TInt aParam, const TMsvEntry& aEntry)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   984
//
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   985
//
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   986
//
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   987
	{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   988
	// package the entry
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   989
	TMsvPackedEntry packedEntry(iBuffer);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   990
	TInt error = packedEntry.PackEntry(aEntry);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   991
	while(error!=KErrNone)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   992
		{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   993
		// increase the size of the buffer and try again
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   994
		iBuffer->Des().SetLength(0); // to avoid copying contents
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   995
		iBuffer = iBuffer->ReAllocL(iBuffer->Des().MaxSize() + KMsvSessionBufferLength);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   996
		error = packedEntry.PackEntry(aEntry);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   997
		}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   998
	WriteBufferL(aMessage, aParam);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
   999
	}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1000
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1001
void CMsvServerSession::GetEntryL(const RMessage2 &aMessage)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1002
//
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1003
// Returns the index entry for the given id
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1004
//
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1005
	{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1006
	// copy across the entry id to get
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1007
	TMsvId id = aMessage.Int0();
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1008
	TMsvEntry* entryPtr;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1009
	TSecureId ownerId;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1010
	TInt error = KErrNone;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1011
	error = iMsvServer.IndexAdapter().GetEntry(id, entryPtr, ownerId);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1012
	if (error==KErrNone)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1013
		{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1014
		// Police request - client must be able to read the entry.
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1015
		iMsvServer.PoliceReadEntryL(aMessage, ownerId, __PLATSEC_DIAGNOSTIC_STRING("Checked by CMsvServerSession::GetEntryL"));
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1016
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1017
		// get the owning service and write that back
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1018
		TPckgBuf<TMsvId> service;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1019
		if (id==KMsvRootIndexEntryId)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1020
			service()=KMsvRootIndexEntryId;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1021
		else
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1022
			{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1023
			iMsvServer.IndexAdapter().OwningService(id, service()); // error ignore as the entry exists
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1024
			}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1025
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1026
		WriteL(aMessage, 2, service);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1027
		// write the entry back
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1028
		PackEntryAndWriteBufferL(aMessage, 1, *entryPtr);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1029
		}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1030
	aMessage.Complete(error);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1031
	}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1032
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1033
void CMsvServerSession::OutstandingOperationsL(const RMessage2& aMessage)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1034
	{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1035
	TPckgBuf<TInt> outstanding;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1036
	outstanding() = iMsvServer.OutstandingOperations() > 0;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1037
	WriteL(aMessage, 0, outstanding);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1038
	aMessage.Complete(KErrNone);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1039
	}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1040
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1041
void CMsvServerSession::GetNotifySequenceL(const RMessage2& aMessage)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1042
	{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1043
	TPckgBuf<TUint32> sequence;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1044
	sequence() = iChangeBuffer->NotifySequence();
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1045
	WriteL(aMessage, 0, sequence);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1046
	aMessage.Complete(KErrNone);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1047
	}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1048
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1049
void CMsvServerSession::GetChildrenL(const RMessage2 &aMessage)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1050
//
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1051
// Gets the children of an entry
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1052
//
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1053
	{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1054
	// reset
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1055
	iChildrenSelection->Reset();
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1056
	iChildrenSelectionIds->Reset();
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1057
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1058
	// copy across the children details structure
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1059
	TPckgBuf<TMsvChildrenDetails> children;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1060
	aMessage.ReadL(0, children);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1061
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1062
	// Check that the children details arguments are empty. Panic in debug mode but try to handle it gracefully in
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1063
	// release code.
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1064
	__ASSERT_DEBUG( children().iTotalNumberChildren==0 &&
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1065
					children().iNumberChildrenInArray==0, PanicServer(EMsvChildrenDetailsNotEmpty2));
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1066
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1067
	if( children().iTotalNumberChildren != 0 || children().iNumberChildrenInArray != 0 )
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1068
		{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1069
		aMessage.Complete(KErrArgument);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1070
		return;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1071
		}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1072
		
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1073
#if (defined SYMBIAN_MSGS_ENHANCED_REMOVABLE_MEDIA_SUPPORT)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1074
	// Return error, if the passed parent-id 
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1075
	// is a non-current standard id.
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1076
	if( (IsStandardId(children().iParentId)) &&
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1077
		(KCurrentDriveId != GetDriveId(children().iParentId))
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1078
	  )
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1079
		{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1080
		aMessage.Complete(KErrArgument);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1081
		return;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1082
		}	   
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1083
#endif
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1084
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1085
	// copy across the sort order
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1086
	TPckgBuf<TMsvSelectionOrdering> order;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1087
	aMessage.ReadL(1, order);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1088
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1089
	// get the children as a selection
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1090
	// Need to filter the list via the client secure ID if the client is not
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1091
	// trusted with Read User Data.
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1092
	TBool filterByOwnerId = !aMessage.HasCapability(ECapabilityReadUserData);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1093
	iMsvServer.IndexAdapter().GetChildrenL(children().iParentId, *iChildrenSelection, order(), KUidMsvNullEntry, filterByOwnerId, aMessage.SecureId());
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1094
	// return number of children
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1095
	children().iTotalNumberChildren = iChildrenSelection->Count();
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1096
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1097
	// package up the entries
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1098
	iBuffer->Des().SetMax();
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1099
	TMsvPackedEntryArray packedEntryArray(iBuffer);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1100
	TInt count=0;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1101
	TInt error=KErrNone;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1102
	TInt totalCount=iChildrenSelection->Count();
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1103
	for (; count<totalCount; count++)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1104
		{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1105
		error = packedEntryArray.PackEntry(*iChildrenSelection->At(count));
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1106
		if (error)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1107
			{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1108
			children().iLastEntryInArray = count;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1109
			break;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1110
			}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1111
		}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1112
	// return number of children in the array
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1113
	children().iNumberChildrenInArray = count;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1114
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1115
	// Try to write the buffer to the client (if any entries are in the array)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1116
    if (children().iNumberChildrenInArray)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1117
    	{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1118
        TRAPD(bufferError, WriteL(aMessage, 2, iBuffer->Des()));
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1119
        if(bufferError!=KErrNone)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1120
        	{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1121
        	// Writing data into client buffer is failed, we should not send incorrect count to client.
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1122
			error = bufferError;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1123
        	children().iNumberChildrenInArray = 0;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1124
        	children().iLastEntryInArray = 0;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1125
        	}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1126
        }
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1127
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1128
	// write the children to client
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1129
	WriteL(aMessage, 0, children);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1130
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1131
	if (error==KErrNone)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1132
		{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1133
		// reset the member data
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1134
		iChildrenSelection->Reset();
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1135
		}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1136
	else
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1137
		{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1138
		// keep an list of the ids separatelyin case they are deleted by another client
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1139
		TInt totalCount=iChildrenSelection->Count();
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1140
		for (count=0; count<totalCount; count++)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1141
			iChildrenSelectionIds->AppendL(iChildrenSelection->At(count)->Id());
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1142
		iChildrenDetails = children();
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1143
		}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1144
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1145
	// signal the client and finished with selection
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1146
	aMessage.Complete(error);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1147
	}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1148
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1149
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1150
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1151
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1152
void CMsvServerSession::GetRemainingChildrenL(const RMessage2 &aMessage)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1153
//
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1154
// Gets the remaining children of an entry when the buffer is to small
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1155
//
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1156
	{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1157
	// Check the arguments. Panic in debug mode but try to handle it gracefully in
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1158
	// release code.
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1159
	__ASSERT_DEBUG(iChildrenSelection->Count()!=0, PanicServer(EMsvChildrenSelectionNull));
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1160
	__ASSERT_DEBUG(iChildrenSelection->Count() == iChildrenSelectionIds->Count(), PanicServer(EMsvChildrenSelectionCountsMismatch));
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1161
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1162
	if( (iChildrenSelection->Count()==0) || (iChildrenSelection->Count() != iChildrenSelectionIds->Count()) )
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1163
		{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1164
		aMessage.Complete(KErrArgument);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1165
		return;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1166
		}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1167
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1168
	// copy across the children details structure
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1169
	TPckgBuf<TMsvChildrenDetails> pDetails;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1170
	aMessage.ReadL(0, pDetails);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1171
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1172
	// Check the arguments. Panic in debug mode but try to handle it gracefully in
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1173
	// release code.
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1174
	__ASSERT_DEBUG( iChildrenDetails.iParentId == pDetails().iParentId &&
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1175
					iChildrenDetails.iTotalNumberChildren == pDetails().iTotalNumberChildren &&
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1176
					iChildrenDetails.iNumberChildrenInArray == pDetails().iNumberChildrenInArray, PanicServer(EMsvChildrenDetailsNotEmpty1));
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1177
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1178
	if( iChildrenDetails.iParentId != pDetails().iParentId ||
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1179
		iChildrenDetails.iTotalNumberChildren != pDetails().iTotalNumberChildren ||
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1180
		iChildrenDetails.iNumberChildrenInArray != pDetails().iNumberChildrenInArray )
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1181
		{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1182
		aMessage.Complete(KErrArgument);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1183
		return;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1184
		}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1185
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1186
	iChildrenDetails=pDetails();
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1187
	// Make a local copy of details, this needs to be used when the client buffer is not sufficient enough to
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1188
	// pack data.
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1189
	TMsvChildrenDetails localCopy = pDetails();
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1190
	
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1191
	// package up the entries
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1192
	iBuffer->Des().SetMax();
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1193
	TMsvPackedEntryArray packedEntryArray(iBuffer);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1194
	TInt error=KErrNone;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1195
	TInt count=iChildrenDetails.iLastEntryInArray;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1196
	iChildrenDetails.iLastEntryInArray=-1;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1197
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1198
	TInt childCount=iChildrenSelection->Count();
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1199
	TInt missingCount = 0;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1200
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1201
	for (; count<childCount; count++)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1202
		{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1203
		// The iChildrenSelection contains pointers to TMsvEntry objects. If one of those
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1204
		// objects has been deleted then the pointer will no longer be valid so we need
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1205
		// to get the entry again using the ID from iChildrenSelectionIds.
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1206
		TMsvEntry* entryPtr;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1207
		TInt err = KErrNone;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1208
		err = iMsvServer.IndexAdapter().GetEntry(iChildrenSelectionIds->At(count), entryPtr);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1209
		if (err != KErrNotFound)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1210
			{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1211
#ifndef _NO_SERVER_LOGGING_
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1212
			if (entryPtr != iChildrenSelection->At(count))
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1213
				{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1214
				iMsvServer.Log(_L("GetRemainingChildrenL() - Ptr mismatch for id %d (%x %x)"), iChildrenSelectionIds->At(count), iChildrenSelection->At(count), entryPtr);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1215
				}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1216
#endif
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1217
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1218
			error = packedEntryArray.PackEntry(*entryPtr);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1219
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1220
			if (error)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1221
				{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1222
				// the buffer is not large enough to pack all the entries
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1223
				iChildrenDetails.iLastEntryInArray = count;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1224
				if ((count - missingCount - pDetails().iLastEntryInArray) == 0)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1225
					{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1226
					// Couldn't fit entry in buffer
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1227
					// Increase size of buffer - client will do this as well
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1228
					iBuffer->Des().SetLength(0);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1229
					iBuffer = iBuffer->ReAllocL(iBuffer->Des().MaxSize() + KMsvSessionBufferLength);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1230
					}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1231
				break;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1232
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1233
				}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1234
			}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1235
		else
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1236
			{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1237
#ifndef _NO_SERVER_LOGGING_
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1238
			iMsvServer.Log(_L("GetRemainingChildrenL() - Ignore missing id %d"), iChildrenSelectionIds->At(count));
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1239
#endif
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1240
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1241
			++missingCount;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1242
			}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1243
		}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1244
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1245
	// return number of children in the array
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1246
	iChildrenDetails.iNumberChildrenInArray = count - missingCount - pDetails().iLastEntryInArray;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1247
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1248
	// write the array to the client (if any entries are in the array)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1249
	TRAPD(err, WriteBufferL(aMessage, 2));
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1250
	if(err)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1251
		{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1252
		if(err == KErrOverflow)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1253
		 {
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1254
		 localCopy.iNumberChildrenInArray = 0;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1255
		 iChildrenDetails = localCopy;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1256
		 pDetails() = iChildrenDetails;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1257
		 WriteL(aMessage, 0, pDetails);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1258
		 User::Leave(KErrOverflow);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1259
		 }
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1260
	 else
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1261
		 {
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1262
		 User::Leave(err);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1263
		 }   
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1264
	 }   
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1265
			 
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1266
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1267
	// write the details to client
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1268
	pDetails() = iChildrenDetails;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1269
	WriteL(aMessage, 0, pDetails);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1270
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1271
	if (error==KErrNone)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1272
		{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1273
		// reset the member data
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1274
		iChildrenDetails = TMsvChildrenDetails();
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1275
		iChildrenSelection->Reset();
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1276
		iChildrenSelectionIds->Reset();
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1277
		}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1278
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1279
	// signal the client and finished with selection
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1280
	aMessage.Complete(error);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1281
	}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1282
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1283
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1284
void CMsvServerSession::DeleteEntriesL(const RMessage2 &aMessage)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1285
//
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1286
// Deleting entries
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1287
//
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1288
	{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1289
	// Recover the operation data
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1290
	TMsvOp operationId = aMessage.Int0();
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1291
	HBufC8* opData = RecoverOperationData(operationId);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1292
	// Check for NULL data entry to be changed, must have been given incorrect id for argument.
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1293
	if(opData == NULL)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1294
		{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1295
		aMessage.Complete(KErrArgument);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1296
		return;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1297
		}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1298
	
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1299
	CleanupStack::PushL(opData);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1300
	// unpack the data
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1301
	TMsvPackedOperation packedOperation(opData);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1302
	CMsvEntrySelection* selection = new (ELeave) CMsvEntrySelection;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1303
	CleanupStack::PushL(selection);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1304
	TInt temp1, temp2;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1305
	packedOperation.UnpackL(*selection, temp1, temp2);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1306
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1307
/**
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1308
Added code to begin transaction for bulk deletion.
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1309
*/
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1310
	iMsvServer.IndexAdapter().GetDbAdapter()->BeginTransactionL();
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1311
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1312
	if (selection->Count())
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1313
		{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1314
		// Check if the entries are local (inc services) or remote
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1315
		TBool local;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1316
		TMsvEntry* entry=NULL;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1317
		User::LeaveIfError(iMsvServer.IndexAdapter().GetEntry(selection->At(0), entry));
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1318
		// Police request - client must be able to modify the entry.
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1319
		iMsvServer.PoliceModifyEntryL(aMessage, *entry, local, __PLATSEC_DIAGNOSTIC_STRING("Checked by CMsvServerSession::DeleteEntriesL"));
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1320
		// start the move for local or remote messages
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1321
		if (local || entry->iType==KUidMsvServiceEntry)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1322
			{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1323
			DoDeleteLocalEntriesL(selection, operationId, aMessage);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1324
			TMsgType aType(EDeletedMsg);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1325
			if(CMSvSearchSortCacheManager::Instance()->iManagerEntry != NULL)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1326
				{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1327
				if(CMSvSearchSortCacheManager::Instance()->iManagerEntry->Count()>0)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1328
					{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1329
					TInt count=selection->Count();
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1330
					TInt i=0;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1331
					while(i < count)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1332
						{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1333
						CMsvSearchSortDeltaCache::Instance()->EntryInDeltaCache(selection->At(i),aType);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1334
						i++;	
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1335
						}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1336
					}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1337
				}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1338
			}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1339
		else
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1340
			{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1341
			DoDeleteRemoteEntriesL(selection, operationId, aMessage);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1342
			TMsgType aType(EDeletedMsg);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1343
			if(CMSvSearchSortCacheManager::Instance()->iManagerEntry != NULL)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1344
				{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1345
				if(CMSvSearchSortCacheManager::Instance()->iManagerEntry->Count()>0)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1346
					{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1347
					TInt count=selection->Count();
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1348
					TInt i=0;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1349
					while(i < count)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1350
						{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1351
						CMsvSearchSortDeltaCache::Instance()->EntryInDeltaCache(selection->At(i),aType);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1352
						i++;	
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1353
						}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1354
					}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1355
				}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1356
			}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1357
		}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1358
	else
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1359
		{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1360
		PanicClient(aMessage, EMsvNoEntriesInDeleteSelection);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1361
		aMessage.Complete(KErrNotFound);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1362
		}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1363
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1364
	CleanupStack::PopAndDestroy(); // opData
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1365
	}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1366
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1367
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1368
void CMsvServerSession::DoDeleteLocalEntriesL(CMsvEntrySelection*& aSelection, TMsvOp aOpId, const RMessage2 &aMessage)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1369
//
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1370
//
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1371
//
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1372
	{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1373
	CMsvLocalDeleteOperation* operation = new(ELeave) CMsvLocalDeleteOperation(aMessage, aOpId, aSelection, iMsvServer);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1374
	CleanupStack::Pop(); // selection
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1375
	CleanupStack::PushL(operation);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1376
	operation->StartL();
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1377
	iOperations.AppendL(operation);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1378
	CleanupStack::Pop(); // operation
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1379
	}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1380
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1381
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1382
void CMsvServerSession::DoDeleteRemoteEntriesL(CMsvEntrySelection*& aSelection, TMsvOp aOpId, const RMessage2 &aMessage)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1383
//
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1384
//
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1385
//
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1386
	{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1387
	// make sure that the operation can be added to the list
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1388
	iOperations.SetReserveL(iOperations.Count()+1);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1389
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1390
	// find the first entry being acted on
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1391
	TMsvEntry* entry=NULL;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1392
	User::LeaveIfError(iMsvServer.IndexAdapter().GetEntry(aSelection->At(0), entry));
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1393
	// create the operation
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1394
	CMsvMtmOperation* operation = CMsvMtmOperation::NewL(aMessage, aOpId, entry->iMtm, entry->iServiceId, iSessionId, iMsvServer);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1395
	CleanupStack::Pop();
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1396
	CleanupStack::PushL(operation);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1397
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1398
	// set up the operation type and pass the data
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1399
	operation->DeleteAll(aSelection);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1400
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1401
	// either start the operation or queue it
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1402
	iMsvServer.StartOperationL(*operation, iSessionId, aMessage, ETrue);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1403
	iOperations.AppendL(operation); // will not fail - see start of function
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1404
	CleanupStack::Pop(); // operation
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1405
	}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1406
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1407
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1408
void CMsvServerSession::LockEntryL(const RMessage2 &aMessage)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1409
//
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1410
// Locks an entry in the index
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1411
//
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1412
	{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1413
	TMsvId id = aMessage.Int0();
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1414
	aMessage.Complete(iMsvServer.IndexAdapter().LockEntry(id));
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1415
	}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1416
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1417
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1418
void CMsvServerSession::ReleaseEntryL(const RMessage2 &aMessage)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1419
//
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1420
// Releases the lock on an entry in the index
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1421
//
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1422
	{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1423
	TMsvId id = aMessage.Int0();
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1424
	aMessage.Complete(iMsvServer.IndexAdapter().ReleaseEntry(id));
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1425
	}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1426
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1427
void CMsvServerSession::ReadStoreL(const RMessage2 &aMessage)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1428
//
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1429
// Can only read from a store that has nnot been locked
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1430
//
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1431
	{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1432
	// Fail now if the index says it's not available
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1433
	User::LeaveIfError(iMsvServer.IndexAdapter().ErrorState());
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1434
	TMsvId id = aMessage.Int0();
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1435
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1436
	// Police request - client must be able to read the entry.
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1437
	iMsvServer.PoliceReadEntryL(aMessage, id, __PLATSEC_DIAGNOSTIC_STRING("Checked by CMsvServerSession::ReadStoreL"));
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1438
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1439
	TBool locked;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1440
	TInt error = KErrNone;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1441
	error = iMsvServer.IndexAdapter().IsStoreLocked(id, locked);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1442
	if (error==KErrNone && locked)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1443
		error = KErrAccessDenied;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1444
	if(error==KErrNone)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1445
		{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1446
		iMsvServer.IndexAdapter().IncStoreReaderCount(id);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1447
		}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1448
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1449
	aMessage.Complete(error);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1450
	}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1451
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1452
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1453
void CMsvServerSession::LockStoreL(const RMessage2 &aMessage)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1454
//
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1455
// Tries to locks the store
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1456
// Adds the id to the list of locked entries
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1457
//
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1458
	{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1459
	// Fail now if the index says it's not available
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1460
	User::LeaveIfError(iMsvServer.IndexAdapter().ErrorState());
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1461
	TMsvId id = aMessage.Int0();
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1462
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1463
	// Police request - client must be able to modify the entry.
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1464
	iMsvServer.PoliceModifyEntryL(aMessage, id, __PLATSEC_DIAGNOSTIC_STRING("Checked by CMsvServerSession::LockStoreL"));
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1465
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1466
	iLockedStores.AppendL(id); // ensure that the entry cannot be locked but not added to the list
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1467
	TInt error = KErrNone;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1468
	error = iMsvServer.IndexAdapter().LockStore(id);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1469
	if (error)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1470
		iLockedStores.Delete(iLockedStores.Count()-1);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1471
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1472
	aMessage.Complete(error);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1473
	}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1474
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1475
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1476
void CMsvServerSession::ReleaseStoreL(const RMessage2 &aMessage)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1477
//
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1478
// Releases the lock on a store
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1479
// Removes the id from the list of locked entries
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1480
//
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1481
	{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1482
	TMsvId id = aMessage.Int0();
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1483
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1484
	// Police request - client must be able to modify the entry.
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1485
	iMsvServer.PoliceModifyEntryL(aMessage, id, __PLATSEC_DIAGNOSTIC_STRING("Checked by CMsvServerSession::ReleaseStoreL"));
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1486
	TInt error = KErrNone;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1487
	error = iMsvServer.IndexAdapter().ReleaseStore(id);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1488
	TInt count = iLockedStores.Count();
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1489
	while (count--)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1490
		{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1491
		if (iLockedStores.At(count)==id)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1492
			{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1493
			iLockedStores.Delete(count);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1494
			break;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1495
			}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1496
		}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1497
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1498
	__ASSERT_DEBUG(count>=0, PanicClient(aMessage, EMsvReleasingUnknownStore));
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1499
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1500
	aMessage.Complete(error);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1501
	}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1502
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1503
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1504
void CMsvServerSession::DecStoreReaderCountL(const RMessage2 &aMessage)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1505
//
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1506
// Decrements the reader count on a store
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1507
//
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1508
	{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1509
	TMsvId id = aMessage.Int0();
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1510
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1511
	// Police request - client must be able to read the entry.
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1512
	iMsvServer.PoliceReadEntryL(aMessage, id, __PLATSEC_DIAGNOSTIC_STRING("Checked by CMsvServerSession::DecStoreReaderCountL"));
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1513
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1514
	TInt error = KErrNone;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1515
	error = iMsvServer.IndexAdapter().DecStoreReaderCount(id);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1516
	aMessage.Complete(error);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1517
	}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1518
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1519
void CMsvServerSession::NotifyChangedL(TMsvNotifBuffer& aChange, TBool aQueue)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1520
//
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1521
// This session is being informed that a change has occured
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1522
// Will only leave if a write to a client fails
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1523
//
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1524
	{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1525
	// queue the change in FIFO buffer
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1526
	iChangeBuffer->InL(aChange);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1527
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1528
#ifndef _NO_SERVER_LOGGING_
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1529
	iMsvServer.Log(_L("Queued notification sequence %d"), iChangeBuffer->NotifySequence());
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1530
#endif
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1531
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1532
	// Only actually send the notification when we have a context
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1533
	if (iRequestQueued && !aQueue &&  iQueuedMessage.Handle())
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1534
		{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1535
		// inform client of change
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1536
		SendNotificationL(iQueuedMessage);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1537
		iRequestQueued = EFalse;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1538
		}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1539
	}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1540
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1541
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1542
TBool CMsvServerSession::IsInUse(TUid aMtmTypeUid)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1543
	{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1544
	TBool isinuse=EFalse;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1545
	TInt index=0;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1546
	TInt count=iMtmGroupRefCountArray.Count();
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1547
	for (; (index<count) && !isinuse; index++)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1548
		if (iMtmGroupRefCountArray[index].iMtmTypeUid==aMtmTypeUid)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1549
			isinuse=ETrue;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1550
	return isinuse;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1551
	}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1552
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1553
void CMsvServerSession::CancelOperationL(const RMessage2 &aMessage)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1554
//
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1555
// Cancels an operation
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1556
//
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1557
	{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1558
	TMsvOp op = aMessage.Int0();
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1559
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1560
	TInt error=KErrNotFound;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1561
	for (TInt count=0; count<iOperations.Count(); count++)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1562
		{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1563
		if (iOperations.At(count)->Id()==op)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1564
			{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1565
			error=KErrNone;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1566
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1567
			iOperations.At(count)->Cancel();
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1568
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1569
			if (iOperations.At(count)->State()!=EMsvOperationQueued)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1570
				{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1571
				TPtrC8 desPtr = iOperations.At(count)->Progress();
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1572
				if (desPtr.Length() > KMsvProgressBufferLength)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1573
					{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1574
					PanicClient(aMessage, EMsvProgressBufferExceeds256);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1575
					error = KErrOverflow;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1576
					}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1577
				else
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1578
					{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1579
					WriteL(aMessage, 1, desPtr);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1580
					error = desPtr.Length();
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1581
					}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1582
				}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1583
			else
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1584
				{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1585
				error=KErrNotReady;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1586
				}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1587
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1588
			delete iOperations.At(count);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1589
			iOperations.Delete(count);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1590
			break;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1591
			}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1592
		}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1593
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1594
	aMessage.Complete(error);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1595
	}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1596
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1597
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1598
void CMsvServerSession::OperationCompletionL(const RMessage2 &aMessage)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1599
//
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1600
// Gets the final progress of an operation and deletes all objects
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1601
//
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1602
	{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1603
	TMsvOp op = aMessage.Int0();
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1604
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1605
	TInt error=KErrNotFound;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1606
	for (TInt count=0; count<iOperations.Count(); count++)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1607
		{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1608
		if (iOperations.At(count)->Id()==op)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1609
			{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1610
			__ASSERT_DEBUG(iOperations.At(count)->State() == EMsvOperationCompleted || iOperations.At(count)->State() == EMsvOperationFailed, PanicServer(EMsvOperationNotCompleted));
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1611
			if (iOperations.At(count)->State() == EMsvOperationFailed)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1612
				{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1613
				// there will be no progress available
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1614
				error=KErrNone;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1615
				}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1616
			else
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1617
				{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1618
				TPtrC8 desPtr = iOperations.At(count)->Progress();
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1619
				if (desPtr.Length() > KMsvProgressBufferLength)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1620
					{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1621
					PanicClient(aMessage, EMsvProgressBufferExceeds256);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1622
					error = KErrOverflow;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1623
					}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1624
				else
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1625
					{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1626
					WriteL(aMessage, 1, desPtr);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1627
					error = desPtr.Length();
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1628
					}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1629
				}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1630
			delete iOperations.At(count);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1631
			iOperations.Delete(count);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1632
			break;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1633
			}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1634
		}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1635
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1636
	aMessage.Complete(error);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1637
	}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1638
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1639
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1640
void CMsvServerSession::OperationProgressL(const RMessage2 &aMessage)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1641
//
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1642
// Gets the progress of an operation
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1643
//
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1644
	{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1645
	TMsvOp op = aMessage.Int0();
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1646
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1647
	TInt error=KErrNotFound;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1648
	for (TInt count=0; count<iOperations.Count(); count++)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1649
		{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1650
		if (iOperations.At(count)->Id()==op)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1651
			{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1652
			if (iOperations.At(count)->State() == EMsvOperationQueued)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1653
				{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1654
				// the operation has not started
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1655
				error = KErrNotReady;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1656
				}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1657
			else
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1658
				{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1659
				// get the progress from the running operation
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1660
				TPtrC8 desPtr = iOperations.At(count)->Progress();
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1661
				if (desPtr.Length() > KMsvProgressBufferLength)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1662
					{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1663
					PanicClient(aMessage, EMsvProgressBufferExceeds256);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1664
					error = KErrOverflow;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1665
					}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1666
				else
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1667
					{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1668
					WriteL(aMessage, 1, desPtr);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1669
					error = desPtr.Length();
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1670
					}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1671
				break;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1672
				}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1673
			}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1674
		}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1675
	aMessage.Complete(error);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1676
	}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1677
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1678
void CMsvServerSession::OperationSystemProgressL(const RMessage2 &aMessage)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1679
//
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1680
// Get the progress of a system operation
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1681
//
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1682
	{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1683
	TMsvOp op = aMessage.Int0();
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1684
	TInt error=KErrNotFound;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1685
	for (TInt count=0; count<iOperations.Count(); count++)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1686
		{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1687
		if (iOperations.At(count)->Id()==op)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1688
			{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1689
			if (iOperations.At(count)->State() == EMsvOperationQueued)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1690
				{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1691
				// the operation has not started
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1692
				error = KErrNotReady;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1693
				}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1694
			else
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1695
				{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1696
				// get the progress from the running operation
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1697
				TPckgBuf<TMsvSystemProgress> systemProgress;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1698
				error = iOperations.At(count)->SystemProgress(systemProgress());
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1699
				WriteL(aMessage, 1, systemProgress);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1700
				break;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1701
				}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1702
			}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1703
		}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1704
	aMessage.Complete(error);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1705
	}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1706
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1707
void CMsvServerSession::OperationMtmL(const RMessage2 &aMessage)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1708
//
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1709
// Returns the MTM which will perform the operation using the two entries
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1710
//
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1711
	{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1712
	// read the two ids
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1713
	TMsvId id1 = aMessage.Int0();
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1714
	TMsvId id2 = aMessage.Int1();
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1715
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1716
	// the uid to be writen back
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1717
	TPckgBuf<TUid> uid;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1718
	TPckgBuf<TMsvId> service;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1719
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1720
	// get the first entries
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1721
	TBool local1;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1722
	TMsvEntry* entry1=NULL;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1723
	User::LeaveIfError(iMsvServer.IndexAdapter().GetEntry(id1, entry1));
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1724
	User::LeaveIfError(iMsvServer.IndexAdapter().IsLocal(id1, local1));
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1725
	if (id1==id2)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1726
		{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1727
		// single entry either under local or a remote service
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1728
		if (local1)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1729
			{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1730
			uid() = KUidMsvLocalServiceMtm;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1731
			service() = KMsvLocalServiceIndexEntryId;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1732
			}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1733
		else
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1734
			{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1735
			uid() = entry1->iMtm;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1736
			service() = entry1->iServiceId;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1737
			}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1738
		}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1739
	else
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1740
		{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1741
		// get the second entry
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1742
		TBool local2;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1743
		TMsvEntry* entry2=NULL;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1744
		User::LeaveIfError(iMsvServer.IndexAdapter().GetEntry(id2, entry2));
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1745
		User::LeaveIfError(iMsvServer.IndexAdapter().IsLocal(id2, local2));
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1746
		// work out the responsible MTM
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1747
		if (local1 && local2)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1748
			{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1749
			// both entries under the local service
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1750
			uid() = KUidMsvLocalServiceMtm;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1751
			service() = KMsvLocalServiceIndexEntryId;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1752
			}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1753
		else if (entry1->iMtm == entry2->iMtm)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1754
			{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1755
			__ASSERT_DEBUG(entry1->iMtm!=KUidMsvLocalServiceMtm, PanicServer(EMsvOperationMtm3));
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1756
			// both entries use the same MTM
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1757
			uid() = entry1->iMtm;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1758
			service() = entry1->iServiceId;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1759
			}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1760
		else if (entry1->iMtm == KUidMsvLocalServiceMtm)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1761
			{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1762
			__ASSERT_DEBUG(entry2->iMtm!=KUidMsvLocalServiceMtm, PanicServer(EMsvOperationMtm1));
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1763
			// entry1 is a local entry - hence entry 2 must be MTM dependent
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1764
			uid() = entry2->iMtm;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1765
			service() = entry2->iServiceId;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1766
			}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1767
		else
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1768
			{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1769
#ifdef _DEBUG
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1770
			if (entry2->iMtm != KUidMsvLocalServiceMtm)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1771
				{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1772
				// Neither entry belongs to local mtm, check they have the same technology type
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1773
				__ASSERT_DEBUG(iMsvServer.Registry().TechnologyTypeUid(entry1->iMtm) == iMsvServer.Registry().TechnologyTypeUid(entry2->iMtm), PanicServer(EMsvOperationMtm2));
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1774
				}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1775
#endif
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1776
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1777
			// entry1 is not a local entry - assume entry 2 is local
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1778
			uid() = entry1->iMtm;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1779
			service() = entry1->iServiceId;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1780
			}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1781
		}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1782
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1783
	WriteL(aMessage, 2, uid);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1784
	WriteL(aMessage, 3, service);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1785
	aMessage.Complete(KErrNone);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1786
	}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1787
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1788
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1789
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1790
void CMsvServerSession::MoveEntriesL(const RMessage2 &aMessage)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1791
//
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1792
// Moving entries
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1793
//
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1794
	{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1795
	// Recover the operation data
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1796
	TMsvOp operationId = aMessage.Int0();
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1797
	HBufC8* opData = RecoverOperationData(operationId);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1798
	// Check for NULL data entry to be changed, must have been given incorrect id for argument.
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1799
	if(opData == NULL)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1800
		{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1801
		aMessage.Complete(KErrArgument);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1802
		return;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1803
		}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1804
	
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1805
	CleanupStack::PushL(opData);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1806
	// unpack the data
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1807
	TMsvPackedOperation packedOperation(opData);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1808
	CMsvEntrySelection* selection = new (ELeave) CMsvEntrySelection;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1809
	CleanupStack::PushL(selection);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1810
	TInt target, temp;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1811
	packedOperation.UnpackL(*selection, target, temp);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1812
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1813
	TInt count = selection->Count();
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1814
	if ( count == 0)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1815
		{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1816
		PanicClient(aMessage, EMsvNoEntriesInMoveSelection);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1817
		aMessage.Complete(KErrNotFound);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1818
		return;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1819
		}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1820
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1821
	// Find the first entry in the selection which exists
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1822
	TInt pos=-1;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1823
	TMsvId source = KMsvNullIndexEntryIdValue;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1824
	while (++pos<count)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1825
		{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1826
		TMsvEntry* entryPtr;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1827
		TInt error = KErrNone;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1828
		error = iMsvServer.IndexAdapter().GetEntry(selection->At(pos), entryPtr);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1829
		if( error == KErrNone )
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1830
			{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1831
			source = entryPtr->Parent();
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1832
			break;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1833
			}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1834
		}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1835
	if (pos==count)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1836
		pos = 0;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1837
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1838
	// Check if the target and source are local or remote
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1839
	TBool targetLocal=EFalse;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1840
	TBool sourceLocal=EFalse;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1841
	TBool hasCapability=EFalse;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1842
	// Police request - client must be able to move the entries.
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1843
#if (defined SYMBIAN_USER_PROMPT_SERVICE)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1844
	TRAPD(err, iMsvServer.PoliceMoveEntriesL(aMessage, *selection, target, source, targetLocal, sourceLocal, __PLATSEC_DIAGNOSTIC_STRING("Checked by CMsvServerSession::MoveEntriesL")));
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1845
	if(err == KErrNone)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1846
		{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1847
		hasCapability = ETrue;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1848
		}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1849
	else if((err != KErrNone) && (targetLocal && sourceLocal))
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1850
		{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1851
		User::LeaveIfError(err);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1852
		}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1853
#else
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1854
	iMsvServer.PoliceMoveEntriesL(aMessage, *selection, target, source, targetLocal, sourceLocal, __PLATSEC_DIAGNOSTIC_STRING("Checked by CMsvServerSession::MoveEntriesL"));
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1855
#endif
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1856
	
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1857
	// start the move for local or remote messages
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1858
	if (targetLocal && sourceLocal)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1859
		DoMoveLocalEntriesL(selection, target, operationId, aMessage);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1860
	else
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1861
		DoMoveRemoteEntriesL(selection, target, operationId, aMessage, sourceLocal, targetLocal, hasCapability);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1862
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1863
	CleanupStack::PopAndDestroy(); // opData
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1864
	}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1865
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1866
void CMsvServerSession::DoMoveLocalEntriesL(CMsvEntrySelection*& aSelection, TMsvId aTarget, TMsvOp aOpId, const RMessage2 &aMessage)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1867
//
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1868
// NOTE aSelection is the top item on the cleanupstack when the function is called
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1869
//
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1870
	{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1871
	CMsvLocalMoveOperation* operation = new(ELeave) CMsvLocalMoveOperation(aMessage, aOpId, aSelection, aTarget, iMsvServer);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1872
	CleanupStack::Pop(); // selection
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1873
	CleanupStack::PushL(operation);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1874
	operation->StartL();
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1875
	iOperations.AppendL(operation);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1876
	CleanupStack::Pop(); // operation
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1877
	}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1878
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1879
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1880
void CMsvServerSession::DoMoveRemoteEntriesL(CMsvEntrySelection*& aSelection, TMsvId aTarget, TMsvOp aOpId, const RMessage2 &aMessage, TBool aSourceLocal, TBool aTargetLocal, TBool aHasCapability)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1881
//
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1882
// NOTE aSelection is the top item on the cleanupstack when the function is called
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1883
//
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1884
	{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1885
	// make sure that the operation can be added to the list
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1886
	iOperations.SetReserveL(iOperations.Count()+1);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1887
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1888
	TMsvEntry* entry=NULL;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1889
	if (!aTargetLocal)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1890
		{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1891
		User::LeaveIfError(iMsvServer.IndexAdapter().GetEntry(aTarget, entry));
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1892
		}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1893
	else
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1894
		{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1895
		User::LeaveIfError(iMsvServer.IndexAdapter().GetEntry(aSelection->At(0), entry));
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1896
		}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1897
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1898
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1899
	// create the operation
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1900
	CMsvMtmOperation* operation = CMsvMtmOperation::NewL(aMessage, aOpId, entry->iMtm, entry->iServiceId, iSessionId, iMsvServer);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1901
	CleanupStack::Pop();
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1902
	CleanupStack::PushL(operation);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1903
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1904
	// set up the operation type and pass the data
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1905
	if (!(aSourceLocal || aTargetLocal))
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1906
		operation->MoveWithinService(aSelection, aTarget);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1907
	else if (aSourceLocal)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1908
		operation->MoveFromLocal(aSelection, aTarget);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1909
	else
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1910
		operation->MoveToLocal(aSelection, aTarget);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1911
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1912
	// either start the operation or queue it
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1913
	iMsvServer.StartOperationL(*operation, iSessionId, aMessage, aHasCapability);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1914
	iOperations.AppendL(operation); // will not fail - see start of function
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1915
	CleanupStack::Pop(); // operation
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1916
	}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1917
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1918
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1919
void CMsvServerSession::CopyEntriesL(const RMessage2 &aMessage)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1920
//
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1921
// Moving entries
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1922
//
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1923
	{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1924
	// Recover the operation data
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1925
	TMsvOp operationId = aMessage.Int0();
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1926
	HBufC8* opData = RecoverOperationData(operationId);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1927
	// Check for NULL data entry to be changed, must have been given incorrect id for argument.
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1928
	if(opData == NULL)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1929
		{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1930
		aMessage.Complete(KErrArgument);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1931
		return;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1932
		}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1933
	
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1934
	CleanupStack::PushL(opData);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1935
	// unpack the data
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1936
	TMsvPackedOperation packedOperation(opData);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1937
	CMsvEntrySelection* selection = new (ELeave) CMsvEntrySelection;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1938
	CleanupStack::PushL(selection);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1939
	TInt target,temp;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1940
	packedOperation.UnpackL(*selection, target, temp);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1941
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1942
	if (selection->Count() == 0)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1943
		{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1944
		PanicClient(aMessage, EMsvNoEntriesInCopySelection);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1945
		aMessage.Complete(KErrNotFound);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1946
		return;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1947
		}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1948
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1949
	// Find the first entry in the selection which exists
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1950
	TInt pos=-1;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1951
	TInt count=selection->Count();
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1952
	while (++pos<count)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1953
		{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1954
		TBool entryExsists = EFalse;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1955
		entryExsists = iMsvServer.IndexAdapter().EntryExists(selection->At(pos));
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1956
		if (entryExsists)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1957
			break;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1958
		}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1959
	if (pos==count)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1960
		pos = 0;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1961
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1962
	// Check if the target and source are local or remote
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1963
	TBool targetLocal=EFalse;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1964
	TBool sourceLocal=EFalse;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1965
	TBool hasCapability = EFalse;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1966
#if (defined SYMBIAN_USER_PROMPT_SERVICE)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1967
	// Police request - client must be able to copy the entries.
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1968
	TRAPD(err, iMsvServer.PoliceCopyEntriesL(aMessage, *selection, target, targetLocal, __PLATSEC_DIAGNOSTIC_STRING("Checked by CMsvServerSession::CopyEntriesL")));
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1969
	
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1970
	if(err == KErrNone)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1971
		{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1972
		hasCapability = ETrue;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1973
		}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1974
#else
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1975
	iMsvServer.PoliceCopyEntriesL(aMessage, *selection, target, targetLocal, __PLATSEC_DIAGNOSTIC_STRING("Checked by CMsvServerSession::CopyEntriesL"));
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1976
#endif
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1977
	TInt error = KErrNone;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1978
	// what happens about the rest? Inconsistent behaviour
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1979
	error = iMsvServer.IndexAdapter().IsLocal(selection->At(pos), sourceLocal);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1980
	
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1981
#if (defined SYMBIAN_USER_PROMPT_SERVICE)   
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1982
	if((err != KErrNone) && (targetLocal && sourceLocal))
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1983
		{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1984
		User::LeaveIfError(err);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1985
		}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1986
#endif
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1987
		
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1988
	if (error)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1989
		{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1990
		CleanupStack::PopAndDestroy(2); // selection & opData
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1991
		aMessage.Complete(error);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1992
		return;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1993
		}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1994
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1995
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1996
	// start the move for local or remote messages
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1997
	if (targetLocal && sourceLocal)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1998
		DoCopyLocalEntriesL(selection, target, operationId, aMessage);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1999
	else
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2000
		DoCopyRemoteEntriesL(selection, target, operationId, aMessage, sourceLocal, targetLocal, hasCapability);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2001
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2002
	CleanupStack::PopAndDestroy(); // opData
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2003
	}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2004
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2005
void CMsvServerSession::DoCopyLocalEntriesL(CMsvEntrySelection*& aSelection, TMsvId aTarget, TMsvOp aOpId, const RMessage2 &aMessage)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2006
//
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2007
// NOTE aSelection is the top item on the cleanupstack when the function is called
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2008
//
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2009
	{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2010
	CMsvLocalCopyOperation* operation = new(ELeave) CMsvLocalCopyOperation(aMessage, aOpId, aSelection, aTarget, iMsvServer);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2011
	CleanupStack::Pop(); // selection
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2012
	CleanupStack::PushL(operation);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2013
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2014
	operation->StartL();
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2015
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2016
	iOperations.AppendL(operation);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2017
	CleanupStack::Pop(); // operation
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2018
	}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2019
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2020
void CMsvServerSession::DoCopyRemoteEntriesL(CMsvEntrySelection*& aSelection, TMsvId aTarget, TMsvOp aOpId, const RMessage2 &aMessage, TBool aSourceLocal, TBool aTargetLocal, TBool aHasCapability)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2021
//
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2022
// NOTE aSelection is the top item on the cleanupstack when the function is called
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2023
//
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2024
	{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2025
	// make sure that the operation can be added to the list
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2026
	iOperations.SetReserveL(iOperations.Count()+1);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2027
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2028
	TMsvEntry* entry=NULL;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2029
	if (!aTargetLocal)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2030
		{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2031
		User::LeaveIfError(iMsvServer.IndexAdapter().GetEntry(aTarget, entry));
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2032
		}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2033
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2034
	else
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2035
		{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2036
		User::LeaveIfError(iMsvServer.IndexAdapter().GetEntry(aSelection->At(0), entry));
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2037
		}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2038
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2039
	// create the operation
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2040
	CMsvMtmOperation* operation = CMsvMtmOperation::NewL(aMessage, aOpId, entry->iMtm, entry->iServiceId, iSessionId, iMsvServer);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2041
	CleanupStack::Pop(); // aSelection
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2042
	CleanupStack::PushL(operation);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2043
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2044
	// set up the operation type and pass the data
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2045
	if (!(aSourceLocal || aTargetLocal))
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2046
		operation->CopyWithinService(aSelection, aTarget);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2047
	else if (aSourceLocal)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2048
		operation->CopyFromLocal(aSelection, aTarget);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2049
	else
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2050
		operation->CopyToLocal(aSelection, aTarget);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2051
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2052
	// either start the operation or queue it
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2053
	iMsvServer.StartOperationL(*operation, iSessionId, aMessage, aHasCapability);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2054
	iOperations.AppendL(operation); // will not fail - see start of function
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2055
	CleanupStack::Pop(); // operation
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2056
	}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2057
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2058
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2059
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2060
void CMsvServerSession::TransferCommandL(const RMessage2 &aMessage)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2061
//
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2062
//
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2063
//
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2064
	{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2065
	// Recover the operation data and parameter
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2066
	TMsvOp operationId = aMessage.Int0();
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2067
	HBufC8* opData = RecoverOperationData(operationId);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2068
	// Check for NULL data entry to be changed, must have been given incorrect id for argument.
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2069
	if(opData == NULL)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2070
		{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2071
		aMessage.Complete(KErrArgument);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2072
		return;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2073
		}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2074
	
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2075
	HBufC8* opParam = RecoverOperationData(operationId);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2076
	// Check for NULL data entry to be changed, must have been given incorrect id for argument.
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2077
	if(opParam == NULL)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2078
		{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2079
		delete opData;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2080
		aMessage.Complete(KErrArgument);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2081
		return;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2082
		}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2083
	
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2084
	CleanupStack::PushL(opData);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2085
	CleanupStack::PushL(opParam);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2086
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2087
	// Unpack the data
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2088
	TMsvPackedOperation packedOperation(opData);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2089
	CMsvEntrySelection* selection = new (ELeave) CMsvEntrySelection;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2090
	CleanupStack::PushL(selection);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2091
	TInt command, temp;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2092
	packedOperation.UnpackL(*selection, command, temp);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2093
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2094
	// make sure that the operation can be added to the list
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2095
	iOperations.SetReserveL(iOperations.Count()+1);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2096
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2097
	// find the first entry being acted on
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2098
	TMsvEntry* entry=NULL;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2099
	User::LeaveIfError(iMsvServer.IndexAdapter().GetEntry(selection->At(0), entry));
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2100
	TBool hasCapability = EFalse;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2101
	// Police request - client must be able to access the MTM functionality.
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2102
#if (defined SYMBIAN_USER_PROMPT_SERVICE)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2103
	TRAPD(err, iMsvServer.PoliceMtmTransferCommandL(aMessage, entry->iMtm, __PLATSEC_DIAGNOSTIC_STRING("Checked by CMsvServerSession::TransferCommandL")));
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2104
	
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2105
	if(err == KErrNone)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2106
		{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2107
		hasCapability = ETrue;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2108
		}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2109
	else if(err != KErrPermissionDenied)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2110
		{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2111
		User::LeaveIfError(err);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2112
		}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2113
#else
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2114
	iMsvServer.PoliceMtmTransferCommandL(aMessage, entry->iMtm, __PLATSEC_DIAGNOSTIC_STRING("Checked by CMsvServerSession::TransferCommandL"));
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2115
#endif
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2116
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2117
	// create the operation
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2118
	CMsvMtmOperation* operation = CMsvMtmOperation::NewL(aMessage, operationId, entry->iMtm, entry->iServiceId, iSessionId, iMsvServer);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2119
	CleanupStack::Pop(); // selection
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2120
	CleanupStack::Pop(); // opParam
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2121
	CleanupStack::PushL(operation);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2122
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2123
	// set up the operation type and pass the data
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2124
	operation->StartCommand(selection, command, opParam);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2125
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2126
	// either start the operation or queue it
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2127
	iMsvServer.StartOperationL(*operation, iSessionId, aMessage, hasCapability);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2128
	iOperations.AppendL(operation); // will not fail - see start of function
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2129
	CleanupStack::Pop(); // operation
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2130
	CleanupStack::PopAndDestroy(); // opParam
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2131
	}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2132
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2133
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2134
void CMsvServerSession::FillRegisteredMtmDllArray(const RMessage2 &aMessage)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2135
	{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2136
	TRAPD(error,DoFillRegisteredMtmDllArrayL(aMessage));
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2137
	aMessage.Complete(error);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2138
	}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2139
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2140
void CMsvServerSession::DoFillRegisteredMtmDllArrayL(const RMessage2 &aMessage)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2141
	{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2142
	CRegisteredMtmDllArray* registeredMtmDllArray = new(ELeave) CRegisteredMtmDllArray;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2143
	CleanupStack::PushL(registeredMtmDllArray);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2144
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2145
	TUid mtmdlltypeuid = {aMessage.Int0()};
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2146
	TInt error=iMsvServer.FillRegisteredMtmDllArray(mtmdlltypeuid,*registeredMtmDllArray);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2147
	User::LeaveIfError(error);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2148
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2149
	TPtr8 bufferPtr = iBuffer->Des();
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2150
	bufferPtr.Zero();
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2151
	RDesWriteStream writeStream(bufferPtr);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2152
	TMsvPackedRegisteredMtmDllArray::PackRegisteredMtmDllArrayL(writeStream, *registeredMtmDllArray);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2153
	writeStream.CommitL();
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2154
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2155
	WriteBufferL(aMessage, 1);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2156
	CleanupStack::PopAndDestroy(); // registeredMtmDllArray
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2157
	}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2158
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2159
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2160
void CMsvServerSession::MtmGroupL(const RMessage2 &aMessage, TBool aInstall)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2161
	{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2162
	TFullName fullname;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2163
	TInt  desLen = aMessage.GetDesLengthL(0);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2164
	fullname.SetLength(desLen);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2165
	TInt error = aMessage.Read(0,fullname);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2166
	if (error)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2167
		{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2168
		PanicClient(aMessage, EMsvBadDescriptorRead);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2169
		User::Leave(error);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2170
		}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2171
	TUid mtmtypeuid=KNullUid;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2172
	if (aInstall)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2173
		{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2174
		User::LeaveIfError(iMsvServer.InstallMtmGroup(fullname,mtmtypeuid));
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2175
		iMsvServer.NotifyChanged(EMsvMtmGroupInstalled,mtmtypeuid);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2176
		}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2177
	else
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2178
		{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2179
		User::LeaveIfError(iMsvServer.DeInstallMtmGroup(fullname,mtmtypeuid));
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2180
		iMsvServer.NotifyChanged(EMsvMtmGroupDeInstalled,mtmtypeuid);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2181
		}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2182
	aMessage.Complete(KErrNone);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2183
	}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2184
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2185
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2186
void CMsvServerSession::UseMtmGroup(const RMessage2 &aMessage)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2187
	{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2188
	TUid mtmtypeuid = {aMessage.Int0()};
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2189
	TInt index=0;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2190
	TInt count=iMtmGroupRefCountArray.Count();
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2191
	for (; (index<count) && (mtmtypeuid!=iMtmGroupRefCountArray[index].iMtmTypeUid); index++)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2192
		{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2193
		}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2194
	TInt error=KErrNone;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2195
	if (index==count)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2196
		{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2197
		TMtmGroupRefCount mtmgrouprefcount(mtmtypeuid);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2198
		TRAP(error,iMtmGroupRefCountArray.AppendL(mtmgrouprefcount));
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2199
		}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2200
	if (error==KErrNone)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2201
		iMtmGroupRefCountArray[index].iRefCount++;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2202
	aMessage.Complete(error);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2203
	}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2204
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2205
void CMsvServerSession::ReleaseMtmGroup(const RMessage2 &aMessage)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2206
	{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2207
	TUid mtmtypeuid = {aMessage.Int0()};
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2208
	TInt index=0;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2209
	TInt count=iMtmGroupRefCountArray.Count();
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2210
	for (; (index<count) && (mtmtypeuid!=iMtmGroupRefCountArray[index].iMtmTypeUid); index++)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2211
		{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2212
		}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2213
	TInt error=KErrNone;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2214
	if (index==count)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2215
		error=KErrNotFound;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2216
	else
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2217
		{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2218
		iMtmGroupRefCountArray[index].iRefCount--;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2219
		if (iMtmGroupRefCountArray[index].iRefCount==0)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2220
			iMtmGroupRefCountArray.Delete(index);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2221
		}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2222
	aMessage.Complete(error);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2223
	}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2224
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2225
void CMsvServerSession::GetMtmGroupDataL(const RMessage2 &aMessage)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2226
	{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2227
	TUid mtmtypeuid = {aMessage.Int0()};
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2228
	CMtmGroupData* mtmgroupdata=iMsvServer.GetMtmGroupDataL(mtmtypeuid);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2229
	CleanupStack::PushL(mtmgroupdata);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2230
	TPtr8 bufferPtr = iBuffer->Des();
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2231
	bufferPtr.Zero();
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2232
	RDesWriteStream writeStream(bufferPtr);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2233
	writeStream << *mtmgroupdata;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2234
	writeStream.CommitL();
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2235
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2236
	WriteBufferL(aMessage, 1);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2237
	CleanupStack::PopAndDestroy();
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2238
	aMessage.Complete(KErrNone);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2239
	}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2240
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2241
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2242
void CMsvServerSession::GetMtmRequiredCapabilitiesL(const RMessage2& aMessage)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2243
	{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2244
	TUid mtmTypeUid = TUid::Uid(aMessage.Int0());
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2245
	TCapabilitySet mtmRequiredCaps;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2246
	iMsvServer.GetMtmRequiredCapabilitiesL(mtmTypeUid,mtmRequiredCaps);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2247
	TPtr8 ptr = iBuffer->Des();
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2248
	ptr.Zero();
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2249
	RDesWriteStream writeStream(ptr);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2250
	MsvSecurityCapabilitySetUtils::ExternalizeL(writeStream,mtmRequiredCaps);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2251
	writeStream.CommitL();
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2252
	WriteBufferL(aMessage, 1);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2253
	aMessage.Complete(KErrNone);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2254
	}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2255
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2256
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2257
void CMsvServerSession::PanicClient(const RMessage2& aMessage, TMsvClientPanic aPanic) const
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2258
//
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2259
// Panic the client
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2260
//
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2261
	{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2262
	aMessage.Panic(KMsvClientPanicString, aPanic);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2263
	}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2264
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2265
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2266
void CMsvServerSession::StopOperations(TMsvId aServiceId)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2267
//
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2268
// Cancels all operations which use the service (the service is being stopped)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2269
//
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2270
	{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2271
	TInt count=iOperations.Count();
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2272
	while (count--)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2273
		{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2274
		if (iOperations.At(count)->ServiceId() == aServiceId)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2275
			{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2276
			delete iOperations.At(count);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2277
			iOperations.Delete(count);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2278
			}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2279
		}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2280
	}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2281
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2282
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2283
void CMsvServerSession::ServiceProgressL(const RMessage2 &aMessage)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2284
//
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2285
// Returns the progress from the server MTM
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2286
//
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2287
	{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2288
	TPtrC8 desPtr = iMsvServer.ServiceProgressL(aMessage.Int0());
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2289
	TInt desLength = aMessage.GetDesMaxLength(1);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2290
	if (desLength < desPtr.Length())
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2291
		aMessage.Complete(KErrOverflow);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2292
	else
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2293
		{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2294
		WriteL(aMessage, 1, desPtr);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2295
		aMessage.Complete(desPtr.Length());
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2296
		}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2297
	}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2298
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2299
void CMsvServerSession::RemoveEntry(const RMessage2& aMessage)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2300
//
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2301
// Removes the entry from the index. Client not interested in result.
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2302
//
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2303
	{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2304
	TMsvId id = aMessage.Int0();
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2305
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2306
	TBool local;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2307
	// Police request - client must be able to modify the entry.
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2308
	TRAPD(error, iMsvServer.PoliceModifyEntryL(aMessage, id, local, __PLATSEC_DIAGNOSTIC_STRING("Checked by CMsvServerSession::RemoveEntry")));
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2309
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2310
	if( error == KErrPermissionDenied )
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2311
		{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2312
		// The request was denied - complete with this error code.
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2313
		aMessage.Complete(KErrPermissionDenied);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2314
		return;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2315
		}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2316
	else if( error == KErrNone )
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2317
		{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2318
		if (local)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2319
			iMsvServer.RemoveEntry(id);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2320
		else
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2321
			{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2322
			TMsvId service;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2323
			iMsvServer.IndexAdapter().OwningService(id, service); // error ignored
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2324
			if (service==id)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2325
				iMsvServer.RemoveEntry(id);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2326
			else
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2327
				PanicClient(aMessage, EMsvRemovingNonLocalEntry);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2328
			}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2329
		}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2330
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2331
	aMessage.Complete(KErrNone);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2332
	}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2333
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2334
void CMsvServerSession::MessageFolderL(const RMessage2 &aMessage)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2335
//
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2336
//
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2337
//
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2338
	{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2339
	aMessage.WriteL(0, iMsvServer.Context().MessageFolder());
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2340
	aMessage.Complete(KErrNone);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2341
	}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2342
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2343
void CMsvServerSession::ChangeAttributesL(const RMessage2& aMessage)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2344
//
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2345
//
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2346
//
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2347
	{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2348
	HBufC8* buffer = NULL;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2349
	ReadBufferL(aMessage, 0, buffer);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2350
	CleanupStack::PushL(buffer);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2351
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2352
	TMsvPackedOperation packedOperation(buffer);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2353
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2354
	CMsvEntrySelection* selection = new (ELeave) CMsvEntrySelection;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2355
	CleanupStack::PushL(selection);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2356
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2357
	TInt setAttributes, clearAttributes;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2358
	packedOperation.UnpackL(*selection, setAttributes, clearAttributes);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2359
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2360
	if (selection->Count() == 0)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2361
		{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2362
		PanicClient(aMessage, EMsvNoEntriesInChangeAttributesSelection);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2363
		aMessage.Complete(KErrNotFound);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2364
		return;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2365
		}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2366
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2367
	// get a copy of the selection
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2368
	CMsvEntrySelection* changedEntries = selection->CopyL();
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2369
	CleanupStack::PushL(changedEntries);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2370
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2371
	// create a selection for the later notification
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2372
	CMsvEntrySelection* notify = new(ELeave)CMsvEntrySelection;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2373
	CleanupStack::PushL(notify);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2374
	notify->SetReserveL(selection->Count());
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2375
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2376
	TInt error = KErrNone;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2377
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2378
	// lock all the selection
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2379
	TInt count1 = selection->Count();
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2380
	while (count1--)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2381
		{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2382
		error = iMsvServer.IndexAdapter().LockEntry(selection->At(count1));
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2383
		if (error)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2384
			break;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2385
		}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2386
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2387
	// change the attributes if all were locked
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2388
	if (error == KErrNone)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2389
		{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2390
		error = iMsvServer.IndexAdapter().ChangeAttributes(*changedEntries, setAttributes, clearAttributes);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2391
		}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2392
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2393
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2394
	// release all that were locked
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2395
	TInt count2 = selection->Count();
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2396
	while (--count2 > count1)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2397
		{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2398
		iMsvServer.IndexAdapter().ReleaseEntry(selection->At(count2));
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2399
		}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2400
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2401
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2402
	if (error == KErrNone)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2403
		{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2404
		// Note: Code in the following loop shouldn't leave
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2405
		while(changedEntries->Count())
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2406
			{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2407
			TMsvId id = changedEntries->At(0);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2408
			changedEntries->Delete(0);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2409
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2410
			// Get the index entry associated with this entry - Shouldn't fail
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2411
		
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2412
			TInt err = KErrNone;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2413
			CMsvCacheEntry* entry = NULL;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2414
			err = iMsvServer.IndexAdapter().GetInternalEntry(id, entry);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2415
			if (err != KErrNone)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2416
				continue;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2417
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2418
			// Get the parent of this entry. It will be notified that its children have changed
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2419
			TMsvId parent = entry->Entry().Parent();
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2420
			notify->AppendL(id);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2421
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2422
			// Find other entries that have the same parent
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2423
			TInt count = changedEntries->Count();
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2424
			while(count--)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2425
				{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2426
				iMsvServer.IndexAdapter().GetInternalEntry(changedEntries->At(count), entry);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2427
				if (entry && entry->Entry().Parent() == parent)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2428
					{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2429
					// Add entry to list - Shouldn't fail as we've already reserved space
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2430
					notify->AppendL(changedEntries->At(count));
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2431
					changedEntries->Delete(count);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2432
					}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2433
				}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2434
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2435
			// Do the notification
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2436
			iMsvServer.NotifyChanged(EMsvEntriesChanged, *notify, parent);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2437
			notify->Reset();
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2438
			}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2439
		}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2440
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2441
	aMessage.Complete(error);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2442
	CleanupStack::PopAndDestroy(4); // notify, changedEntries, selection, buffer
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2443
	}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2444
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2445
void CMsvServerSession::GetChildIdsL(const RMessage2& aMessage)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2446
	{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2447
	TMsvId id = aMessage.Int1();
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2448
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2449
#if (defined SYMBIAN_MSGS_ENHANCED_REMOVABLE_MEDIA_SUPPORT)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2450
	// Return error, if the passed parent-id 
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2451
	// is a non-current standard id.
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2452
	if( (IsStandardId(id)) &&
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2453
		(KCurrentDriveId != GetDriveId(id))
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2454
	  )
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2455
		{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2456
		aMessage.Complete(KErrArgument);		
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2457
		return;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2458
		}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2459
#endif
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2460
	
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2461
	CMsvEntrySelection* selection = new(ELeave)CMsvEntrySelection;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2462
	CleanupStack::PushL(selection);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2463
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2464
	HBufC8* buffer = NULL;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2465
	ReadBufferL(aMessage, 0, buffer);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2466
	CleanupStack::PushL(buffer);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2467
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2468
	CMsvEntryFilter* filter = CMsvEntryFilter::NewLC();
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2469
	TMsvPackedEntryFilter package(buffer);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2470
	package.UnpackFilter(*filter);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2471
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2472
	// Need to filter the list via the client secure ID if the client is not
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2473
	// trusted with Read User Data.
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2474
	TBool filterByOwnerId = !aMessage.HasCapability(ECapabilityReadUserData);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2475
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2476
	iMsvServer.IndexAdapter().GetChildrenId(id, *filter, *selection, filterByOwnerId, aMessage.SecureId());
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2477
	TMsvPackedOperation op(iBuffer);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2478
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2479
	TInt error = op.Pack(*selection, 0, 0);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2480
	while (error != KErrNone)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2481
		{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2482
		// increase the size of the buffer and try again
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2483
		iBuffer->Des().SetLength(0); // to avoid copying contents
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2484
		iBuffer = iBuffer->ReAllocL(iBuffer->Des().MaxSize() + KMsvSessionBufferLength);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2485
		error = op.Pack(*selection, 0, 0);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2486
		}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2487
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2488
	WriteBufferL(aMessage, 0);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2489
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2490
	aMessage.Complete(KErrNone);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2491
	CleanupStack::PopAndDestroy(3); // selection, buffer, filter
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2492
	}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2493
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2494
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2495
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2496
void CMsvServerSession::ChangeDriveL(const RMessage2 &aMessage)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2497
//
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2498
// Change the drive containing the Message Store
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2499
//
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2500
	{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2501
	// Not allowed to do this if operations are outstanding
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2502
	if (iMsvServer.OutstandingOperations() > 0)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2503
		User::Leave(KErrServerBusy);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2504
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2505
	// make sure that the operation can be added to the list
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2506
	iOperations.SetReserveL(iOperations.Count()+1);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2507
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2508
	// Start the operation
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2509
	CMsvChangeDriveOperation* operation = new(ELeave)CMsvChangeDriveOperation(aMessage, aMessage.Int0(), aMessage.Int1(), iMsvServer);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2510
	CleanupStack::PushL(operation);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2511
	User::LeaveIfError(operation->Start());
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2512
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2513
	iOperations.AppendL(operation);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2514
	CleanupStack::Pop(); // operation
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2515
	}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2516
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2517
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2518
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2519
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2520
void CMsvServerSession::CopyStoreL(const RMessage2 &aMessage)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2521
//
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2522
// Copy the Message Store to another location
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2523
//
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2524
	{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2525
	// Not allowed to do this if operations are outstanding
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2526
	if (iMsvServer.OutstandingOperations() > 0)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2527
		User::Leave(KErrServerBusy);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2528
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2529
	// make sure that the operation can be added to the list
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2530
	iOperations.SetReserveL(iOperations.Count()+1);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2531
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2532
	// Start the operation
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2533
	CMsvCopyStoreOperation* operation = CMsvCopyStoreOperation::NewL(aMessage, iMsvServer);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2534
	CleanupStack::PushL(operation);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2535
	operation->StartL();
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2536
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2537
	iOperations.AppendL(operation);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2538
	CleanupStack::Pop(); // operation
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2539
	}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2540
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2541
void CMsvServerSession::DeleteStoreL(const RMessage2 &aMessage)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2542
//
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2543
// Delete the Message Store from the specified location
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2544
//
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2545
	{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2546
	// Not allowed to do this if operations are outstanding
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2547
	if (iMsvServer.OutstandingOperations() > 0)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2548
		User::Leave(KErrServerBusy);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2549
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2550
	// make sure that the operation can be added to the list
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2551
	iOperations.SetReserveL(iOperations.Count()+1);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2552
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2553
	// Start the operation
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2554
	CMsvDeleteStoreOperation* operation = new(ELeave)CMsvDeleteStoreOperation(aMessage, iMsvServer);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2555
	CleanupStack::PushL(operation);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2556
	operation->StartL();
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2557
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2558
	iOperations.AppendL(operation);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2559
	CleanupStack::Pop(); // operation
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2560
	}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2561
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2562
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2563
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2564
void CMsvServerSession::SetReceiveEntryEvents(const RMessage2 &aMessage)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2565
//
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2566
// Request/UnRequest Entry Events
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2567
//
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2568
	{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2569
	iReceiveEntryEvents=aMessage.Int0();
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2570
	aMessage.Complete(KErrNone);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2571
	}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2572
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2573
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2574
void CMsvServerSession::CreateAttachmentForWriteL(const RMessage2 &aMessage)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2575
	{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2576
	// Get the Message Id from slot 0
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2577
	TMsvId msgId = aMessage.Int0();
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2578
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2579
	// Police request - client must be able to modify the entry.
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2580
	TBool local;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2581
	iMsvServer.PoliceModifyEntryL(aMessage, msgId, local, __PLATSEC_DIAGNOSTIC_STRING("Checked by CMsvServerSession::CreateAttachmentForWriteL"));
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2582
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2583
	if( local )
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2584
		{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2585
		// Update the owner ID of the entry. NOTE - doesn't matter if actually
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2586
		// attachment creation fails after this - safer that owner ID is updated
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2587
		// at very least.
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2588
		UpdateOwnerIdL(msgId, aMessage.SecureId());
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2589
		}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2590
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2591
	// Get the file name from slot 1
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2592
	TFileName fileName;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2593
	aMessage.ReadL(1, fileName);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2594
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2595
	RFs fs;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2596
	ConnectAndShareFileSessionLC(fs);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2597
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2598
	// Set the CMsvServer and file session
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2599
	TMsvServerStoreManager storemanager;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2600
	storemanager.SetMsvServerAndFileSession(iMsvServer,fs);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2601
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2602
	RFile file;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2603
	TBool fileNameChanged = storemanager.CreateAttachmentForWriteL(msgId, fileName, file);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2604
	CleanupClosePushL(file);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2605
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2606
	// Write the sub session handle (RFile) in slot 2
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2607
	TPckg<TInt> pckgSubSessionHandle(file.SubSessionHandle());
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2608
	aMessage.WriteL(2,pckgSubSessionHandle);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2609
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2610
	// Write the file changed status in slot 3
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2611
	TPckg<TBool> pckgFileNameChanged(fileNameChanged);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2612
	aMessage.WriteL(3,pckgFileNameChanged);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2613
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2614
	// Write back the file path to the client.
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2615
	TInt desLen = aMessage.GetDesMaxLength(1);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2616
	if( desLen < fileName.Length() )
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2617
		User::Leave(KErrOverflow);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2618
	aMessage.WriteL(1, fileName);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2619
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2620
	// Takes care of completing with session (RFs),
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2621
	// SendReceieve returns session handle at client side
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2622
	User::LeaveIfError(file.TransferToClient(aMessage,2));
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2623
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2624
	CleanupStack::PopAndDestroy(2, &fs); // fs , file
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2625
	}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2626
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2627
void CMsvServerSession::ReplaceAttachmentForWriteL(const RMessage2 &aMessage)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2628
	{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2629
	// Get the Message Id from slot 0
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2630
	TMsvId msgId = aMessage.Int0();
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2631
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2632
	// Police request - client must be able to modify the entry.
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2633
	iMsvServer.PoliceModifyEntryL(aMessage, msgId, __PLATSEC_DIAGNOSTIC_STRING("Checked by CMsvServerSession::ReplaceAttachmentForWriteL"));
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2634
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2635
	// Get the file name from slot 1
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2636
	TFileName fileName;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2637
	aMessage.ReadL(1, fileName);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2638
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2639
	RFs fs;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2640
	ConnectAndShareFileSessionLC(fs);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2641
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2642
	// Set the CMsvServer and file session
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2643
	TMsvServerStoreManager storemanager;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2644
	storemanager.SetMsvServerAndFileSession(iMsvServer,fs);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2645
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2646
	RFile file;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2647
	storemanager.ReplaceAttachmentForWriteL(msgId, fileName, file);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2648
	CleanupClosePushL(file);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2649
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2650
	// Write the sub session handle (RFile) in slot 2
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2651
	TPckg<TInt> pckgSubSessionHandle(file.SubSessionHandle());
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2652
	aMessage.WriteL(2,pckgSubSessionHandle);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2653
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2654
	// Write back the file path to the client.
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2655
	TInt desLen = aMessage.GetDesMaxLength(1);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2656
	if( desLen < fileName.Length() )
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2657
		User::Leave(KErrOverflow);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2658
	aMessage.WriteL(1, fileName);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2659
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2660
	// Takes care of completing with session (RFs),
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2661
	// SendReceieve returns session handle at client side
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2662
	User::LeaveIfError(file.TransferToClient(aMessage,2));
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2663
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2664
	CleanupStack::PopAndDestroy(2, &fs); // fs , file
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2665
	}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2666
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2667
void CMsvServerSession::OpenAttachmentL(const RMessage2 &aMessage)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2668
	{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2669
	// Get the Message Id from slot 0
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2670
	TMsvId msgId = aMessage.Int0();
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2671
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2672
	// Police request - client must be able to read the entry.
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2673
	iMsvServer.PoliceReadEntryL(aMessage, msgId, __PLATSEC_DIAGNOSTIC_STRING("Checked by CMsvServerSession::OpenAttachmentL"));
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2674
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2675
	// Get the file name from slot 1
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2676
	TFileName filePath;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2677
	aMessage.ReadL(1, filePath);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2678
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2679
	RFs fs;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2680
	ConnectAndShareFileSessionLC(fs);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2681
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2682
	// Set the CMsvServer and file session
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2683
	TMsvServerStoreManager storemanager;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2684
	storemanager.SetMsvServerAndFileSession(iMsvServer,fs);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2685
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2686
	RFile file;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2687
	storemanager.OpenAttachmentL(msgId, filePath, file);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2688
	CleanupClosePushL(file);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2689
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2690
	// Write the sub session handle (RFile) in slot 2
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2691
	TPckg<TInt> pckgSubSessionHandle(file.SubSessionHandle());
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2692
	aMessage.WriteL(2,pckgSubSessionHandle);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2693
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2694
	// Takes care of completing with session (RFs),
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2695
	// SendReceieve returns session handle at client side
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2696
	User::LeaveIfError(file.TransferToClient(aMessage,2));
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2697
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2698
	CleanupStack::PopAndDestroy(2,&fs); // fs, file
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2699
	}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2700
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2701
void CMsvServerSession::OpenAttachmentForWriteL(const RMessage2 &aMessage)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2702
	{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2703
	// Get the Message Id from slot 0
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2704
	TMsvId msgId = aMessage.Int0();
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2705
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2706
	// Police request - client must be able to read the entry.
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2707
	iMsvServer.PoliceModifyEntryL(aMessage, msgId, __PLATSEC_DIAGNOSTIC_STRING("Checked by CMsvServerSession::OpenAttachmentForWriteL"));
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2708
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2709
	// Get the file name from slot 1
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2710
	TFileName filePath;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2711
	aMessage.ReadL(1, filePath);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2712
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2713
	RFs fs;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2714
	ConnectAndShareFileSessionLC(fs);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2715
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2716
	// Set the CMsvServer and file session
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2717
	TMsvServerStoreManager storemanager;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2718
	storemanager.SetMsvServerAndFileSession(iMsvServer,fs);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2719
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2720
	RFile file;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2721
	storemanager.OpenAttachmentForWriteL(msgId, filePath, file);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2722
	CleanupClosePushL(file);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2723
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2724
	// Write the sub session handle (RFile) in slot 2
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2725
	TPckg<TInt> pckgSubSessionHandle(file.SubSessionHandle());
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2726
	aMessage.WriteL(2,pckgSubSessionHandle);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2727
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2728
	// Takes care of completing with session (RFs),
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2729
	// SendReceieve returns session handle at client side
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2730
	User::LeaveIfError(file.TransferToClient(aMessage,2));
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2731
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2732
	CleanupStack::PopAndDestroy(2,&fs); // fs, file
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2733
	}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2734
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2735
void CMsvServerSession::DeleteAttachmentL(const RMessage2 &aMessage)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2736
	{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2737
	// Get the Message Id from slot 0
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2738
	TMsvId msgId = aMessage.Int0();
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2739
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2740
	// Police request - client must be able to modify the entry.
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2741
	iMsvServer.PoliceModifyEntryL(aMessage, msgId, __PLATSEC_DIAGNOSTIC_STRING("Checked by CMsvServerSession::DeleteAttachmentL"));
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2742
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2743
	// Get the file name from slot 1
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2744
	TFileName filePath;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2745
	aMessage.ReadL(1, filePath);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2746
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2747
	// Set the CMsvServer and file session
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2748
	TMsvServerStoreManager storemanager;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2749
	storemanager.SetMsvServerAndFileSession(iMsvServer,iMsvServer.FileSession());
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2750
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2751
	TInt error = storemanager.DeleteAttachment(msgId, filePath);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2752
	aMessage.Complete(error);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2753
	}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2754
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2755
void CMsvServerSession::RenameAttachmentL(const RMessage2 &aMessage)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2756
	{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2757
	// Get the Message Id from slot 0
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2758
	TMsvId msgId = aMessage.Int0();
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2759
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2760
	// Police request - client must be able to modify the entry.
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2761
	iMsvServer.PoliceModifyEntryL(aMessage, msgId, __PLATSEC_DIAGNOSTIC_STRING("Checked by CMsvServerSession::RenameAttachmentL"));
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2762
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2763
	// Get the old file name from slot 1
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2764
	TFileName oldFileName;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2765
	aMessage.ReadL(1, oldFileName);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2766
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2767
	// Get the new file name from slot 2
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2768
	TFileName newFileName;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2769
	aMessage.ReadL(2, newFileName);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2770
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2771
	// Set the CMsvServer and file session
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2772
	TMsvServerStoreManager storemanager;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2773
	storemanager.SetMsvServerAndFileSession(iMsvServer,iMsvServer.FileSession());
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2774
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2775
	TInt error = storemanager.RenameAttachment(msgId, oldFileName, newFileName);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2776
	aMessage.Complete(error);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2777
	}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2778
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2779
void CMsvServerSession::FileExistsL(const RMessage2 &aMessage)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2780
	{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2781
	// Get the file name from slot 10
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2782
	TFileName filePath;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2783
	aMessage.ReadL(0, filePath);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2784
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2785
	// Set the CMsvServer and file session
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2786
	TMsvServerStoreManager storemanager;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2787
	storemanager.SetMsvServerAndFileSession(iMsvServer, iMsvServer.FileSession());
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2788
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2789
	TInt err = KErrNotFound;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2790
	if( storemanager.FileExistsL(filePath) )
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2791
		{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2792
		err = KErrNone;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2793
		}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2794
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2795
	aMessage.Complete(err);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2796
	}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2797
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2798
void CMsvServerSession::GetAttachmentFilePathL(const RMessage2& aMessage)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2799
	{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2800
	// Get the Message Id from slot 0
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2801
	TMsvId msgId = aMessage.Int0();
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2802
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2803
	// Get the file path buffer from slot 1
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2804
	TFileName filePath;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2805
	aMessage.ReadL(1, filePath);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2806
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2807
	// Set the CMsvServer and file session
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2808
	TMsvServerStoreManager storeManager;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2809
	storeManager.SetMsvServerAndFileSession(iMsvServer,iMsvServer.FileSession());
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2810
	storeManager.AttachmentFilePathL(msgId, filePath);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2811
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2812
	// Write the attachment file path back to slot 1
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2813
	TInt desLen = aMessage.GetDesMaxLength(1);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2814
	if( desLen < filePath.Length() )
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2815
		{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2816
		User::Leave(KErrOverflow);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2817
		}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2818
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2819
	aMessage.WriteL(1, filePath);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2820
	aMessage.Complete(KErrNone);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2821
	}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2822
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2823
void CMsvServerSession::OpenFileStoreForReadL(const RMessage2 &aMessage)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2824
	{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2825
	// Get the Message Id from slot 0
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2826
	TMsvId msgId = aMessage.Int0();
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2827
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2828
	// Police request - client must be able to read the entry.
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2829
	iMsvServer.PoliceReadEntryL(aMessage, msgId, __PLATSEC_DIAGNOSTIC_STRING("Checked by CMsvServerSession::OpenFileStoreForReadL"));
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2830
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2831
	RFs fs;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2832
	ConnectAndShareFileSessionLC(fs);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2833
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2834
	// Set the CMsvServer and file session
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2835
	TMsvServerStoreManager storemanager;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2836
	storemanager.SetMsvServerAndFileSession(iMsvServer,fs);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2837
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2838
	RFile file;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2839
	User::LeaveIfError( storemanager.OpenFileStoreForRead(msgId,file));
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2840
	CleanupClosePushL(file);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2841
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2842
	// Write the sub session handle (RFile) in slot 1
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2843
	TPckg<TInt> pckgSubSessionHandle(file.SubSessionHandle());
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2844
	aMessage.WriteL(1,pckgSubSessionHandle);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2845
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2846
	// Takes care of completing with session (RFs),
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2847
	// SendReceieve returns session handle at client side
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2848
	User::LeaveIfError(file.TransferToClient(aMessage,1));
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2849
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2850
	CleanupStack::PopAndDestroy(2,&fs); // fs, file
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2851
	}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2852
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2853
void CMsvServerSession::OpenTempStoreFileL(const RMessage2 &aMessage)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2854
	{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2855
	// Get the Message Id from slot 0
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2856
	TMsvId msgId = aMessage.Int0();
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2857
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2858
	// Police request - client must be able to modify the entry.
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2859
	iMsvServer.PoliceModifyEntryL(aMessage, msgId, __PLATSEC_DIAGNOSTIC_STRING("Checked by CMsvServerSession::OpenTempStoreFileL"));
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2860
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2861
	RFs fs;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2862
	ConnectAndShareFileSessionLC(fs);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2863
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2864
	// Set the CMsvServer and file session
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2865
	TMsvServerStoreManager storemanager;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2866
	storemanager.SetMsvServerAndFileSession(iMsvServer,fs);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2867
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2868
	RFile file;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2869
	storemanager.OpenTempStoreFileL(msgId,file);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2870
	CleanupClosePushL(file);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2871
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2872
	// Write the sub session handle (RFile) in slot 1
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2873
	TPckg<TInt> pckgSubSessionHandle(file.SubSessionHandle());
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2874
	aMessage.WriteL(1,pckgSubSessionHandle);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2875
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2876
	// Takes care of completing with session (RFs),
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2877
	// SendReceieve returns session handle at client side
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2878
	User::LeaveIfError(file.TransferToClient(aMessage,1));
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2879
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2880
	CleanupStack::PopAndDestroy(2,&fs); // fs, file
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2881
	}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2882
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2883
void CMsvServerSession::ReplaceFileStoreL(const RMessage2 &aMessage)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2884
	{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2885
	// Get the Message Id from slot 0
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2886
	TMsvId msgId = aMessage.Int0();
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2887
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2888
	// Police request - client must be able to modify the entry.
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2889
	TBool local;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2890
	iMsvServer.PoliceModifyEntryL(aMessage, msgId, local, __PLATSEC_DIAGNOSTIC_STRING("Checked by CMsvServerSession::ReplaceFileStoreL"));
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2891
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2892
	if( local )
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2893
		{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2894
		// Update the owner ID of the entry. NOTE - doesn't matter if actually
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2895
		// attachment creation fails after this - safer that owner ID is updated
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2896
		// at very least.
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2897
		UpdateOwnerIdL(msgId, aMessage.SecureId());
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2898
		}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2899
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2900
	// Set the CMsvServer and file session
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2901
	TMsvServerStoreManager storemanager;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2902
	storemanager.SetMsvServerAndFileSession(iMsvServer,iMsvServer.FileSession());
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2903
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2904
	storemanager.ReplaceFileStoreL(msgId);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2905
	aMessage.Complete(KErrNone);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2906
	}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2907
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2908
void CMsvServerSession::DeleteFileStoreL(const RMessage2 &aMessage)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2909
	{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2910
	// Get the Message Id from slot 0
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2911
	TMsvId msgId = aMessage.Int0();
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2912
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2913
	// Police request - client must be able to modify the entry.
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2914
	iMsvServer.PoliceModifyEntryL(aMessage, msgId, __PLATSEC_DIAGNOSTIC_STRING("Checked by CMsvServerSession::DeleteFileStoreL"));
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2915
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2916
	// Set the CMsvServer and file session
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2917
	TMsvServerStoreManager storemanager;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2918
	storemanager.SetMsvServerAndFileSession(iMsvServer,iMsvServer.FileSession());
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2919
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2920
	storemanager.DeleteFileStoreL(msgId);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2921
	aMessage.Complete(KErrNone);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2922
	}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2923
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2924
void CMsvServerSession::FileStoreExistsL(const RMessage2 &aMessage) const
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2925
	{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2926
	// Get the Message Id from slot 0
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2927
	TMsvId msgId = aMessage.Int0();
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2928
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2929
	// Set the CMsvServer and file session
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2930
	TMsvServerStoreManager storemanager;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2931
	storemanager.SetMsvServerAndFileSession(iMsvServer,iMsvServer.FileSession());
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2932
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2933
	TInt storeExists = storemanager.FileStoreExistsL(msgId);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2934
	aMessage.Complete(storeExists);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2935
	}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2936
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2937
void CMsvServerSession::ConnectAndShareFileSessionLC(RFs& aFs )
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2938
	{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2939
	User::LeaveIfError(aFs.Connect());
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2940
	CleanupClosePushL(aFs);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2941
	User::LeaveIfError(aFs.ShareProtected());
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2942
	}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2943
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2944
void CMsvServerSession::UpdateOwnerIdL(TMsvId aId, TSecureId aOwnerId)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2945
	{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2946
	User::LeaveIfError(iMsvServer.IndexAdapter().LockEntry(aId));
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2947
	TMsvEntry* entry;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2948
	iMsvServer.IndexAdapter().GetEntry(aId, entry); // error ignored
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2949
	User::LeaveIfError(iMsvServer.IndexAdapter().ChangeEntry(*entry, aOwnerId, ETrue));
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2950
	iMsvServer.IndexAdapter().ReleaseEntry(aId);		// error ignored
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2951
	}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2952
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2953
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2954
/**
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2955
Gets the path for the file in message store for which the message Id is passed in RMessage2.
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2956
@param aMessage RMessage2 encapsulating client request and data.
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2957
@return none.
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2958
*/
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2959
void CMsvServerSession::BodyTextFilePathL(const RMessage2 &aMessage)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2960
	{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2961
	// Get the Message Id from slot 0
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2962
	TMsvId bodyTextId = aMessage.Int0();
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2963
	
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2964
	// Get the file name from slot 1
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2965
	TFileName filePath;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2966
	aMessage.ReadL(1, filePath);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2967
		
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2968
	// Set the CMsvServer and file session 
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2969
	TMsvServerStoreManager storemanager; 
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2970
	storemanager.SetMsvServerAndFileSession(iMsvServer, iMsvServer.FileSession());
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2971
	
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2972
	storemanager.BodyTextFilePathL(bodyTextId, filePath);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2973
	aMessage.WriteL(1, filePath);   
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2974
	aMessage.Complete(KErrNone);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2975
	}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2976
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2977
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2978
/**
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2979
Open the RFile located in filepath encapsulted in RMessage2 in Read mode.
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2980
@param aMessage RMessage2 encapsulating client request and data.
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2981
@return none.
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2982
*/
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2983
void CMsvServerSession::OpenPlainTextFileL(const RMessage2 &aMessage)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2984
	{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2985
	TMsvId bodyTextId = aMessage.Int0();
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2986
	
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2987
	TFileName filePath;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2988
	aMessage.ReadL(1, filePath);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2989
	iMsvServer.PoliceReadEntryL(aMessage, bodyTextId, __PLATSEC_DIAGNOSTIC_STRING("Checked by CMsvServerSession::OpenPlainTextFileL"));
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2990
	
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2991
	RFs fs;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2992
	ConnectAndShareFileSessionLC(fs);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2993
	RFile file;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2994
	CleanupClosePushL(file);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2995
		
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2996
	// Set the CMsvServer and file session 
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2997
	TMsvServerStoreManager storemanager;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2998
	storemanager.SetMsvServerAndFileSession(iMsvServer, fs); 
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  2999
	storemanager.OpenBodyTextFileForReadL(file, bodyTextId, filePath);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3000
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3001
	TPckg<TInt> pckgSubSessionHandle(file.SubSessionHandle()); 
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3002
	aMessage.WriteL(2,pckgSubSessionHandle);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3003
	User::LeaveIfError(file.TransferToClient(aMessage, 2));
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3004
	CleanupStack::PopAndDestroy(2, &fs);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3005
	}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3006
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3007
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3008
/**
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3009
Creates the RFile in location specified by filepath encapsulted in RMessage2.
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3010
@param aMessage RMessage2 encapsulating client request and data.
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3011
@return none.
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3012
*/  
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3013
void CMsvServerSession::CreatePlainTextFileL(const RMessage2 &aMessage)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3014
	{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3015
	TMsvId bodyTextId = aMessage.Int0();
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3016
	
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3017
	iMsvServer.PoliceModifyEntryL(aMessage, bodyTextId, __PLATSEC_DIAGNOSTIC_STRING("Checked by CMsvServerSession::CreatePlainTextFileL")); 
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3018
	
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3019
	RFs fs;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3020
	ConnectAndShareFileSessionLC(fs);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3021
	
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3022
	RFile file;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3023
	CleanupClosePushL(file);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3024
		
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3025
	// Set the CMsvServer and file session 
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3026
	TMsvServerStoreManager storemanager;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3027
	storemanager.SetMsvServerAndFileSession(iMsvServer, fs); 
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3028
	storemanager.CreatePlainTextFileL(file, bodyTextId);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3029
	
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3030
	TPckg<TInt> pckgSubSessionHandle(file.SubSessionHandle()); 
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3031
	aMessage.WriteL(1,pckgSubSessionHandle);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3032
	User::LeaveIfError(file.TransferToClient(aMessage,1));
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3033
	CleanupStack::PopAndDestroy(2, &fs);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3034
	}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3035
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3036
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3037
/**
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3038
Deletes the RFile located in filepath encapsulted in RMessage2
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3039
@param aMessage RMessage2 encapsulating client request and data.
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3040
@return none.
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3041
*/
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3042
void CMsvServerSession::DeletePlainTextFileL(const RMessage2& aMessage)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3043
	{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3044
	TMsvServerStoreManager storemanager;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3045
	storemanager.SetMsvServerAndFileSession(iMsvServer, iMsvServer.FileSession()); 
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3046
	TMsvId bodyTextId = aMessage.Int0();
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3047
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3048
	// Police request - client must be able to modify the entry.
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3049
	iMsvServer.PoliceModifyEntryL(aMessage, bodyTextId, __PLATSEC_DIAGNOSTIC_STRING("Checked by CMsvServerSession::DeletePlainTextFileL"));
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3050
	storemanager.DeletePlainTextFileL(bodyTextId);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3051
	}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3052
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3053
/**
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3054
Replace the RFile for the message Id encapsulted in RMessage2.
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3055
@param aMessage RMessage2 encapsulating client request and data.
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3056
@return none.
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3057
*/  
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3058
void CMsvServerSession::ReplacePlainTextFileL(const RMessage2 &aMessage)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3059
	{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3060
	// Get the Message Id from slot 0
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3061
	TMsvId bodyTextId = aMessage.Int0();
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3062
	
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3063
	// Police request - client must be able to modify the entry.
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3064
	TBool local;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3065
	iMsvServer.PoliceModifyEntryL(aMessage, bodyTextId, local, __PLATSEC_DIAGNOSTIC_STRING("Checked by CMsvServerSession::ReplacePlainTextFileL")); 
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3066
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3067
	if( local )
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3068
		{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3069
		// Update the owner ID of the entry. 
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3070
		UpdateOwnerIdL(bodyTextId, aMessage.SecureId());
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3071
		}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3072
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3073
	// Set the CMsvServer and file session 
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3074
	TMsvServerStoreManager storemanager;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3075
	storemanager.SetMsvServerAndFileSession(iMsvServer,iMsvServer.FileSession()); 
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3076
		
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3077
	storemanager.ReplacePlainTextFileL(bodyTextId);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3078
	aMessage.Complete(KErrNone);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3079
	}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3080
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3081
/**
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3082
Gets data from a server MTM that is not related to any operation being performed on
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3083
that MTM.
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3084
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3085
@param aMessage Received message
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3086
*/
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3087
void CMsvServerSession::GetNonOperationMtmDataL(const RMessage2 &aMessage)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3088
	{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3089
	TPtrC8 desPtr;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3090
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3091
	iMsvServer.GetNonOperationMtmDataL(static_cast<TMsvId>(aMessage.Int0()), static_cast<TNonOperationMtmDataType>(aMessage.Int1()), desPtr);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3092
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3093
	TInt desLength = aMessage.GetDesMaxLength(2);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3094
	if (desLength < desPtr.Length())
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3095
		{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3096
		aMessage.Complete(KErrOverflow);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3097
		}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3098
	else
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3099
		{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3100
		WriteL(aMessage, 2, desPtr);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3101
		aMessage.Complete(KErrNone);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3102
		}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3103
	}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3104
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3105
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3106
/*****************************************
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3107
 * SearchSortOnHeaderAndBodytMsgL() :
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3108
 * Get the Query data from  client to make Search-Sort on HEADER abd BODY
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3109
 * in meassage server.
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3110
 * 
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3111
 * @param aMessage Received message
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3112
 ****************************************/ 
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3113
void CMsvServerSession::SearchSortOnHeaderAndBodytMsgL(const RMessage2& aMessage)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3114
	{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3115
	//For Simultaneously query
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3116
	if(CMSvSearchSortCacheManager::Instance()->OutstandingSOSOperations() > 0)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3117
       		{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3118
			if(CMSvSearchSortCacheManager::Instance()->iProgress != KMsvSearchSortOpCompleted)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3119
				{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3120
				User::Leave(KErrServerBusy); // One is SOS request is under proress.
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3121
				}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3122
       		}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3123
	CMSvSearchSortCacheManager::Instance()->AddOutstandingSOSOperation();
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3124
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3125
	//Header and body.
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3126
	TMsvOp operationId = aMessage.Int0();
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3127
		
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3128
	HBufC8* buffer = NULL;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3129
	ReadBufferL(aMessage, 1, buffer);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3130
	CleanupStack::PushL(buffer);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3131
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3132
	iMsvServer.PoliceSearchSortQueryReadRequestL(aMessage,__PLATSEC_DIAGNOSTIC_STRING("Checked by CMsvServerSession::SearchSortOnHeaderAndBodytMsgL"));
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3133
	
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3134
	CMsvSearchSortQuery* query= CMsvSearchSortQuery::NewL() ;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3135
	CleanupStack::PushL(query);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3136
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3137
	TMsvPackQuery packedQuery(buffer);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3138
	packedQuery.UnpackQuery(query);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3139
		
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3140
	TBool markQuery = aMessage.Int2();
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3141
	
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3142
	CMsvSearchSortCacheEntry *aEntry = CMsvSearchSortCacheEntry::CreateQueryEntryL(query, markQuery);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3143
	CleanupStack::PushL(aEntry);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3144
	
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3145
	TInt indexCount =CMSvSearchSortCacheManager::Instance()->QueryExists(*aEntry);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3146
	//Check the query is exist or not.
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3147
	
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3148
	if(CMSvSearchSortCacheManager::Instance()->QueryExists(*aEntry)<0)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3149
		{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3150
	
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3151
		//NEW Query
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3152
		if(!aEntry->IsSortQuery())
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3153
			{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3154
			CMSvSearchSortCacheManager::Instance()->TypeOfSearchQuery(*aEntry);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3155
			}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3156
		else
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3157
			{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3158
			CMSvSearchSortCacheManager::Instance()->TypeOfSortQuery(*aEntry);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3159
			}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3160
		//Do process query.
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3161
		CMSvSearchSortCacheManager::Instance()->DoProcessQueryL(*aEntry);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3162
		}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3163
	else 
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3164
		{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3165
		//Existing Query
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3166
		CMSvSearchSortCacheManager::Instance()->DoProcessQueryL(indexCount);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3167
		}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3168
	CleanupStack::Pop();//  aEntry
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3169
	CleanupStack::PopAndDestroy(2); //  query, buffer
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3170
	aMessage.Complete(KErrNone);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3171
	}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3172
	
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3173
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3174
/*****************************************
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3175
 * SearchSortOnIndexEntry() :
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3176
 * Get the Query data from  client to make Search-Sort on INDEX ENTRY
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3177
 * in meassage server.
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3178
 * 
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3179
 * @param aMessage Received message
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3180
 ****************************************/ 
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3181
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3182
void CMsvServerSession::SearchSortOnIndexEntryL(const RMessage2& aMessage)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3183
	{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3184
  	//For Simultaneously query
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3185
   	if(CMSvSearchSortCacheManager::Instance()->OutstandingSOSOperations() > 0)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3186
       	{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3187
       	if(CMSvSearchSortCacheManager::Instance()->iProgress != KMsvSearchSortOpCompleted)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3188
			{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3189
            User::Leave(KErrServerBusy); // One is SOS request is under proress.
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3190
			}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3191
       	}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3192
 	CMSvSearchSortCacheManager::Instance()->AddOutstandingSOSOperation();
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3193
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3194
	//Search sort on index entry.
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3195
	// Recover the operation data
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3196
	TMsvOp operationId = aMessage.Int0();
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3197
	
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3198
	HBufC8* buffer = NULL;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3199
	ReadBufferL(aMessage, 1, buffer);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3200
	CleanupStack::PushL(buffer);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3201
	
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3202
	iMsvServer.PoliceSearchSortQueryReadRequestL(aMessage,__PLATSEC_DIAGNOSTIC_STRING("Checked by CMsvServerSession::SearchSortOnIndexEntryL"));
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3203
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3204
	CMsvSearchSortQuery* query= CMsvSearchSortQuery::NewL() ;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3205
	CleanupStack::PushL(query);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3206
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3207
	TMsvPackQuery packedQuery(buffer);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3208
	packedQuery.UnpackQuery(query);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3209
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3210
		
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3211
	TBool markQuery = aMessage.Int2();
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3212
	TInt  iteratorCount = aMessage.Int3();
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3213
	
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3214
	CMsvSearchSortCacheEntry *aEntry = CMsvSearchSortCacheEntry::CreateQueryEntryL(query, markQuery,iteratorCount);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3215
	CleanupStack::PushL(aEntry);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3216
	
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3217
	TInt indexCount =CMSvSearchSortCacheManager::Instance()->QueryExists(*aEntry);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3218
	//Query Exist or not
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3219
	if(CMSvSearchSortCacheManager::Instance()->QueryExists(*aEntry)<0)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3220
		{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3221
		//NEW Query
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3222
		if(!aEntry->IsSortQuery())
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3223
			{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3224
			CMSvSearchSortCacheManager::Instance()->TypeOfSearchQuery(*aEntry);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3225
			}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3226
		else
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3227
			{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3228
			CMSvSearchSortCacheManager::Instance()->TypeOfSortQuery(*aEntry);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3229
			}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3230
		//Do process query.
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3231
		CMSvSearchSortCacheManager::Instance()->DoProcessQueryL(*aEntry,iteratorCount);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3232
		}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3233
	else 
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3234
		{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3235
		//Existing Query
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3236
		CMSvSearchSortCacheManager::Instance()->DoProcessQueryL(indexCount);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3237
		}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3238
	
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3239
	CleanupStack::Pop();		// aEntry
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3240
	CleanupStack::PopAndDestroy(2, buffer); // buffer, CmsvSearchSortQuery
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3241
	aMessage.Complete(KErrNone);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3242
	}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3243
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3244
void CMsvServerSession::SendSearchSortIndexEntryResultL(const RMessage2 &aMessage)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3245
	{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3246
	TBool resultType = aMessage.Int0();
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3247
	
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3248
	iMsvServer.PoliceSearchSortQueryReadRequestL(aMessage,__PLATSEC_DIAGNOSTIC_STRING("Checked by CMsvServerSession::SendSearchSortIndexEntryResultL"));
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3249
	//id's
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3250
	if(resultType) // EResultAsTMsvID
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3251
		{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3252
		TMsvPackedIdOperation op(iBuffer);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3253
		TInt error = op.Pack(CMSvSearchSortCacheManager::Instance()->iFinalResultAsIdArray);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3254
		while (error != KErrNone)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3255
			{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3256
			// increase the size of the buffer and try again
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3257
			iBuffer->Des().SetLength(0); // to avoid copying contents
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3258
			iBuffer = iBuffer->ReAllocL(iBuffer->Des().MaxSize() + KMsvSessionBufferLength);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3259
			error = op.Pack(CMSvSearchSortCacheManager::Instance()->iFinalResultAsIdArray);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3260
			}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3261
		}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3262
	else  // EResultAsTMsvEntry
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3263
		{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3264
		//As of now it takes TMsvId.
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3265
		}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3266
	WriteBufferL(aMessage, 1);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3267
	CMSvSearchSortCacheManager::Instance()->iFinalResultAsIdArray.Reset();
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3268
	CMSvSearchSortCacheManager::Instance()->iToFindResultAsIdArray.Reset();
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3269
	CMSvSearchSortCacheManager::Instance()->iMsvIdWithSortFieldArray.Reset();
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3270
	aMessage.Complete(KErrNone);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3271
	}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3272
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3273
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3274
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3275
//sending resultas
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3276
void CMsvServerSession::SendResultOrIdsToSearchL(const RMessage2& aMessage)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3277
	{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3278
	// result type (is it a Final result, Partial Result or New query)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3279
	TPckgBuf<TInt> resultType;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3280
	TInt errorMem = KErrNone;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3281
	iMsvServer.PoliceSearchSortQueryReadRequestL(aMessage,__PLATSEC_DIAGNOSTIC_STRING("Checked by CMsvServerSession::SendResultOrIdsToSearchL"));   
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3282
	//resuttype
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3283
	resultType = CMSvSearchSortCacheManager::Instance()->iReturnResultType;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3284
	
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3285
	if(CMSvSearchSortCacheManager::Instance()->iReturnResultType == KMsvSearchSortQueryIdNotFound)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3286
		{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3287
		WriteL(aMessage, 1, resultType);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3288
		}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3289
	else
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3290
		{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3291
		// need to send data to client according resultType 
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3292
		// result type is KFinalResult, KNewQuery or KPartilaResult
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3293
		TInt error = KErrNone;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3294
		
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3295
		TMsvPackedIdOperation op(iBuffer);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3296
		
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3297
#if (defined SYMBIAN_MESSAGESTORE_HEADER_BODY_USING_SQLDB)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3298
		error = op.Pack(CMSvSearchSortCacheManager::Instance()->iFinalResultAsIdArray);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3299
		while (error != KErrNone)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3300
			{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3301
			// increase the size of the buffer and try again
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3302
			iBuffer->Des().SetLength(0); // to avoid copying contents
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3303
			iBuffer = iBuffer->ReAllocL(iBuffer->Des().MaxSize() + KMsvSessionBufferLength);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3304
			error = op.Pack(CMSvSearchSortCacheManager::Instance()->iFinalResultAsIdArray);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3305
			}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3306
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3307
#else   // else SYMBIAN_MESSAGESTORE_HEADER_BODY_USING_SQLDB	
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3308
	
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3309
		if(CMSvSearchSortCacheManager::Instance()->iReturnResultType == KFinalResult)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3310
			{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3311
			CMSvSearchSortCacheManager::Instance()->iSearchSortDeltaCache->iIsHeaderSearchEnabled = EFalse;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3312
			error = op.Pack(CMSvSearchSortCacheManager::Instance()->iFinalResultAsIdArray);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3313
			
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3314
			while (error != KErrNone)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3315
				{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3316
				// increase the size of the buffer and try again
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3317
				iBuffer->Des().SetLength(0); // to avoid copying contents
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3318
				iBuffer = iBuffer->ReAllocL(iBuffer->Des().MaxSize() + KMsvSessionBufferLength);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3319
				error = op.Pack(CMSvSearchSortCacheManager::Instance()->iFinalResultAsIdArray);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3320
				}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3321
			}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3322
		else if(CMSvSearchSortCacheManager::Instance()->iReturnResultType == KNewQuery)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3323
			{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3324
			error = op.Pack(CMSvSearchSortCacheManager::Instance()->iToFindResultAsIdArray);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3325
			while (error != KErrNone)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3326
				{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3327
				// increase the size of the buffer and try again
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3328
				iBuffer->Des().SetLength(0); // to avoid copying contents
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3329
				iBuffer = iBuffer->ReAllocL(iBuffer->Des().MaxSize() + KMsvSessionBufferLength);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3330
				error = op.Pack(CMSvSearchSortCacheManager::Instance()->iToFindResultAsIdArray);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3331
				}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3332
			}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3333
		else // for KPartialResult
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3334
			{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3335
			error = op.Pack(CMSvSearchSortCacheManager::Instance()->iDeltaCacheIdArray);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3336
			while (error != KErrNone)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3337
				{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3338
				// increase the size of the buffer and try again
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3339
				iBuffer->Des().SetLength(0); // to avoid copying contents
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3340
				iBuffer = iBuffer->ReAllocL(iBuffer->Des().MaxSize() + KMsvSessionBufferLength);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3341
				error = op.Pack(CMSvSearchSortCacheManager::Instance()->iDeltaCacheIdArray);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3342
				}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3343
			}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3344
#endif // SYMBIAN_MESSAGESTORE_HEADER_BODY_USING_SQLDB
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3345
			
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3346
		// send Id's in buffer
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3347
		TRAP(errorMem,WriteBufferL(aMessage,0));
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3348
			
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3349
		//send resultType to client, whether it's final result, partial result or newQuery.
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3350
		WriteL(aMessage,1,resultType);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3351
		}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3352
	
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3353
	//needs to reset RArray
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3354
	if(errorMem==KErrNone)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3355
		{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3356
		CMSvSearchSortCacheManager::Instance()->iFinalResultAsIdArray.Reset();
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3357
		CMSvSearchSortCacheManager::Instance()->iToFindResultAsIdArray.Reset();
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3358
		CMSvSearchSortCacheManager::Instance()->iMsvIdWithSortFieldArray.Reset();
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3359
		}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3360
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3361
	aMessage.Complete(errorMem);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3362
	}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3363
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3364
void CMsvServerSession::GetSearchSortResultCountL(const RMessage2& aMessage)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3365
	{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3366
	TPckgBuf<TInt> resultCount;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3367
	
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3368
	iMsvServer.PoliceSearchSortQueryReadRequestL(aMessage,__PLATSEC_DIAGNOSTIC_STRING("Checked by CMsvServerSession::GetSearchSortResultCountL"));  
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3369
		
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3370
	TInt  index = CMSvSearchSortCacheManager::Instance()->iManagerEntry->Count();
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3371
	CMSvSearchSortCacheManager::Instance()->ResultCountL(index-1);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3372
	
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3373
	resultCount() = CMSvSearchSortCacheManager::Instance()->iFinalResultCount;//Contain the result.
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3374
	WriteL(aMessage, 0, resultCount);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3375
	CMSvSearchSortCacheManager::Instance()->iFinalResultCount = 0;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3376
	aMessage.Complete(KErrNone);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3377
	}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3378
	
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3379
	
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3380
void CMsvServerSession::GetResultInIteratorL(const RMessage2& aMessage)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3381
	{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3382
	TPckgBuf<TMsvId> messageId;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3383
	TPckgBuf<TInt> count;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3384
	
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3385
	iMsvServer.PoliceSearchSortQueryReadRequestL(aMessage,__PLATSEC_DIAGNOSTIC_STRING("Checked by CMsvServerSession::GetResultInIteratorL"));   
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3386
		
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3387
	TInt  index = CMSvSearchSortCacheManager::Instance()->iManagerEntry->Count();
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3388
	CMSvSearchSortCacheManager::Instance()->NextResultForInteraratorL(index-1);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3389
	messageId() = CMSvSearchSortCacheManager::Instance()->iIteratorId;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3390
	count() = CMSvSearchSortCacheManager::Instance()->iIteratorRemainingResultCount;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3391
	
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3392
	//result as TMsvId
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3393
	WriteL(aMessage, 0, messageId);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3394
	//for remaing count
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3395
	WriteL(aMessage, 1, count);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3396
	
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3397
	CMSvSearchSortCacheManager::Instance()->iIteratorId = 0;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3398
	aMessage.Complete(KErrNone);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3399
	}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3400
	
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3401
void CMsvServerSession::GetNextEntryInIteratorL(const RMessage2& aMessage)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3402
	{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3403
	//need this varible to send remaining count to client
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3404
	TPckgBuf<TInt> count;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3405
	
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3406
	iMsvServer.PoliceSearchSortQueryReadRequestL(aMessage,__PLATSEC_DIAGNOSTIC_STRING("Checked by CMsvServerSession::GetNextEntryInIteratorL"));	
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3407
	
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3408
	TInt  index = CMSvSearchSortCacheManager::Instance()->iManagerEntry->Count();
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3409
	CMSvSearchSortCacheManager::Instance()->NextResultForInteraratorL(index-1);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3410
	
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3411
	// package the entry
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3412
	TMsvPackedEntry packedEntry(iBuffer);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3413
	TInt error = packedEntry.PackEntry(CMSvSearchSortCacheManager::Instance()->iIteratorEntry);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3414
	while(error!=KErrNone)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3415
		{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3416
		// increase the size of the buffer and try again
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3417
		iBuffer->Des().SetLength(0); // to avoid copying contents
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3418
		iBuffer = iBuffer->ReAllocL(iBuffer->Des().MaxSize() + KMsvSessionBufferLength);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3419
		error = packedEntry.PackEntry(CMSvSearchSortCacheManager::Instance()->iIteratorEntry);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3420
		}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3421
	//needs fill the remaing count
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3422
	count() =  CMSvSearchSortCacheManager::Instance()->iIteratorRemainingResultCount;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3423
	
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3424
	//result as TMsvEntry
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3425
	WriteBufferL(aMessage, 0);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3426
	//for remaing count
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3427
	WriteL(aMessage, 1, count);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3428
	
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3429
	aMessage.Complete(KErrNone);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3430
	}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3431
	
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3432
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3433
void CMsvServerSession::GetQueryIDL(const RMessage2& aMessage)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3434
	{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3435
	TPckgBuf<TInt> queryId;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3436
	
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3437
	iMsvServer.PoliceSearchSortQueryReadRequestL(aMessage,__PLATSEC_DIAGNOSTIC_STRING("Checked by CMsvServerSession::GetQueryIDL"));	
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3438
	
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3439
	queryId() = CMSvSearchSortCacheManager::Instance()->QueryID();
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3440
	
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3441
	WriteL(aMessage, 0, queryId);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3442
	aMessage.Complete(KErrNone);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3443
	}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3444
	
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3445
void CMsvServerSession::UpdateSearchSortCacheWithSortFiledL(const RMessage2& aMessage)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3446
	{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3447
	TInt  index = CMSvSearchSortCacheManager::Instance()->iManagerEntry->Count();
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3448
	
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3449
	iMsvServer.PoliceSearchSortQueryReadRequestL(aMessage,__PLATSEC_DIAGNOSTIC_STRING("Checked by CMsvServerSession::UpdateSearchSortCacheWithSortFiledL"));	
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3450
	
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3451
	// get the length
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3452
	TInt desLen = aMessage.GetDesLength(1);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3453
	if(desLen == 0)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3454
		{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3455
		aMessage.Complete(KErrArgument);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3456
		return;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3457
		}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3458
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3459
	// allocate buffer copy the data
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3460
	CBufFlat* buffer = CBufFlat::NewL(desLen);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3461
	CleanupStack::PushL(buffer);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3462
	buffer->ExpandL(0, desLen);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3463
	RBufReadStream readStream(*buffer);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3464
	CleanupClosePushL (readStream);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3465
	TPtr8 desPtr = buffer->Ptr(0);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3466
	
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3467
	TRAPD(err,  aMessage.ReadL(1, desPtr));
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3468
	User::LeaveIfError(err);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3469
	// object of TMsvPackedIdAndMessagePart 
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3470
	TMsvPackedIdAndMessagePart packIdAndMessagePart;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3471
	
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3472
	//extract TMsvId with Sort field
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3473
	packIdAndMessagePart.InternalizeL(readStream, CMSvSearchSortCacheManager::Instance()->iMsvIdWithSortFieldArray);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3474
	
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3475
	//Manager class update the Db.
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3476
	CMSvSearchSortCacheManager::Instance()->StoreSortResultL(index,CMSvSearchSortCacheManager::Instance()->iMsvIdWithSortFieldArray);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3477
	
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3478
	CleanupStack::PopAndDestroy(2, buffer);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3479
	aMessage.Complete(KErrNone);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3480
	}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3481
	
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3482
void CMsvServerSession::QueryUnMarkedL(const RMessage2& aMessage)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3483
	{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3484
	
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3485
	TInt  queryID = aMessage.Int0();
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3486
	
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3487
	iMsvServer.PoliceSearchSortQueryReadRequestL(aMessage,__PLATSEC_DIAGNOSTIC_STRING("Checked by CMsvServerSession::PoliceSearchSortQueryReadRequestL"));  
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3488
	
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3489
	TInt index =  CMSvSearchSortCacheManager::Instance()->QueryExists(queryID);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3490
	if(index>0)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3491
		{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3492
		CMSvSearchSortCacheManager::Instance()->UnMarkedQuery(index);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3493
		}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3494
	else
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3495
		{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3496
		aMessage.Complete(KErrNotFound);	
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3497
		}   
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3498
	aMessage.Complete(KErrNone);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3499
	}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3500
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3501
void CMsvServerSession::GetResultForQueryIDL(const RMessage2& aMessage)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3502
	{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3503
    //For Simultaneously query
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3504
    if(CMSvSearchSortCacheManager::Instance()->OutstandingSOSOperations() > 0)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3505
        {
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3506
		if(CMSvSearchSortCacheManager::Instance()->iProgress != KMsvSearchSortOpCompleted )
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3507
			{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3508
			User::Leave(KErrServerBusy); // One is SOS request is under proress.
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3509
			}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3510
         }
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3511
    CMSvSearchSortCacheManager::Instance()->AddOutstandingSOSOperation();
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3512
	
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3513
	TInt operationId = aMessage.Int0();
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3514
	TInt queryID = aMessage.Int1();
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3515
	
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3516
	iMsvServer.PoliceSearchSortQueryReadRequestL(aMessage,__PLATSEC_DIAGNOSTIC_STRING("Checked by CMsvServerSession::GetResultForQueryIDL"));   
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3517
	
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3518
	TInt index =  CMSvSearchSortCacheManager::Instance()->QueryExists(queryID);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3519
	if(index>=0)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3520
		{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3521
		CMSvSearchSortCacheManager::Instance()->DoProcessQueryL(index);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3522
		}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3523
	else
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3524
		{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3525
		//Invalid query id.
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3526
		CMSvSearchSortCacheManager::Instance()->iReturnResultType = KMsvSearchSortQueryIdNotFound;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3527
		}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3528
	
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3529
	aMessage.Complete(KErrNone);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3530
	}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3531
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3532
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3533
void CMsvServerSession::GetSearchSortProgressInfoL(const RMessage2 &aMessage)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3534
	{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3535
	TInt operationId = aMessage.Int0();
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3536
	TPckg<TInt> progress(KMsvSearchSortOpNone);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3537
	
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3538
	iMsvServer.PoliceSearchSortQueryReadRequestL(aMessage,__PLATSEC_DIAGNOSTIC_STRING("Checked by CMsvServerSession::GetSearchSortProgressInfoL")); 
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3539
	
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3540
	progress() = CMSvSearchSortCacheManager::Instance()->ReturnProgressInfo();
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3541
	
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3542
	WriteL(aMessage, 1, progress);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3543
	aMessage.Complete(KErrNone);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3544
	}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3545
	
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3546
void CMsvServerSession::SearchSortOperationCancelL(const RMessage2& aMessage)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3547
	{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3548
	TInt operationId = aMessage.Int0();
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3549
	
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3550
	iMsvServer.PoliceSearchSortQueryReadRequestL(aMessage,__PLATSEC_DIAGNOSTIC_STRING("Checked by CMsvServerSession::SearchSortOperationCancel"));  
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3551
	
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3552
	CMSvSearchSortCacheManager::Instance()->CancelSearchSortOperation();
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3553
	//cancel the current oeration and delete the query and correspnding entry from DB.
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3554
	aMessage.Complete(KErrNone);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3555
	}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3556
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3557
//Update search sort results to DB, and sort by TMsvEntry fields invalid id's
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3558
void CMsvServerSession::UpdateSearchSortResultsAndSortByEntryL(const RMessage2& aMessage)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3559
	{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3560
	
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3561
	iMsvServer.PoliceSearchSortQueryReadRequestL(aMessage,__PLATSEC_DIAGNOSTIC_STRING("Checked by CMsvServerSession::UpdateSearchSortResultsAndSortByEntryL")); 
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3562
	
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3563
	TInt  index = CMSvSearchSortCacheManager::Instance()->iManagerEntry->Count();
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3564
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3565
	HBufC8* buffer = NULL;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3566
	ReadBufferL(aMessage, 1, buffer);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3567
	CleanupStack::PushL(buffer);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3568
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3569
	// Unpack the entries from the buffer
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3570
	TMsvPackedIdOperation packedIdOperation(buffer);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3571
	packedIdOperation.UnpackL(CMSvSearchSortCacheManager::Instance()->iUpdateIdsToCacheArray);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3572
	
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3573
	// Update DB and sort by TMsvEnty field with existing partil query
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3574
	// Invalid ID need to delete.
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3575
	CMSvSearchSortCacheManager::Instance()->StoreResultL(index,CMSvSearchSortCacheManager::Instance()->iUpdateIdsToCacheArray);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3576
	
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3577
	CleanupStack::PopAndDestroy(buffer); // buffer
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3578
	
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3579
	aMessage.Complete(KErrNone);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3580
	}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3581
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3582
void CMsvServerSession::CopyQueryDataL(const RMessage2& aMessage)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3583
	{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3584
	TInt operationId = aMessage.Int0();
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3585
	TInt queryId = aMessage.Int1();
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3586
	
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3587
	iMsvServer.PoliceSearchSortQueryReadRequestL(aMessage,__PLATSEC_DIAGNOSTIC_STRING("Checked by CMsvServerSession::CopyQueryDataL")); 
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3588
	
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3589
	CMsvSearchSortQuery* searchSortQuery= CMsvSearchSortQuery::NewL() ;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3590
	CleanupStack::PushL(searchSortQuery);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3591
	
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3592
	TInt index =  CMSvSearchSortCacheManager::Instance()->QueryExists(queryId);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3593
	if(index>=0)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3594
		{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3595
		//This below function will return  TMsvSearchSortQuery object .
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3596
		CMSvSearchSortCacheManager::Instance()->RetrunQuery(index, searchSortQuery);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3597
		}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3598
	else
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3599
		{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3600
		//Query id not found.
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3601
		CleanupStack::PopAndDestroy(searchSortQuery); // searchSortQuery
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3602
		aMessage.Complete(KErrNotFound);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3603
		return;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3604
		}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3605
	
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3606
	TMsvPackQuery packedQuery(iBuffer);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3607
	
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3608
	TInt error = KErrNone;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3609
	error = packedQuery.PackQuery(searchSortQuery);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3610
	
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3611
	WriteBufferL(aMessage, 2);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3612
	CleanupStack::PopAndDestroy(searchSortQuery); // searchSortQuery
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3613
	aMessage.Complete(error);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3614
	}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3615
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3616
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3617
#if (defined SYMBIAN_MSGS_ENHANCED_REMOVABLE_MEDIA_SUPPORT)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3618
/**
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3619
 * GetChildrenAllL()
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3620
 *
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3621
 * @param RMessage2.
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3622
 *
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3623
 * Code changes for PREQ 557.
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3624
 * Service request EMsvGetChildrenALL.
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3625
 * If the parent id is a standard folder the function fetches
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3626
 * the child entries from all drives in the preferred drive list
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3627
 * as maintained by server.
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3628
 */
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3629
 void CMsvServerSession::GetChildrenAllL(const RMessage2 &aMessage)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3630
	{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3631
	// Reset internal datastructure.
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3632
	iChildrenSelection->Reset();
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3633
	iChildrenSelectionIds->Reset();
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3634
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3635
	// Copy across the children details structure.
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3636
	TPckgBuf<TMsvChildrenDetails> children;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3637
	aMessage.ReadL(0, children);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3638
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3639
	// Check that the children details arguments are empty. 
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3640
	// Panic in debug mode but try to handle it gracefully 
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3641
	// in release code.
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3642
	__ASSERT_DEBUG( children().iTotalNumberChildren==0 &&
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3643
					children().iNumberChildrenInArray==0, PanicServer(EMsvChildrenDetailsNotEmpty2));
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3644
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3645
	if( children().iTotalNumberChildren != 0 || children().iNumberChildrenInArray != 0 )
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3646
		{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3647
		aMessage.Complete(KErrArgument);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3648
		return;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3649
		}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3650
	
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3651
	// The function is allowed only for following standard 
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3652
	// folders of current drive:
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3653
	// Inbox, Outbox, Draft, Sent and Deleted.
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3654
	if( (KCurrentDriveId != GetDriveId(children().iParentId)) ||
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3655
		( KMsvLocalServiceIndexEntryId >= UnmaskTMsvId(children().iParentId) ||
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3656
		  KMsvUnknownServiceIndexEntryId <= UnmaskTMsvId(children().iParentId) )
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3657
	  )
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3658
		{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3659
		aMessage.Complete(KErrArgument);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3660
		return;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3661
		}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3662
		
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3663
	// Copy across the sort order.
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3664
	TPckgBuf<TMsvSelectionOrdering> order;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3665
	aMessage.ReadL(1, order);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3666
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3667
	// Get the children as a selection. Need to 
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3668
	// filter the list via the client secure ID 
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3669
	// if the client is not trusted with Read User Data.
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3670
	TBool filterByOwnerId = !aMessage.HasCapability(ECapabilityReadUserData);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3671
	
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3672
	iMsvServer.IndexAdapter().GetChildrenAllL(children().iParentId, *iChildrenSelection, order(), KUidMsvNullEntry, filterByOwnerId, aMessage.SecureId());
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3673
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3674
	// Return number of children.
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3675
	children().iTotalNumberChildren = iChildrenSelection->Count();
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3676
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3677
	// Package up the entries.
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3678
	iBuffer->Des().SetMax();
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3679
	TMsvPackedEntryArray packedEntryArray(iBuffer);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3680
	
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3681
	TInt count=0;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3682
	TInt error=KErrNone;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3683
	TInt totalCount=iChildrenSelection->Count();
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3684
	for (; count<totalCount; count++)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3685
		{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3686
		error = packedEntryArray.PackEntry(*iChildrenSelection->At(count));
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3687
		if (error)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3688
			{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3689
			children().iLastEntryInArray = count;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3690
			break;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3691
			}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3692
		}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3693
	// return number of children in the array
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3694
	children().iNumberChildrenInArray = count;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3695
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3696
	// write the children to client
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3697
	WriteL(aMessage, 0, children);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3698
	
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3699
	// write the array to the client (if any entries are in the array)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3700
	if (children().iNumberChildrenInArray)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3701
		WriteL(aMessage, 2, iBuffer->Des());
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3702
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3703
	if (error==KErrNone)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3704
		{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3705
		// reset the member data
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3706
		iChildrenSelection->Reset();
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3707
		}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3708
	else
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3709
		{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3710
		// keep an list of the ids separatelyin case they are deleted by another client
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3711
		TInt totalCount=iChildrenSelection->Count();
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3712
		for (count=0; count<totalCount; count++)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3713
			iChildrenSelectionIds->AppendL(iChildrenSelection->At(count)->Id());
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3714
		iChildrenDetails = children();
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3715
		}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3716
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3717
	// signal the client and finished with selection
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3718
	aMessage.Complete(error);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3719
	}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3720
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3721
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3722
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3723
/** 
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3724
 * GetChildIdsAll()
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3725
 *
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3726
 * Gets the children of a parent entry specified as first argument.
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3727
 * If the passed parent is a standard folder the function will fetch 
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3728
 * entries from all drives currently present in the preferred drive list.
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3729
 */
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3730
void CMsvServerSession::GetChildIdsAllL(const RMessage2& aMessage)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3731
	{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3732
	TMsvId id = aMessage.Int1();
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3733
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3734
	// The function is allowed only for following standard 
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3735
	// folders of current drive:
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3736
	// Inbox, Outbox, Draft, Sent and Deleted.
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3737
	if( (KCurrentDriveId != GetDriveId(id)) ||
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3738
		(KMsvLocalServiceIndexEntryId >= UnmaskTMsvId(id)) ||
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3739
		(KMsvUnknownServiceIndexEntryId <= UnmaskTMsvId(id))
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3740
	  )
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3741
		{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3742
		aMessage.Complete(KErrArgument);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3743
		return;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3744
		}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3745
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3746
	CMsvEntrySelection* selection = new(ELeave)CMsvEntrySelection;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3747
	CleanupStack::PushL(selection);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3748
	HBufC8* buffer = NULL;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3749
	ReadBufferL(aMessage, 0, buffer);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3750
	CleanupStack::PushL(buffer);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3751
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3752
	CMsvEntryFilter* filter = CMsvEntryFilter::NewLC();
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3753
	TMsvPackedEntryFilter package(buffer);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3754
	package.UnpackFilter(*filter);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3755
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3756
	// Need to filter the list via the client secure ID if the client is not
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3757
	// trusted with Read User Data.
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3758
	TBool filterByOwnerId = !aMessage.HasCapability(ECapabilityReadUserData);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3759
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3760
	TInt error = iMsvServer.IndexAdapter().GetChildrenIdAll(id, *filter, *selection, filterByOwnerId, aMessage.SecureId());
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3761
	if(KErrNone != error)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3762
		{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3763
		aMessage.Complete(error);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3764
		CleanupStack::PopAndDestroy(3); // selection, buffer, filter
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3765
		}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3766
		
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3767
	TMsvPackedOperation op(iBuffer);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3768
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3769
	error = op.Pack(*selection, 0, 0);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3770
	while (error != KErrNone)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3771
		{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3772
		// increase the size of the buffer and try again
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3773
		iBuffer->Des().SetLength(0); // to avoid copying contents
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3774
		iBuffer = iBuffer->ReAllocL(iBuffer->Des().MaxSize() + KMsvSessionBufferLength);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3775
		error = op.Pack(*selection, 0, 0);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3776
		}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3777
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3778
	WriteBufferL(aMessage, 0);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3779
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3780
	aMessage.Complete(KErrNone);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3781
	CleanupStack::PopAndDestroy(3); // selection, buffer, filter
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3782
	}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3783
	
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3784
	
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3785
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3786
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3787
/**
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3788
 * MessageDrive()
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3789
 *
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3790
 * @param RMessage2.
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3791
 *
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3792
 * Code changes for PREQ 557.
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3793
 * Service request EMsvGetMessageDrive.
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3794
 */
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3795
void CMsvServerSession::MessageDrive(const RMessage2 &aMessage)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3796
	{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3797
	aMessage.Complete(CMsvPreferredDriveList::GetDriveList()->CurrentDriveNumber());		
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3798
	}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3799
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3800
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3801
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3802
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3803
/**
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3804
 * CurrentDriveInfoL()
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3805
 *
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3806
 * @param RMessage2.
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3807
 *
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3808
 * Code changes for PREQ 557.
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3809
 * Service request EMsvGetCurrentDriveInfo.
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3810
 */	 
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3811
void CMsvServerSession::CurrentDriveInfoL(const RMessage2 &aMessage)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3812
	{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3813
	TMsvPreferredDrive driveInfo;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3814
	TUint currentDriveIndex = CMsvPreferredDriveList::GetDriveList()->CurrentDriveIndex();
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3815
	TRAPD(err, CMsvPreferredDriveList::GetDriveList()->DriveInfoL(currentDriveIndex, driveInfo));
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3816
	if(KErrNone == err)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3817
		{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3818
		TPckgBuf<TDriveNumber> driveNum;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3819
		TPckgBuf<TUint> priority;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3820
		
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3821
		driveNum() = driveInfo.driveNum;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3822
		priority() = currentDriveIndex + 1;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3823
		
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3824
		WriteL(aMessage, 0, driveNum);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3825
		WriteL(aMessage, 1, priority);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3826
		}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3827
	aMessage.Complete(err);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3828
	}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3829
	
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3830
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3831
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3832
/**
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3833
 * DriveListL()
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3834
 *
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3835
 * @param RMessage2.
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3836
 *
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3837
 * Code changes for PREQ 557.
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3838
 * Service request EMsvGetDriveList.
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3839
 */	 
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3840
void CMsvServerSession::DriveListL(const RMessage2 &aMessage)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3841
	{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3842
	CMsvPreferredDriveList *driveList = CMsvPreferredDriveList::GetDriveList();
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3843
	RArray<TDriveNumber> driveNumList;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3844
	CleanupClosePushL(driveNumList);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3845
	
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3846
	for(TInt index=0; index<driveList->Count(); index++)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3847
		{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3848
		driveNumList.AppendL((*driveList)[index].driveNum);	 
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3849
		}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3850
	
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3851
	TMsvPackedDriveIdOperation driveOp(iBuffer);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3852
	User::LeaveIfError(driveOp.Pack(driveNumList));
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3853
	WriteBufferL(aMessage, 0);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3854
	
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3855
	CleanupStack::PopAndDestroy();	  // driveNumList
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3856
	aMessage.Complete(KErrNone);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3857
	}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3858
	
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3859
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3860
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3861
/**
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3862
 * AvailableDriveListL()
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3863
 *
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3864
 * @param RMessage2.
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3865
 *
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3866
 * Code changes for PREQ 557.
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3867
 * Service request EMsvGetAvailableDriveList.
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3868
 */ 
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3869
void CMsvServerSession::AvailableDriveListL(const RMessage2 &aMessage)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3870
	{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3871
	CMsvPreferredDriveList *driveList = CMsvPreferredDriveList::GetDriveList();
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3872
	RArray<TDriveNumber> driveNumList;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3873
	CleanupClosePushL(driveNumList);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3874
	
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3875
	for(TInt index=0; index<driveList->Count(); index++)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3876
		{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3877
		if(EMsvMessageStoreAvailableStatus == (*driveList)[index].status)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3878
			{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3879
			driveNumList.AppendL((*driveList)[index].driveNum);	 
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3880
			}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3881
		}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3882
	
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3883
	TMsvPackedDriveIdOperation driveOp(iBuffer);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3884
	User::LeaveIfError(driveOp.Pack(driveNumList));
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3885
	WriteBufferL(aMessage, 0);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3886
	
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3887
	CleanupStack::PopAndDestroy();	  // driveNumList
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3888
	aMessage.Complete(KErrNone);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3889
	}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3890
	
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3891
	
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3892
	
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3893
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3894
/**
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3895
 * AddDriveL()
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3896
 *
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3897
 * @param RMessage2.
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3898
 *
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3899
 * Code changes for PREQ 557.
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3900
 * Service request EMsvAddDriveToDriveList.
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3901
 */	 
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3902
void CMsvServerSession::AddDriveL(const RMessage2 &aMessage)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3903
	{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3904
	TDriveNumber driveNumber = (TDriveNumber) aMessage.Int0();
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3905
	TUint priority = (TUint) aMessage.Int1();
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3906
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3907
	TRAPD(err, iMsvServer.AddDriveToListL(driveNumber, priority, this));
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3908
	if(KErrNone == err)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3909
		{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3910
		TPckgBuf<TUint> priorityBuf;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3911
		priorityBuf() = priority;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3912
		WriteL(aMessage, 2, priorityBuf);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3913
		}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3914
	aMessage.Complete(err);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3915
	}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3916
	
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3917
	
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3918
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3919
/**
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3920
 * RemoveDriveL()
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3921
 *
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3922
 * @param RMessage2.
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3923
 *
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3924
 * Code changes for PREQ 557.
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3925
 * Service request EMsvRemoveDriveFromDriveList.
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3926
 */ 
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3927
void CMsvServerSession::RemoveDriveL(const RMessage2 &aMessage)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3928
	{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3929
	TDriveNumber driveNumber = (TDriveNumber) aMessage.Int0();
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3930
	TRAPD(err, iMsvServer.RemoveDriveFromListL(driveNumber));
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3931
	aMessage.Complete(err);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3932
	}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3933
	
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3934
	
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3935
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3936
/**
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3937
 * UpdateDrivePriorityL()
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3938
 *
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3939
 * @param RMessage2.
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3940
 *
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3941
 * Code changes for PREQ 557.
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3942
 * Service request EMsvUpdateDrivePriority.
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3943
 */	 
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3944
void CMsvServerSession::UpdateDrivePriorityL(const RMessage2 &aMessage)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3945
	{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3946
	TDriveNumber driveNumber = (TDriveNumber) aMessage.Int0();
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3947
	TUint priority = (TUint) aMessage.Int1();
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3948
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3949
	TRAPD(err, iMsvServer.UpdateDrivePriorityL(driveNumber, priority));
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3950
	if(KErrNone == err)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3951
		{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3952
		TPckgBuf<TUint> priorityBuf;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3953
		priorityBuf() = priority;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3954
		WriteL(aMessage, 2, priorityBuf);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3955
		}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3956
	aMessage.Complete(err);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3957
	}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3958
	
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3959
	
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3960
/**
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3961
 * ResetRepositoryL()
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3962
 *
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3963
 * @param RMessage2.
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3964
 *
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3965
 * Code changes for PREQ 557.
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3966
 * Service request EMsvResetRepository.
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3967
 */ 
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3968
#if (defined SYMBIAN_MESSAGESTORE_UNIT_TESTCODE)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3969
void CMsvServerSession::ResetRepositoryL(const RMessage2 &aMessage)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3970
	{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3971
	TRAPD(err, iMsvServer.ResetRepositoryL());
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3972
	aMessage.Complete(err);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3973
	}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3974
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3975
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3976
void CMsvServerSession::PrintCache(const RMessage2 &aMessage)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3977
	{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3978
	#ifdef _DEBUG
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3979
		iMsvServer.Context().IndexAdapter()->PrintL();
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3980
	#endif
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3981
	aMessage.Complete(KErrNone);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3982
	}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3983
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3984
#endif	  // #if (defined SYMBIAN_MESSAGESTORE_UNIT_TESTCODE)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3985
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3986
#endif		  // #if (defined SYMBIAN_MSGS_ENHANCED_REMOVABLE_MEDIA_SUPPORT)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3987
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3988
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3989
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3990
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3991
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3992
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3993
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3994
#if (defined SYMBIAN_MESSAGESTORE_HEADER_BODY_USING_SQLDB)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3995
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3996
/*
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3997
 * CreateHeaderTableL()
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3998
 *
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  3999
 * The function creates the header table in the message store.
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4000
 */
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4001
void CMsvServerSession::CreateHeaderTableL(const RMessage2 &aMessage)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4002
	{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4003
	// Check for capability.
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4004
	if(!aMessage.HasCapability(ECapabilityWriteDeviceData))
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4005
		{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4006
		// Client missing capabilities - emit diagnostics and leave...
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4007
		User::LeaveIfError(PlatSec::CapabilityCheckFail(aMessage, ECapabilityWriteDeviceData, __PLATSEC_DIAGNOSTIC_STRING("Checked by CMsvServerSession::CreateHeaderTableL")));
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4008
		}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4009
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4010
	// Capability check is fine. Proceed.
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4011
	TUid mtmTypeUid = TUid::Uid(aMessage.Int0());
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4012
	ReadBufferL(aMessage, 1, iBuffer);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4013
	
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4014
	// Read the header structure from the buffer.
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4015
	RPointerArray<CFieldPair> fieldDetails;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4016
	CleanupClosePushL(fieldDetails);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4017
	TMsvPackedHeaderStructure headerStruct(iBuffer);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4018
			
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4019
	headerStruct.UnpackL(fieldDetails);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4020
	
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4021
	// Create the header table and handle error.
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4022
	TRAPD(err, iMsvServer.MessageDBAdapter().CreateHeaderTableL(mtmTypeUid, fieldDetails, iLastDBErrorMessage));
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4023
	fieldDetails.ResetAndDestroy();
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4024
	CleanupStack::PopAndDestroy();		  // fieldDetails
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4025
	aMessage.Complete(err);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4026
	}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4027
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4028
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4029
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4030
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4031
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4032
/*
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4033
 * DoesStoreExistsL()
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4034
 *
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4035
 * The function checks if a header table for a MTM Id already exists in message store.
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4036
 */
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4037
void CMsvServerSession::DoesStoreExistsL(const RMessage2 &aMessage)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4038
	{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4039
	// Check for capability.
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4040
	if(!aMessage.HasCapability(ECapabilityReadDeviceData))
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4041
		{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4042
		// Client missing capabilities - emit diagnostics and leave...
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4043
		User::LeaveIfError(PlatSec::CapabilityCheckFail(aMessage, ECapabilityReadDeviceData, __PLATSEC_DIAGNOSTIC_STRING("Checked by CMsvServerSession::DoesStoreExistsL")));
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4044
		}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4045
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4046
	// Capability check is fine. Proceed.
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4047
	TUid mtmTypeUid = TUid::Uid(aMessage.Int0());
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4048
	
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4049
	TBool isStoreExists = iMsvServer.MessageDBAdapter().IsHeaderTableExistsL(mtmTypeUid);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4050
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4051
	TPckgBuf<TBool> storeExists;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4052
	storeExists() = isStoreExists;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4053
	WriteL(aMessage, 1, storeExists);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4054
	aMessage.Complete(KErrNone);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4055
	}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4056
	
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4057
	
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4058
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4059
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4060
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4061
/*
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4062
 * LastErrorMessageL()
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4063
 *
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4064
 * This function is mainly used after the header table creation.
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4065
 * The function returns the error message text, if the header table
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4066
 * creation fails.
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4067
 */ 
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4068
void CMsvServerSession::LastErrorMessageL(const RMessage2 &aMessage)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4069
	{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4070
	TInt desLen = iLastDBErrorMessage.Size();   
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4071
	if (Align4(desLen+4) > aMessage.GetDesMaxLength(0))
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4072
		{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4073
		User::Leave(KErrOverflow);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4074
		}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4075
	
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4076
	iBuffer->Des().SetLength(desLen+4);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4077
	TInt* ptr = (TInt*) CONST_CAST(TUint8*, iBuffer->Ptr());
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4078
	*ptr++ = desLen;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4079
	Mem::Copy((void*)ptr, iLastDBErrorMessage.Ptr(), desLen);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4080
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4081
	WriteBufferL(aMessage, 0);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4082
	aMessage.Complete(KErrNone);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4083
	}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4084
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4085
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4086
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4087
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4088
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4089
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4090
/*
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4091
 * CreateHeaderEntryL()
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4092
 *
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4093
 * This function creates a new header entry in the database.
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4094
 */ 
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4095
void CMsvServerSession::CreateHeaderEntryL(const RMessage2 &aMessage)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4096
	{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4097
	// Check for capability.
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4098
	if(!aMessage.HasCapability(ECapabilityWriteUserData))
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4099
		{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4100
		// Client missing capabilities - emit diagnostics and leave...
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4101
		User::LeaveIfError(PlatSec::CapabilityCheckFail(aMessage, ECapabilityWriteUserData, __PLATSEC_DIAGNOSTIC_STRING("Checked by CMsvServerSession::CreateHeaderEntryL")));
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4102
		}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4103
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4104
	// Capability check is fine. Proceed.
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4105
	TUid mtmTypeUid = TUid::Uid(aMessage.Int0());
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4106
	TMsvId entryId = aMessage.Int1();
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4107
	
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4108
	ReadBufferL(aMessage, 2, iBuffer);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4109
		
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4110
	RPointerArray<CHeaderFields> fieldPairList;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4111
	CleanupClosePushL(fieldPairList);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4112
	
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4113
	TMsvPackedHeaderData headerData(iBuffer);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4114
	headerData.UnpackL(fieldPairList);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4115
	
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4116
	TRAPD(err, iMsvServer.MessageDBAdapter().CreateHeaderEntryL(mtmTypeUid, entryId, fieldPairList));
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4117
	fieldPairList.ResetAndDestroy();
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4118
	CleanupStack::PopAndDestroy();
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4119
	aMessage.Complete(err); 
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4120
	}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4121
	
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4122
	
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4123
	
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4124
	
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4125
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4126
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4127
/*
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4128
 * LoadHeaderEntryL()
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4129
 *
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4130
 * This function loads the header entry from the database
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4131
 * and returns to the client.
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4132
 */ 
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4133
void CMsvServerSession::LoadHeaderEntryL(const RMessage2 &aMessage)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4134
	{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4135
	// Check for capability.
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4136
	if(!aMessage.HasCapability(ECapabilityReadUserData))
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4137
		{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4138
		// Client missing capabilities - emit diagnostics and leave...
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4139
		User::LeaveIfError(PlatSec::CapabilityCheckFail(aMessage, ECapabilityReadUserData, __PLATSEC_DIAGNOSTIC_STRING("Checked by CMsvServerSession::LoadHeaderEntryL")));
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4140
		}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4141
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4142
	// Capability check is fine. Proceed.
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4143
	TUid mtmTypeUid = TUid::Uid(aMessage.Int0());
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4144
	TMsvId entryId = aMessage.Int1();
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4145
	
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4146
	RPointerArray<CHeaderFields> fieldPairList;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4147
	CleanupClosePushL(fieldPairList);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4148
	
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4149
	TRAPD(err, iMsvServer.MessageDBAdapter().LoadHeaderEntryL(mtmTypeUid, entryId, fieldPairList));
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4150
	if(KErrNone == err)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4151
		{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4152
		TMsvPackedHeaderData headerData(iBuffer);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4153
		err = headerData.Pack(fieldPairList);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4154
		while (err != KErrNone)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4155
			{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4156
			// increase the size of the buffer and try again
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4157
			iBuffer->Des().SetLength(0); // to avoid copying contents
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4158
			iBuffer = iBuffer->ReAllocL(iBuffer->Des().MaxSize() + KMsvSessionBufferLength);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4159
			err = headerData.Pack(fieldPairList);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4160
			}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4161
		WriteBufferL(aMessage, 2);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4162
		}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4163
	fieldPairList.ResetAndDestroy();
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4164
	CleanupStack::PopAndDestroy();
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4165
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4166
	aMessage.Complete(err);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4167
	}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4168
	
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4169
	
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4170
	
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4171
	
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4172
	
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4173
	
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4174
/*
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4175
 * DeleteHeaderEntryL()
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4176
 *
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4177
 * This function deletes the header entry from the database.
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4178
 */	 
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4179
void CMsvServerSession::DeleteHeaderEntryL(const RMessage2 &aMessage)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4180
	{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4181
	// Check for capability.
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4182
	if(!aMessage.HasCapability(ECapabilityWriteUserData))
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4183
		{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4184
		// Client missing capabilities - emit diagnostics and leave...
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4185
		User::LeaveIfError(PlatSec::CapabilityCheckFail(aMessage, ECapabilityWriteUserData, __PLATSEC_DIAGNOSTIC_STRING("Checked by CMsvServerSession::DeleteHeaderEntryL")));
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4186
		}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4187
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4188
	TUid mtmTypeUid = TUid::Uid(aMessage.Int0());
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4189
	TMsvId entryId = aMessage.Int1();
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4190
	
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4191
	TRAPD(err, iMsvServer.MessageDBAdapter().DeleteHeaderEntryL(mtmTypeUid, entryId));
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4192
	aMessage.Complete(err);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4193
	}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4194
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4195
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4196
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4197
	
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4198
	
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4199
	
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4200
/*
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4201
 * UpdateHeaderEntryL()
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4202
 *
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4203
 * This function udpates the header entry in the database.
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4204
 */ 
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4205
void CMsvServerSession::UpdateHeaderEntryL(const RMessage2 &aMessage)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4206
	{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4207
	// Check for capability.
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4208
	if(!aMessage.HasCapability(ECapabilityWriteUserData))
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4209
		{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4210
		// Client missing capabilities - emit diagnostics and leave...
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4211
		User::LeaveIfError(PlatSec::CapabilityCheckFail(aMessage, ECapabilityWriteUserData, __PLATSEC_DIAGNOSTIC_STRING("Checked by CMsvServerSession::UpdateHeaderEntryL")));
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4212
		}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4213
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4214
	TUid mtmTypeUid = TUid::Uid(aMessage.Int0());
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4215
	TMsvId entryId = aMessage.Int1();
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4216
	
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4217
	ReadBufferL(aMessage, 2, iBuffer);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4218
		
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4219
	RPointerArray<CHeaderFields> fieldPairList;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4220
	CleanupClosePushL(fieldPairList);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4221
	
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4222
	TMsvPackedHeaderData headerData(iBuffer);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4223
	headerData.UnpackL(fieldPairList);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4224
	
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4225
	TRAPD(err, iMsvServer.MessageDBAdapter().UpdateHeaderEntryL(mtmTypeUid, entryId, fieldPairList));
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4226
	fieldPairList.ResetAndDestroy();
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4227
	CleanupStack::PopAndDestroy();
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4228
	aMessage.Complete(err);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4229
	}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4230
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4231
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4232
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4233
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4234
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4235
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4236
/*
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4237
 * DoesAnyStoreExists()
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4238
 *
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4239
 * This function checks if the store (header/body) exists 
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4240
 * for a give metadata entry.
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4241
 */ 
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4242
void CMsvServerSession::DoesAnyStoreExists(const RMessage2 &aMessage)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4243
	{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4244
	TMsvId entryId = aMessage.Int0();
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4245
	TUid mtmTypeUid = TUid::Uid(aMessage.Int1());
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4246
	
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4247
	TBool isStoreExists = EFalse;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4248
	TRAPD(err, isStoreExists = iMsvServer.MessageDBAdapter().DoesAnyStoreExistsL(entryId, mtmTypeUid));
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4249
	if(err)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4250
		{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4251
		aMessage.Complete(EFalse);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4252
		}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4253
	else
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4254
		{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4255
		aMessage.Complete(isStoreExists);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4256
		}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4257
	}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4258
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4259
void CMsvServerSession::DoesHeaderTableExist(const RMessage2 aMessage)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4260
	{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4261
	TUid mtmTypeUid = TUid::Uid(aMessage.Int0());
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4262
	
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4263
	TBool doesHeaderExists = EFalse;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4264
	TRAPD(err, doesHeaderExists = iMsvServer.MessageDBAdapter().IsHeaderTableExistsL(mtmTypeUid));
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4265
	if(err)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4266
		{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4267
		aMessage.Complete(EFalse);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4268
		}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4269
	else
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4270
		{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4271
		aMessage.Complete(doesHeaderExists);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4272
		}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4273
	}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4274
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4275
/***************************************Converter API's***************************/
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4276
/*
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4277
 GetConvertibleDriveListL()
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4278
 Fetches a list of drives with message store unsupported	
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4279
 
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4280
 @param aMessage: RMessage2 representing client request and containing request data.
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4281
 @return None
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4282
 */
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4283
void CMsvServerSession::GetConvertibleDriveListL(const RMessage2 &aMessage)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4284
	{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4285
	// capability check
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4286
	if(!aMessage.HasCapability(ECapabilityReadDeviceData))
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4287
		{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4288
		// Client missing capabilities - emit diagnostics and leave...
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4289
		User::LeaveIfError(PlatSec::CapabilityCheckFail(aMessage, ECapabilityReadDeviceData, __PLATSEC_DIAGNOSTIC_STRING("Checked by CMsvServerSession::GetConvertibleDriveListL")));
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4290
		}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4291
	
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4292
	
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4293
	CMsvPreferredDriveList *driveList = CMsvPreferredDriveList::GetDriveList();
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4294
	RArray<TDriveNumber> driveNumList;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4295
	CleanupClosePushL(driveNumList);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4296
	
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4297
	for(TInt index=0; index<driveList->Count(); index++)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4298
		{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4299
		if(EMsvMessageStoreNotSupportedStatus == (*driveList)[index].status)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4300
			{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4301
			driveNumList.AppendL((*driveList)[index].driveNum);	 
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4302
			}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4303
		}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4304
	
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4305
	TMsvPackedDriveIdOperation driveOp(iBuffer);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4306
	User::LeaveIfError(driveOp.Pack(driveNumList));
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4307
	WriteBufferL(aMessage, 0);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4308
	
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4309
	CleanupStack::PopAndDestroy();	  // driveNumList
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4310
	aMessage.Complete(KErrNone);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4311
	}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4312
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4313
/*
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4314
 ConvertMessageStoreL()
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4315
 Initiates message store conversion on a drive. if the conversion is active on a drive
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4316
 than this request is queued and completed later.
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4317
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4318
 @param aMessage: RMessage2 representing client request and containing request data.
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4319
 @return None
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4320
 */
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4321
void CMsvServerSession::ConvertMessageStoreL(const RMessage2 &aMessage)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4322
	{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4323
	// capability check
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4324
	if(!aMessage.HasCapability(ECapabilityWriteDeviceData))
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4325
		{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4326
		// Client missing capabilities - emit diagnostics and leave...
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4327
		User::LeaveIfError(PlatSec::CapabilityCheckFail(aMessage, ECapabilityWriteDeviceData, __PLATSEC_DIAGNOSTIC_STRING("Checked by CMsvServerSession::ConvertMessageStoreL")));
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4328
		}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4329
	
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4330
	/*Instantiate the converter waiter thread. If it is already active, than the existing instance is returned
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4331
	  Else a new instance is created and returned. Singleton Pattern   */
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4332
	  
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4333
	iConverterWaiter=CMsvConverterWaiter::InstanceL(&iMsvServer);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4334
		
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4335
	if(!iConverterWaiter->isRunningMessageStoreConverter()) 
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4336
		{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4337
		iConverterWaiter->StartMessageStoreConversionL(aMessage,EFalse);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4338
		}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4339
	else 
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4340
		{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4341
		// Queue the request if the drive is already not present
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4342
		iConverterWaiter->QueueConversionRequestL(aMessage);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4343
		}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4344
	}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4345
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4346
/*
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4347
 CancelConversionRequestL()
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4348
 Cancels conversion request for a drive.
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4349
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4350
 @param aMessage: RMessage2 representing client request and containing request data.
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4351
 @return None
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4352
 */
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4353
void CMsvServerSession::CancelConversionRequestL(const RMessage2 &aMessage)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4354
	{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4355
	if(iConverterWaiter)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4356
		{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4357
		iConverterWaiter->CancelConversionL(aMessage);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4358
		}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4359
	else
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4360
		{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4361
		aMessage.Complete(KErrNotFound);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4362
		}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4363
	}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4364
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4365
/*
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4366
 GetConversionStatus()
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4367
 Gets the conversion status for a drive.
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4368
 
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4369
 @param aMessage: RMessage2 representing client request and containing request data.
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4370
 @return None
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4371
 */ 
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4372
void CMsvServerSession::GetConversionStatus(const RMessage2 &aMessage)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4373
	{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4374
	if(iConverterWaiter)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4375
		{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4376
		iConverterWaiter->GetConversionStatus(aMessage);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4377
		}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4378
	else
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4379
		{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4380
		aMessage.Complete(KErrNotFound);
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4381
		}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4382
	}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4383
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4384
TBool CMsvServerSession::FoundUnSupportedDrives()
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4385
	{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4386
	CMsvPreferredDriveList *driveList = CMsvPreferredDriveList::GetDriveList();
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4387
	for(TInt index=0; index<driveList->Count(); index++)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4388
		{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4389
		if(EMsvMessageStoreNotSupportedStatus == (*driveList)[index].status)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4390
			{
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4391
			return ETrue;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4392
			}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4393
		}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4394
	return EFalse;
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4395
	
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4396
	}
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4397
#endif	  // #if (defined SYMBIAN_MESSAGESTORE_HEADER_BODY_USING_SQLDB)
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4398
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4399
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4400
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4401
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4402
bde600d88860 Revert last code drop.
Pat Downey <patd@symbian.org>
parents:
diff changeset
  4403