diff -r 000000000000 -r af10295192d8 linklayerprotocols/tunnelnif/src/tunnelFactory.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/linklayerprotocols/tunnelnif/src/tunnelFactory.cpp Tue Jan 26 15:23:49 2010 +0200 @@ -0,0 +1,81 @@ +// Copyright (c) 2006-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: +// Implements the Tunnel Flow and Protocol Interface Factories. +// +// + +/** + @file +*/ + +#include "TunnelFactory.h" +#include "tunnelFlow.h" +#include "tunnelProvision.h" // for TTunnelMessages + +using namespace ESock; + +// ===================================================================================== +// +// Tunnel Flow Factory +// + +CTunnelFlowFactory* CTunnelFlowFactory::NewL(TAny* aConstructionParameters) +/** +Constructs a Tunnel SubConnection Flow Factory + +@param aConstructionParameters construction data passed by ECOM + +@return pointer to a constructed factory +*/ + { + CTunnelFlowFactory* ptr = new (ELeave) CTunnelFlowFactory(TUid::Uid(KTunnelFlowImplUid), *(reinterpret_cast(aConstructionParameters))); + CleanupStack::PushL(ptr); + + // + // Register virtual constructors for Tunnel messages + // + // Note that factories are never unloaded at present, so this registration will + // effectively exist until ESockSvr unloads. + // + + TTunnelMessages::RegisterL(); + CleanupStack::Pop(ptr); + return ptr; + } + + +CTunnelFlowFactory::CTunnelFlowFactory(TUid aFactoryId, CSubConnectionFlowFactoryContainer& aParentContainer) + : CSubConnectionFlowFactoryBase(aFactoryId, aParentContainer) +/** +Tunnel SubConnection Flow Factory Constructor + +@param aFactoryId ECOM Implementation Id +@param aParentContainer Object Owner +*/ + { + } + +CTunnelFlowFactory::~CTunnelFlowFactory() + { + // De-register virtual constructors for Tunnel messages. + TTunnelMessages::DeRegister(); + } + +CSubConnectionFlowBase* CTunnelFlowFactory::DoCreateFlowL(ESock::CProtocolIntfBase* aProtocol, ESock::TFactoryQueryBase& aQuery) + { + const TDefaultFlowFactoryQuery& query = static_cast(aQuery); + CTunnelFlow* s = new (ELeave) CTunnelFlow(*this, query.iSCprId, aProtocol); + return s; + } +