messagingfw/msgsrvnstore/server/src/MSVOPERT.CPP
author hgs
Wed, 03 Nov 2010 22:41:46 +0530
changeset 62 db3f5fa34ec7
permissions -rw-r--r--
201044_02
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
62
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
     1
// Copyright (c) 1998-2009 Nokia Corporation and/or its subsidiary(-ies).
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
     2
// All rights reserved.
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
     3
// This component and the accompanying materials are made available
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
     4
// under the terms of "Eclipse Public License v1.0"
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
     5
// which accompanies this distribution, and is available
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
     6
// at the URL "http://www.eclipse.org/legal/epl-v10.html".
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
     7
//
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
     8
// Initial Contributors:
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
     9
// Nokia Corporation - initial contribution.
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
    10
//
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
    11
// Contributors:
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
    12
//
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
    13
// Description:
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
    14
//
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
    15
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
    16
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
    17
#include <e32std.h>
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
    18
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
    19
#include "MSVSTD.H"
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
    20
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
    21
#include "MTSR.H"
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
    22
#include "MSVENTRY.H"
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
    23
#include "MSVSERV.H"
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
    24
#include "MSVROPS.H"
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
    25
#include "MSVPANIC.H"
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
    26
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
    27
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
    28
//**********************************
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
    29
// CMsvServerOperation
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
    30
//**********************************
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
    31
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
    32
CMsvServerOperation::CMsvServerOperation(const RMessage2& aMessage, TMsvOp aId, TUid aMtmUid, TMsvId aServiceId, TInt aSessionId)
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
    33
: CActive(EPriorityStandard), iMessage(aMessage), iId(aId), iMtmUid(aMtmUid), iServiceId(aServiceId), iSessionId(aSessionId), iState(EMsvOperationNull)
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
    34
//
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
    35
//
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
    36
//
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
    37
	{
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
    38
	__DECLARE_NAME(_S("CMsvServerOperation"));
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
    39
	}
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
    40
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
    41
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
    42
CMsvServerOperation::~CMsvServerOperation()
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
    43
//
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
    44
//
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
    45
//
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
    46
	{
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
    47
	}
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
    48
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
    49
/** 
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
    50
This method should be overridden by SystemProgress() in other server MTMs to populate the
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
    51
TMsvSystemProgress structure.
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
    52
@param aOutSysProg The TMsvSystemProgress structure to be populated by the server
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
    53
@return KErrExtensionNotSupported
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
    54
*/
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
    55
TInt CMsvServerOperation::SystemProgress(TMsvSystemProgress& /*aSysProgress*/)
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
    56
	{
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
    57
	return KErrExtensionNotSupported;
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
    58
	}
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
    59
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
    60
//**********************************
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
    61
// CMsvMtmOperation
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
    62
//**********************************
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
    63
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
    64
CMsvMtmOperation* CMsvMtmOperation::NewL(const RMessage2& aMessage, TMsvOp aId, TUid aMtmUid, TMsvId aServiceId, TInt aSessionId, MMsvOperationObserver& aOpObserver)
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
    65
//
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
    66
//
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
    67
//
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
    68
	{
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
    69
	CMsvMtmOperation* self = new(ELeave) CMsvMtmOperation(aMessage, aId, aMtmUid, aServiceId, aSessionId, aOpObserver);
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
    70
	CleanupStack::PushL(self);
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
    71
	self->ConstructL();
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
    72
	CleanupStack::Pop();
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
    73
	return self;
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
    74
	}
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
    75
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
    76
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
    77
CMsvMtmOperation::CMsvMtmOperation(const RMessage2& aMessage, TMsvOp aId, TUid aMtmUid, TMsvId aServiceId, TInt aSessionId, MMsvOperationObserver& aOpObserver)
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
    78
: CMsvServerOperation(aMessage, aId, aMtmUid, aServiceId, aSessionId), iOpType(EMtmOpNone), iOpObserver(aOpObserver)
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
    79
//
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
    80
//
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
    81
//
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
    82
	{
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
    83
	__DECLARE_NAME(_S("CMsvMtmOperation"));
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
    84
	}
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
    85
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
    86
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
    87
void CMsvMtmOperation::ConstructL()
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
    88
//
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
    89
//
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
    90
