diff -r 000000000000 -r 7f656887cf89 plugins/networking/nullnif/src/nullnif.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/plugins/networking/nullnif/src/nullnif.cpp Wed Jun 23 15:52:26 2010 +0100 @@ -0,0 +1,159 @@ +// nullnif.cpp +// +// Copyright (c) 2009 - 2010 Accenture. All rights reserved. +// This component and the accompanying materials are made available +// under the terms of the "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: +// Accenture - Initial contribution +// + +#include +#include +#include + + +NONSHARABLE_CLASS(CNullNif) : public CNifIfLink + { +public: + CNullNif(CNifIfFactory& aFactory); + ~CNullNif(); + virtual void BindL(TAny *aId); + virtual TInt State(); + virtual TInt Control(TUint aLevel,TUint aName,TDes8& aOption, TAny* aSource=0); + virtual TInt Send(RMBufChain& aPdu, TAny* aSource=0); + virtual TInt Start(); + virtual void Stop(TInt aReason, MNifIfNotify::TAction aAction); + virtual CNifIfBase* GetBinderL(const TDesC& aName); + virtual void Info(TNifIfInfo& aInfo) const; + virtual TInt Notification(TAgentToNifEventType aEvent, void* aInfo); + virtual void Restart(CNifIfBase* aIf); + static void FillInInfo(TNifIfInfo& aInfo); + }; + +CNullNif::CNullNif(CNifIfFactory& aFactory) + : CNifIfLink(aFactory) + { + } + +CNullNif::~CNullNif() + { + } + +void CNullNif::Info(TNifIfInfo& aInfo) const + { + FillInInfo(aInfo); + } + +void CNullNif::FillInInfo(TNifIfInfo& aInfo) + { + aInfo.iVersion = TVersion(0, 0, 0); + aInfo.iFlags = KNifIfIsBase | KNifIfUsesNotify | KNifIfIsLink | KNifIfCreatedByFactory; + _LIT(KNullNif, "nullnif"); + aInfo.iName = KNullNif; + aInfo.iProtocolSupported = KProtocolInetIp; + } + +void CNullNif::BindL(TAny*) + { + } + +TInt CNullNif::Send(RMBufChain&, TAny*) + { + return 0; + } + +TInt CNullNif::State() + { + return EIfUp; + } + +TInt CNullNif::Control(TUint aLevel, TUint aName, TDes8& aOption, TAny* /*aSource*/) + { + if (aLevel != KSOLInterface) + { + return KErrNotSupported; + } + + switch (aName) + { + case KSoIfInfo: + { + TSoIfInfo& opt = *(TSoIfInfo*)aOption.Ptr(); + TNifIfInfo info; + FillInInfo(info); + opt.iName = info.iName; + return KErrNone; + } + } + + return KErrNotSupported; + } + +CNifIfBase* CNullNif::GetBinderL(const TDesC&) + { + return NULL; + } + +TInt CNullNif::Start() + { + iNotify->IfProgress(KLinkLayerOpen, KErrNone); + iNotify->LinkLayerUp(); + return KErrNone; + } + +void CNullNif::Stop(TInt aReason, MNifIfNotify::TAction aAction) + { + iNotify->LinkLayerDown(aReason, aAction); + iNotify->IfProgress(EIfProgressLinkDown, aReason); + } + +TInt CNullNif::Notification(TAgentToNifEventType, void*) + { + return KErrNone; + } + +void CNullNif::Restart(CNifIfBase*) + { + } + + +NONSHARABLE_CLASS(CNullNifIfFactory) : public CNifIfFactory + { +protected: + virtual void InstallL(); + virtual CNifIfBase* NewInterfaceL(const TDesC& aName); + TInt Info(TNifIfInfo& aInfo, TInt aIndex) const; + }; + +TInt CNullNifIfFactory::Info(TNifIfInfo& aInfo, TInt) const + { + CNullNif::FillInInfo(aInfo); + return 1; + } + +void CNullNifIfFactory::InstallL() + { + } + +CNifIfBase* CNullNifIfFactory::NewInterfaceL(const TDesC& aName) + { + _LIT(KNullNif, "nullnif"); + if (aName.CompareF(KNullNif)) + { + User::Leave(KErrNotSupported); + } + + return new (ELeave) CNullNif(*this); + } + +// Force export of non-mangled name +extern "C" { IMPORT_C CNifFactory *Install(); } + +EXPORT_C CNifFactory *Install() + { + return new (ELeave) CNullNifIfFactory; + } +