--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/servicediscoveryandcontrol/pnp/test/upnp/Server/Flow/src/genericcontainer.cpp Tue Feb 02 01:12:20 2010 +0200
@@ -0,0 +1,125 @@
+// Copyright (c) 2008-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:
+// @file
+// @internalComponent
+// System Includes
+//
+//
+
+#include<ss_glob.h>
+#include <ecom/ecom.h>
+#include <appprotintf/app_protintf_msgs.h>
+#include <comms-infras/ss_nodemessages.h>
+#include <comms-infras/ss_nodemessages_factory.h>
+
+//Local Includes
+#include "genericcontainer.h"
+
+
+using namespace ESock;
+using namespace Messages;
+
+
+CAppProtIntfFactoryContainer* CAppProtIntfFactoryContainer::NewL ( )
+ {
+ CAppProtIntfFactoryContainer *factContainer = new ( ELeave ) CAppProtIntfFactoryContainer ( );
+ CleanupStack::PushL(factContainer);
+ factContainer->ConstructL();
+ CleanupStack::Pop(factContainer);
+ return factContainer;
+ }
+
+CAppProtIntfFactoryContainer::CAppProtIntfFactoryContainer ( )
+ {
+
+ }
+
+void CAppProtIntfFactoryContainer::ConstructL()
+ {
+ TUid destroyUid;
+ if(!iAppProtIntfFactory)
+ {
+ iAppProtIntfFactory = reinterpret_cast<CFactory*>( REComSession::CreateImplementationL(TUid::Uid( KAppProtIntfFactoryUid ), destroyUid ));
+ iAppProtIntfFactory->iDestroyUid = destroyUid;
+ }
+ }
+
+void CAppProtIntfFactoryContainer::ReceivedL ( const TRuntimeCtxId& aSender, const TNodeId& /*aRecipient*/, TSignatureBase& aMessage )
+ {
+ CFactoryObject* myFactoryObject = NULL;
+ const TCFFactory::TFindOrCreatePeer& msg = message_cast<const TCFFactory::TFindOrCreatePeer> ( aMessage );
+ if ( iAppProtIntfFactory )
+ {
+ myFactoryObject = iAppProtIntfFactory->FindOrCreateFactoryObjectL ( *(msg.iQuery) );
+ }
+
+ RClientInterface::OpenPostMessageClose ( NodeId (), aSender, TCFFactory::TPeerFoundOrCreated ( myFactoryObject->Id () ).CRef() );
+ }
+
+CFactory::CFactory()
+ {
+
+ }
+
+CFactory::~CFactory ()
+ {
+ if (iDestroyUid.iUid)
+ {
+ REComSession::DestroyedImplementation(iDestroyUid);
+ }
+ iObjectsList.ResetAndDestroy();
+ }
+
+CFactoryObject* CFactory::FindFactoryObject ( Factories::MFactoryQuery& aFactoryQuery )
+ {
+ const TAppProtIntfQuery& query = static_cast < const TAppProtIntfQuery& > ( aFactoryQuery );
+ TInt count = iObjectsList.Count();
+ CFactoryObject* obj = NULL;
+ for ( TInt ind = 0; ind < count; ind++ )
+ {
+ if (iObjectsList[ind]->ProtocolType() == query.iProtocol )
+ obj = iObjectsList[ind];
+ }
+ return obj;
+ }
+
+CFactoryObject* CFactory::FindOrCreateFactoryObjectL ( Factories::MFactoryQuery& aFactoryQuery )
+ {
+ CFactoryObject* myFactoryObj = FindFactoryObject ( aFactoryQuery );
+ return myFactoryObj ? myFactoryObj : CreateFactoryObjectL ( aFactoryQuery );
+ }
+
+CFactoryObject* CFactory::CreateFactoryObjectL ( Factories::MFactoryQuery& aFactoryQuery )
+ {
+ CFactoryObject* myFactoryObj = DoCreateFactoryObjectL ( aFactoryQuery );
+ CleanupStack::PushL ( myFactoryObj );
+ iObjectsList.Append(myFactoryObj);
+ CleanupStack::Pop ( myFactoryObj );
+ return myFactoryObj;
+ }
+
+CFactoryObject::CFactoryObject( TInt aProtocolType) : iProtocolFlag(aProtocolType)
+ {
+ }
+
+TInt CFactoryObject::ProtocolType()
+ {
+ return iProtocolFlag;
+ }
+
+CFactoryObject::~CFactoryObject()
+ {
+
+ }
+