//
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
    91
	{
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
    92
	CActiveScheduler::Add(this);
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
    93
	}
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
    94
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
    95
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
    96
void CMsvMtmOperation::Start(CBaseServerMtm& aServerMtm, TBool aCapabilityCheck)
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
    97
//
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
    98
//
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
    99
//
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
   100
	{
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
   101
	iServerMtm = &aServerMtm;
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
   102
	TRAPD(leave, DoStartL(aCapabilityCheck));
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
   103
	if (leave)
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
   104
		{
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
   105
		iStatus=KRequestPending;
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
   106
		TRequestStatus* st = &iStatus;
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
   107
		User::RequestComplete(st, leave);
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
   108
		}
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
   109
	SetActive();
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
   110
	}
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
   111
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
   112
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
   113
void CMsvMtmOperation::Failed(TInt aError)
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
   114
//
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
   115
//
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
   116
//
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
   117
	{
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
   118
	iMessage.Complete(aError);
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
   119
	SetState(EMsvOperationFailed);
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
   120
	}
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
   121
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
   122
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
   123
void CMsvMtmOperation::DoStartL(TBool aCapabilityCheck)
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
   124
//
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
   125
//
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
   126
//
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
   127
	{
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
   128
#if (defined SYMBIAN_USER_PROMPT_SERVICE)	
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
   129
	iServerMtm->ClientThreadInfo(iThreadId, aCapabilityCheck);
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
   130
#else
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
   131
	// For versions which don't support SYMBIAN_USER_PROMPT_SERVICE, 
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
   132
	// this is needed to stop compiler warnings .
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
   133
	aCapabilityCheck = aCapabilityCheck;	
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
   134
#endif	
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
   135
	switch (iOpType)
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
   136
		{
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
   137
		case EMtmOpCopyFromLocal:
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
   138
			iServerMtm->CopyFromLocalL(*iSelection, iIntParam, iStatus);
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
   139
			break;
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
   140
		case EMtmOpCopyToLocal:
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
   141
			iServerMtm->CopyToLocalL(*iSelection, iIntParam, iStatus);
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
   142
			break;
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
   143
		case EMtmOpCopyWithinService:
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
   144
			iServerMtm->CopyWithinServiceL(*iSelection, iIntParam, iStatus);
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
   145
			break;
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
   146
		case EMtmOpMoveFromLocal:
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
   147
			iServerMtm->MoveFromLocalL(*iSelection, iIntParam, iStatus);
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
   148
			break;
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
   149
		case EMtmOpMoveToLocal:
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
   150
			iServerMtm->MoveToLocalL(*iSelection, iIntParam, iStatus);
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
   151
			break;
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
   152
		case EMtmOpMoveWithinService:
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
   153
			iServerMtm->MoveWithinServiceL(*iSelection, iIntParam, iStatus);
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
   154
			break;
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
   155
		case EMtmOpDeleteAll:
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
   156
			iServerMtm->DeleteAllL(*iSelection, iStatus);
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
   157
			break;
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
   158
		case EMtmOpCreate:
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
   159
			iServerMtm->CreateL(*iEntry, iStatus);
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
   160
			break;
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
   161
		case EMtmOpChange:
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
   162
			iServerMtm->ChangeL(*iEntry, iStatus);
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
   163
			break;
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
   164
		case EMtmOpCommand:
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
   165
			iServerMtm->StartCommandL(*iSelection, iIntParam, *iDesParam, iStatus);
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
   166
			break;
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
   167
        case EMtmOpChangeEntries:
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
   168
            iServerMtm->ChangeEntriesL(*iSelection,iIntParam,iStatus);
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
   169
            break;
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
   170
		default:
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
   171
			PanicServer(EMsvUnknownMtmOpType);
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
   172
			break;
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
   173
		}
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
   174
	}
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
   175
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
   176
CMsvMtmOperation::~CMsvMtmOperation()
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
   177
//
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
   178
//
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
   179
