diff -r 965bb42340b2 -r 64200268cac2 mtpdataproviders/mtpimagedp/mediasyncserver/src/rmediasyncserver.cpp --- a/mtpdataproviders/mtpimagedp/mediasyncserver/src/rmediasyncserver.cpp Thu Sep 09 18:17:36 2010 +0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,262 +0,0 @@ -// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "Eclipse Public License v1.0" -// which accompanies this distribution, and is available -// at the URL "http://www.eclipse.org/legal/epl-v10.html". -// -// Initial Contributors: -// Nokia Corporation - initial contribution. -// -// Contributors: -// -// Description: -// - -/** - @file - @internalTechnology -*/ - -#include - -#include "rmediasyncserver.h" - -const TInt KDefGlobalSharedHeapSize = 64 * 1024;//64K byte memory - -//----------------------------------------------------------------------------- -// -//----------------------------------------------------------------------------- -// -EXPORT_C RMediaSyncServer::RMediaSyncServer() : - iHasSharedHeap(EFalse) - { - } - -EXPORT_C TInt RMediaSyncServer::Startup() - { - const TUidType serverUid(KNullUid, KNullUid, KMediaSyncServerUid3); - - // Create the server process. - RProcess server; - TInt err(server.Create(KMediaSyncServerName, KNullDesC, serverUid)); - - // Loading failed. - if ( err != KErrNone ) - { - return err; - } - - TRequestStatus status; - server.Rendezvous(status); - - if (status != KRequestPending) - { - server.Kill(0); // abort startup - server.Close(); - return KErrGeneral; - } - else - { - server.Resume(); // Logon OK - start the server. - } - - User::WaitForRequest(status); - server.Close(); - - return status.Int(); - } - -EXPORT_C void RMediaSyncServer::Shutdown() - { - SendReceive(EMediaSyncClientShutdown); - } - -EXPORT_C TInt RMediaSyncServer::Connect() - { - TFindProcess findMdEServer(KFinderMSSName); - TFullName name; - TInt result = findMdEServer.Next(name); - if(result == KErrNotFound) - { - // Server is not running - result = Startup(); - } - else if(KErrNone == result) - { - RProcess mss; - result = mss.Open(findMdEServer, EOwnerProcess); - if((result != KErrNone) && (mss.ExitReason() != KErrNone)) - { - result = Startup(); - } - mss.Close(); - } - - if(KErrNone == result) - { - TVersion version(KMediaSyncServerVersionMajor, KMediaSyncServerVersionMinor, 0); - result = CreateSession( KMediaSyncServerName, version ); - } - - return result; - } - -EXPORT_C void RMediaSyncServer::Close() - { - RSessionBase::Close(); - - if (iHasSharedHeap) - { - iGlobalSharedHeap.Close(); - iHasSharedHeap = EFalse; - } - } - -EXPORT_C TInt RMediaSyncServer::NeedFullSync(TBool& aNeedFullSync) - { - TPtr8 finishPtr((TUint8*)&aNeedFullSync, sizeof(TBool), sizeof(TBool)); - - TIpcArgs args; - args.Set(0, &finishPtr); - - return SendReceive(EMediaSyncClientNeedFullSync, args); - } - -EXPORT_C TInt RMediaSyncServer::ClearFullSync() - { - return SendReceive(EMediaSyncClientClearFullSync); - } - -EXPORT_C void RMediaSyncServer::GetChangesL(CMediaSyncDataReader*& aDataReader, TBool& aIsFinished, TRequestStatus& aStatus, TInt aMaxFetchCount) - { - if (!iHasSharedHeap) - { - User::LeaveIfError(GetGlobalSharedHeapHandle()); - iHasSharedHeap = ETrue; - } - - TPtr8 finishPtr((TUint8*)&aIsFinished, sizeof(TBool), sizeof(TBool)); - - TIpcArgs args; - args.Set(0, aMaxFetchCount); - args.Set(1, &finishPtr); - - TInt ret = SendReceive(EMediaSyncClientGetChanges, args); - User::LeaveIfError(ret); - - aDataReader = CMediaSyncDataReader::NewL(iGlobalSharedHeap); - - TRequestStatus* pClient = &aStatus; - User::RequestComplete(pClient, ret); - } - -EXPORT_C void RMediaSyncServer::RemoveAllRecords() - { - SendReceive(EMediaSyncClientRemoveAllRecords); - RelaseGlobalSharedHeap(); - return; - } - -EXPORT_C TInt RMediaSyncServer::EnableMonitor() - { - return SendReceive(EMediaSyncClientEnableMonitor); - } - -EXPORT_C TInt RMediaSyncServer::DisableMonitor() - { - return SendReceive(EMediaSyncClientDisableMonitor); - } - -TInt RMediaSyncServer::GetGlobalSharedHeapHandle() - { - TIpcArgs args; - args.Set(0, KDefGlobalSharedHeapSize); - - TInt ret = SendReceive(EMediaSyncClientGetGSHHandle, args); - ret = iGlobalSharedHeap.SetReturnedHandle(ret); - - return ret; - } - -void RMediaSyncServer::RelaseGlobalSharedHeap() - { - iGlobalSharedHeap.Close(); - iHasSharedHeap = EFalse; - } - -CMediaSyncDataReader* CMediaSyncDataReader::NewL(const RChunk& aChunk) - { - CMediaSyncDataReader* self = new(ELeave) CMediaSyncDataReader(); - CleanupStack::PushL(self); - self->ConstructL(aChunk); - CleanupStack::Pop(self); - return self; - } - -EXPORT_C CMediaSyncDataReader::~CMediaSyncDataReader() - { - - } - -CMediaSyncDataReader::CMediaSyncDataReader() : - iOffset(0), - iCurrentIdx(0) - { - - } - -void CMediaSyncDataReader::ConstructL(const RChunk& aChunk) - { - TUint8* base = aChunk.Base(); - User::LeaveIfNull(base); - - iHeaderInfo = reinterpret_cast(base); - iReadBase = base + sizeof(TDataHeaderInfo); - } - -EXPORT_C TInt CMediaSyncDataReader::Count() - { - return iHeaderInfo->iCount; - } - -EXPORT_C TBool CMediaSyncDataReader::HasNext() - { - return (iCurrentIdx < iHeaderInfo->iCount); - } - -EXPORT_C void CMediaSyncDataReader::GetNextL(TUint32& aObjectId, TUint8& aType, TPtr16& aUri) - { - if (iCurrentIdx < iHeaderInfo->iCount) - { - //read object id - Mem::Copy(&aObjectId, (iReadBase + iOffset), sizeof(TUint32)); - iOffset += sizeof(TUint32); - - //read notification type - Mem::Copy(&aType, (iReadBase + iOffset), sizeof(TUint8)); - iOffset += sizeof(TUint8); - - //read uri length - TUint8 uriLen = 0; - Mem::Copy(&uriLen, (iReadBase + iOffset), sizeof(TUint8)); - iOffset += sizeof(TUint8); - if (uriLen > 0) - { - //read uri content - TUint16* ptr = (TUint16*)(iReadBase + iOffset); - aUri.Set(ptr, uriLen, uriLen); - iOffset += (uriLen * sizeof(TUint16)); - } - else - { - aUri.Set(NULL, 0, 0); - } - - ++iCurrentIdx; - } - else - { - User::Leave(KErrOverflow); - } - }