telephonyserverplugins/ctsydispatchlayer/src/cctsydispatcherfactory.cpp
changeset 0 3553901f7fa8
child 24 6638e7f4bd8f
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/telephonyserverplugins/ctsydispatchlayer/src/cctsydispatcherfactory.cpp	Tue Feb 02 01:41:59 2010 +0200
@@ -0,0 +1,123 @@
+// 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:
+//
+
+
+#include "cctsydispatcherfactory.h"
+#include "cmessagerouter.h"
+
+#include <ctsy/serviceapi/ctsysatmessagingbase.h>
+
+#include <ctsy/ltsy/ltsylogger.h>
+#include "testsattsyfactory.h"
+
+#include <ctsy/ltsy/mltsydispatchfactory.h>
+
+
+CCtsyDispatcherFactoryV1* CCtsyDispatcherFactoryV1::NewL()
+	{
+	TSYLOGENTRYEXIT;
+	CCtsyDispatcherFactoryV1* self = new (ELeave) CCtsyDispatcherFactoryV1;
+	CleanupStack::PushL(self);
+	self->ConstructL();
+	CleanupStack::Pop(self);
+	return self;	
+	}
+
+CCtsyDispatcherFactoryV1::CCtsyDispatcherFactoryV1()
+	{
+	}
+	
+void CCtsyDispatcherFactoryV1::ConstructL()
+	{
+	TSYLOGENTRYEXIT;
+	}
+
+CCtsyDispatcherFactoryV1::~CCtsyDispatcherFactoryV1()
+	{
+	iloadedLib.Close();
+	delete iMessageRouter;
+	}
+
+MLtsyFactoryBase::TCtsyInterfaceVersion CCtsyDispatcherFactoryV1::Version()
+    {
+    TSYLOGENTRYEXIT;
+    return MLtsyFactoryBase::EIfVersion1;
+    }
+	
+void CCtsyDispatcherFactoryV1::Release()
+	{
+	TSYLOGENTRYEXIT;
+	delete this;
+	}
+
+MMessageRouter* CCtsyDispatcherFactoryV1::GetMessageRouter(MmMessageManagerCallback& aMessageManager)
+	{
+	TSYLOGENTRYEXIT;
+	if (!iMessageRouter)
+		{
+		TInt err = KErrNone;
+		TRAP(err, iMessageRouter = CMessageRouter::NewL(aMessageManager));
+		}
+	return iMessageRouter;
+	}
+	
+CTsySatMessagingBase* CCtsyDispatcherFactoryV1::GetSatMessagingService(MCtsySatService& aSatMessagingService)
+	{
+	TSYLOGENTRYEXIT;
+	//create message router to pass to STK CTSY
+	CTsySatMessagingBase* satbase = NULL;
+	TRAP_IGNORE(satbase = GetSatMessagingServiceL(aSatMessagingService));
+	return satbase;
+	}
+
+CTsySatMessagingBase* CCtsyDispatcherFactoryV1::GetSatMessagingServiceL(MCtsySatService& aSatMessagingService)
+	{
+		
+	// When used by a licensee the TEST_CODE macro should be undefined and
+	// the licensee must provide an implementation for the GetSatMessagingService
+	// method in their dispatcher factory implementation
+	
+#define TEST_CODE
+#ifndef TEST_CODE
+	
+	__ASSERT_DEBUG(iMessageRouter, CtsyDispatcherPanic(EInvalidNullPtr));
+	return iMessageRouter->iLtsyFactoryV1->GetSatMessagingService(aSatMessagingService);
+	
+#else
+	
+	// Our test SAT TSY component is loaded only when the dispatcher is used in our 
+	// test environment.
+	_LIT(KSatDllName, "cstktsy.dll");
+	User::LeaveIfError(iloadedLib.Load(KSatDllName));
+	typedef CSatTsyFactory* (*CSatTsyNewLC)();
+	CSatTsyNewLC libEntry = (CSatTsyNewLC)iloadedLib.Lookup(1);
+	
+	CSatTsyFactory* satfactory = (*libEntry)();	// libEntry may leave.
+	CSatTsyFactory::TSatTsyPtrContainer satptr = satfactory->CreateSatTsyL(*iMessageRouter,aSatMessagingService);
+	
+	CleanupStack::PopAndDestroy(satfactory);
+	iMessageRouter->SetSatMessageManager(*satptr.iSatTsyMessageManagerCallback);
+	MStkTsyCallOrigin* origin = satptr.iSatTsy;
+	iMessageRouter->SetSatCallOriginInterface(*origin);
+	return satptr.iSatTsy;	
+#endif		
+	}
+
+EXPORT_C MLtsyFactoryBase* CtsyDispatcherFactoryL()
+	{
+	TSYLOGENTRYEXIT;
+	CCtsyDispatcherFactoryV1* factory = CCtsyDispatcherFactoryV1::NewL();
+    return factory;
+	}