//
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
   180
	{
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
   181
	Cancel();
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
   182
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
   183
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
   184
	switch (State())
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
   185
		{
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
   186
		case EMsvOperationQueued:
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
   187
			__ASSERT_DEBUG(iServerMtm==NULL, PanicServer(EMsvDeletingMtmOperation1));
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
   188
			iMessage.Complete(KErrCancel);
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
   189
			iOpObserver.OperationCancelled(*this);
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
   190
			break;
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
   191
		case EMsvOperationCompleted:
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
   192
			__ASSERT_DEBUG(iServerMtm, PanicServer(EMsvDeletingMtmOperation2));
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
   193
			iOpObserver.OperationCompleted(ServiceId(), Id()); 
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
   194
			break;
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
   195
		default:
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
   196
			__ASSERT_DEBUG(State()!=EMsvOperationRunning, PanicServer(EMsvDeletingMtmOperation3));
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
   197
			break;
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
   198
		}
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
   199
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
   200
	delete iEntry;
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
   201
	delete iSelection;
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
   202
	delete iBuf1;
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
   203
	delete iBuf2;
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
   204
	delete iDesParam;
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
   205
	}
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
   206
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
   207
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
   208
void CMsvMtmOperation::DoCancel()
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
   209
//
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
   210
//
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
   211
//
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
   212
	{
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
   213
	__ASSERT_DEBUG(State()==EMsvOperationRunning, PanicServer(EMsvCancellingNonRunningOp));
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
   214
	iServerMtm->Cancel();
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
   215
	// inform client of the cancellation (or completion)
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
   216
	iMessage.Complete(iStatus.Int());
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
   217
	SetState(EMsvOperationCompleted);
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
   218
	}
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
   219
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
   220
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
   221
void CMsvMtmOperation::RunL()
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
   222
//
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
   223
//
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
   224
//
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
   225
	{
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
   226
	__ASSERT_DEBUG(State()==EMsvOperationRunning, PanicServer(EMsvCompletedNonRunningOp));
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
   227
	// inform client of the completion
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
   228
	iMessage.Complete(iStatus.Int());
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
   229
	SetState(EMsvOperationCompleted);
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
   230
	}
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
   231
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
   232
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
   233
const TDesC8& CMsvMtmOperation::Progress()
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
   234
//
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
   235
//
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
   236
//
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
   237
	{
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
   238
	__ASSERT_DEBUG(iServerMtm, PanicServer(EMsvProgressOnQueuedOp));
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
   239
	return iServerMtm->Progress();
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
   240
	}
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
   241
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
   242
/** 
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
   243
Call one of the server MTMs to populate the TMsvSystemProgress structure.
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
   244
@param aOutSysProg The TMsvSystemProgress structure to be populated by the server
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
   245
@return error if SystemProgress method fails
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
   246
*/
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
   247
TInt CMsvMtmOperation::SystemProgress(TMsvSystemProgress& aSysProgress)
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
   248
//
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
   249
//
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
   250
//
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
   251
	{
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
   252
	__ASSERT_DEBUG(iServerMtm, PanicServer(EMsvSystemProgressOnQueuedOp));
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
   253
	return iServerMtm->SystemProgress(aSysProgress);
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
   254
	}
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
   255
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
   256
void CMsvMtmOperation::StoreParametersL(TMtmOpType aOpType, const TMsvEntry& aNewEntry)
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
   257
//
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
   258
//
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
   259
//
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
   260
	{
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
   261
	iOpType = aOpType;
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
   262
	iEntry = new (ELeave) TMsvEntry(aNewEntry);
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
   263
	iBuf1 = HBufC::NewL(iEntry->iDescription.Length());
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
   264
	iBuf1->Des() = iEntry->iDescription;
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
   265
	iEntry->iDescription.Set(iBuf1->Des());
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
   266
	iBuf2 = HBufC::NewL(iEntry->iDetails.Length());
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
   267
	iBuf2->Des() = iEntry->iDetails;
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
   268
	iEntry->iDetails.Set(iBuf2->Des());
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
   269
	}
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
   270
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
   271
void CMsvMtmOperation::StoreParameters(TMtmOpType aOpType, CMsvEntrySelection* aSelection, TInt aIntParam, HBufC8* aDesParam)
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
   272
//
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
   273
//
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
   274
//
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
   275
	{
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
   276
	iOpType = aOpType;
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
   277
	iSelection = aSelection;
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
   278
	iIntParam = aIntParam;
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
   279
	iDesParam = aDesParam;
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
   280
	}
db3f5fa34ec7 201044_02
hgs
parents:
diff changeset
   281