--- /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 <in_sock.h>
+#include <in_iface.h>
+#include <comms-infras/nifif.h>
+
+
+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;
+ }
+