diff -r 000000000000 -r 8e480a14352b messagingfw/sendas/test/sendastextnotifier/src/DummyServer.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/messagingfw/sendas/test/sendastextnotifier/src/DummyServer.cpp Mon Jan 18 20:36:02 2010 +0200 @@ -0,0 +1,150 @@ + +// Copyright (c) 2005-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: +// + +#include +#include +#include "DummyServer.h" + +// The dummy server.. +CDummyServer* CDummyServer::NewLC() + { + CDummyServer* self = new (ELeave) CDummyServer(); + CleanupStack::PushL(self); + self->ConstructL(); + return self; + } + + +// Second-stage constructor. +void CDummyServer::ConstructL() + { + StartL(KDummyServerName); + } + +CDummyServer::CDummyServer() +: CServer2(CActive::EPriorityStandard) + { + } + +CDummyServer::~CDummyServer() + { + + } + +void CDummyServer::StopServer() + { + CActiveScheduler::Stop(); + } + +CSession2* CDummyServer::NewSessionL(const TVersion& aVersion,const RMessage2& /*aMessage*/) const + { + TVersion ver(KCountServMajorVersionNumber,KCountServMinorVersionNumber,KCountServBuildVersionNumber); + + if (!User::QueryVersionSupported(ver,aVersion)) + { + User::Leave(KErrNotSupported); + } + return new (ELeave) CDummyServerSession; + } + +CDummyServerSession::CDummyServerSession() + { + } +CDummyServerSession::~CDummyServerSession() + { + const CDummyServer* observer = static_cast(Server()); + //Lets take out constness of this pointer + CDummyServer* observer1 = const_cast(observer); + //Call the non-const member function + observer1->StopServer(); + } + + +void CDummyServerSession::ServiceL(const RMessage2& aMessage) + { + + TRAPD(err,DispatchMessageL(aMessage)); + aMessage.Complete(err); + } + + +void CDummyServerSession::DispatchMessageL(const RMessage2& aMessage) + { + if(aMessage.Function() == EServGetTMsvEntry) + { + GetTMsvEntryL(aMessage); + return; + } + } + + +// Get the TMsvEntry of the message whose TMsvId is passed from the client.. +void CDummyServerSession::GetTMsvEntryL(const RMessage2& aMessage) + { + CDummyObserver* ob = new(ELeave) CDummyObserver; + CleanupStack::PushL(ob); + + TPckgBuf idBuf; + idBuf = aMessage.Int0(); + + CMsvSession* session = CMsvSession::OpenSyncL(*ob); + CleanupStack::PushL(session); + + TMsvId entryId = idBuf(); + CMsvEntry* cEntry = session->GetEntryL(entryId); + CleanupStack::PushL(cEntry); + + TPckgBuf pckg = cEntry->Entry(); + aMessage.WriteL(1,pckg); + + CleanupStack::PopAndDestroy(3,ob);//cEntry,session,ob + } + + +void StartDummyServerL() + { + CActiveScheduler* scheduler = new (ELeave) CActiveScheduler(); + CleanupStack::PushL(scheduler); + CActiveScheduler::Install(scheduler); + + // create the server (leave it on the cleanup stack) + CDummyServer::NewLC(); + + // naming the server thread after the server helps to debug panics + User::LeaveIfError(User::RenameProcess(KDummyServerName)); + + // initialisation complete, now signal the client. + RProcess::Rendezvous(KErrNone); + + CActiveScheduler::Start(); + CleanupStack::PopAndDestroy(2, scheduler); // server, scheduler + } + +TInt E32Main() + { + __UHEAP_MARK; + CTrapCleanup* cleanup = CTrapCleanup::New(); + TInt err = KErrNoMemory; + if (cleanup) + { + TRAP(err, StartDummyServerL()); + delete cleanup; + } + + __UHEAP_MARKEND; + return err; + } +