diff -r 000000000000 -r af10295192d8 tcpiputils/dnd/src/dndexe.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tcpiputils/dnd/src/dndexe.cpp Tue Jan 26 15:23:49 2010 +0200 @@ -0,0 +1,122 @@ +// Copyright (c) 2004-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: +// dnd.cpp - name resolver daemon main module +// + +#include "demon.h" +#include "inet6log.h" +#include + +//Logging name for the DND +#define DND_COMPNAME "dnd" + +// +// class CDndMain +// +class CDndMain : public CBase, public MDemonMain + { +public: + ~CDndMain(); + void ConstructL(); + void Write(const TDesC &aDes); + void WriteList(const TDesC &aFmt, VA_LIST aList); + TInt CheckResult(const TDesC &aText, TInt aResult); + + MDemonEngine *iModel; + + +private: +#ifdef _LOG + TBuf<1024> iBuf; //< A work buffer for formatting messages (WriteList) +#endif + __CFLOG_DECLARATION_MEMBER; + }; + + +// ************** +// "Main Program" +// ************** +// + + +CDndMain::~CDndMain() + { + delete iModel; + __CFLOG_CLOSE; + __CFLOG_DELETE; + } + + +void CDndMain::ConstructL() + { + __CFLOG_CREATEL; + __CFLOG_OPEN; + iModel = MDemonEngine::NewL(*this); + iModel->ConstructL(); + } + + +void CDndMain::Write(const TDesC &aMsg) + { +#ifndef _LOG + (void)aMsg; // ..just to silence compiler warning +#else + Log::Write(aMsg); +#endif + } + +void CDndMain::WriteList(const TDesC &aFmt, VA_LIST aList) + { +#ifndef _LOG + (void)aFmt; // ..just to silence compiler warning + (void)aList; +#else + iBuf.FormatList(aFmt, aList); + Log::Write(iBuf); +#endif + } + +TInt CDndMain::CheckResult(const TDesC &/*aText*/, TInt aResult) + { + return aResult; + } + +static void DaemonL() + { + CDndMain *main = new (ELeave) CDndMain; + CleanupStack::PushL(main); + CActiveScheduler::Install(new (ELeave) CActiveScheduler); + main->ConstructL(); + CActiveScheduler::Start(); + CleanupStack::PopAndDestroy(); + delete CActiveScheduler::Current(); + } + +#ifdef __DLL__ +GLDEF_C TInt E32Dll(TDllReason /*aReason*/) + { + return(KErrNone); + } +#endif + +EXPORT_C TInt E32Main() + { + _LIT(KDnd,"DND"); + (void)RThread::RenameMe(KDnd); + CTrapCleanup* cleanup = CTrapCleanup::New(); // get clean-up stack + TRAPD(error, DaemonL()); + delete cleanup; // destroy clean-up stack + __ASSERT_ALWAYS(!error,User::Panic(KDnd,error)); + return KErrNone; + }