smf/smfservermodule/smfclient/smfmusic_p.cpp
changeset 18 013a02bf2bb0
child 25 a180113055cb
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/smf/smfservermodule/smfclient/smfmusic_p.cpp	Thu Aug 05 16:48:48 2010 +0530
@@ -0,0 +1,986 @@
+/**
+ * Copyright (c) 2010 Sasken Communication Technologies Ltd.
+ * 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:
+ * Chandradeep Gandhi, Sasken Communication Technologies Ltd - Initial contribution
+ *
+ * Contributors:
+ * Manasij Roy, Nalina Hariharan
+ * 
+ * Description:
+ * Private implementation of music related services
+ * 
+ */
+
+#include <qdebug.h>
+#include <smfmusicrating.h>
+#include <smfcomment.h>
+#include <smfmusicfingerprint.h>
+#include <smfcontact.h>
+
+#include "smfmusic.h"
+#include "smfmusic_p.h"
+#ifdef Q_OS_SYMBIAN
+	#include "smfclientsymbian.h"
+#else
+	#include "smfclientqt.h"
+#endif
+
+
+//SmfMusicServicePrivate start
+SmfMusicServicePrivate::SmfMusicServicePrivate(SmfMusicService* aMusicService)
+		:m_musicService(aMusicService)
+	{
+#ifdef Q_OS_SYMBIAN
+	//private impl for symbian
+	m_SmfClientPrivate = CSmfClientSymbian::NewL(this);
+#else
+	//TODO:- Use private impl for other platforms or else Qt impl
+#endif
+	}
+
+SmfMusicServicePrivate::~SmfMusicServicePrivate()
+	{
+	if(m_SmfClientPrivate)
+		{
+		delete m_SmfClientPrivate;
+		m_SmfClientPrivate = NULL;
+		}
+	}
+
+void SmfMusicServicePrivate::userinfo()
+	{
+	//We need to pass Opcode and SmfProvider serialized into bytearray 
+	SmfProvider* m_baseProvider = m_musicService->getProvider();
+	m_serializedDataToServer.clear();
+	QDataStream write(&m_serializedDataToServer,QIODevice::WriteOnly);
+	write<<*m_baseProvider;
+	
+	QString intfName(musicServiceInterface);
+	int maxalloc = SmfMusicProfileMaxSize;
+	
+	//call private impl's send method
+	m_SmfClientPrivate->sendRequest(m_serializedDataToServer, intfName, 
+			SmfMusicGetUserInfo, maxalloc);
+	}
+
+void SmfMusicServicePrivate::searchUser(SmfLocation venue, int pageNum, int perPage)
+	{
+	//We need to pass Opcode and SmfProvider serialized into bytearray 
+	SmfProvider* m_baseProvider = m_musicService->getProvider();
+	m_serializedDataToServer.clear();
+	QDataStream write(&m_serializedDataToServer,QIODevice::WriteOnly);
+	write<<*m_baseProvider;
+	m_argFlag = 1;
+	write<<m_argFlag;
+	write<<venue;
+	write<<m_argFlag;
+	write<<pageNum;
+	write<<m_argFlag;
+	write<<perPage;
+	
+	QString intfName(musicServiceInterface);
+	int maxalloc = SmfMusicProfileMaxSize*perPage;
+	
+	//call private impl's send method
+	m_SmfClientPrivate->sendRequest(m_serializedDataToServer, intfName,
+	SmfMusicSearchUser, maxalloc);
+	}
+
+void SmfMusicServicePrivate::customRequest ( const int& operationId, QByteArray* customData )
+	{
+	//We need to pass Opcode and SmfProvider serialized into bytearray 
+	SmfProvider* m_baseProvider = m_musicService->getProvider();
+	m_serializedDataToServer.clear();
+	QDataStream write(&m_serializedDataToServer,QIODevice::WriteOnly);
+	write<<*m_baseProvider;
+	m_argFlag = 1;
+	write<<m_argFlag;
+	write<<operationId;
+	if(customData)
+		{
+		write<<m_argFlag;
+		write<<*customData;
+		}
+	else
+		{
+		m_argFlag = 0;
+		write<<m_argFlag;
+		}
+	
+	QString intfName(musicServiceInterface);
+	//ToDo:- How much size to allocate for custo data? keeping SmfMusicProfileMaxSize for now
+	int maxAlloc = SmfMusicProfileMaxSize;
+	
+	//call private impl's send method
+	m_SmfClientPrivate->sendRequest(m_serializedDataToServer, intfName,
+			SmfMusicServiceCustomRequest, maxAlloc);
+	}
+
+void SmfMusicServicePrivate::postCurrentPlaying(SmfTrackInfo track) 
+	{
+	//We need to pass Opcode and SmfProvider serialized into bytearray 
+	SmfProvider* m_baseProvider = m_musicService->getProvider();
+	m_serializedDataToServer.clear();
+	QDataStream write(&m_serializedDataToServer,QIODevice::WriteOnly);
+	write<<*(m_baseProvider);
+	m_argFlag = 1;
+	write<<m_argFlag;
+	write<<track;
+	
+	QString intfName(musicServiceInterface);
+	//TODO:-revisit all the maxalloc
+	int maxalloc = 1000;
+	
+	//call private impl's send method
+	m_SmfClientPrivate->sendRequest(m_serializedDataToServer, intfName,
+			SmfMusicPostCurrentPlaying, maxalloc);
+	}
+
+void SmfMusicServicePrivate::postRating(SmfTrackInfo track, SmfMusicRating rate) 
+	{
+	//We need to pass Opcode and SmfProvider serialized into bytearray 
+	SmfProvider* m_baseProvider = m_musicService->getProvider();
+	m_serializedDataToServer.clear();
+	QDataStream write(&m_serializedDataToServer,QIODevice::WriteOnly);
+	write<<*(m_baseProvider);
+	m_argFlag = 1;
+	write<<m_argFlag;
+	write<<track;
+	write<<m_argFlag;
+	write<<rate;
+
+	QString intfName(musicServiceInterface);
+	//TODO:-revisit all the maxalloc
+	int maxalloc = 1000;
+	
+	//call private impl's send method
+	m_SmfClientPrivate->sendRequest(m_serializedDataToServer, intfName,
+	SmfMusicPostRating, maxalloc);
+	}
+
+void SmfMusicServicePrivate::postComments(SmfTrackInfo track, SmfComment comment) 
+	{
+	//We need to pass Opcode and SmfProvider serialized into bytearray 
+	SmfProvider* m_baseProvider = m_musicService->getProvider();
+	m_serializedDataToServer.clear();
+	QDataStream write(&m_serializedDataToServer,QIODevice::WriteOnly);
+	write<<*(m_baseProvider);
+	m_argFlag = 1;
+	write<<m_argFlag;
+	write<<track;
+	write<<m_argFlag;
+	write<<comment;
+	
+	QString intfName(musicServiceInterface);
+	//TODO:-revisit all the maxalloc
+	int maxalloc = 1000;
+	
+	//call private impl's send method
+	m_SmfClientPrivate->sendRequest(m_serializedDataToServer, intfName,
+			SmfMusicPostComment, maxalloc);
+	}
+
+void SmfMusicServicePrivate::resultsAvailable(QByteArray result, SmfRequestTypeID opcode, SmfError error)
+	{
+	//note:- "result" is serialized and we need to de-serialize it as per opcode
+	//Order of serialization Error value followed by data
+	
+	QDataStream reader(&result,QIODevice::ReadOnly);
+	
+	//Now de-serialize it based on opcode
+	switch(opcode)
+		{
+		case SmfMusicGetUserInfo:
+			{
+			SmfMusicProfile* m_profile = new SmfMusicProfile;
+			reader>>*m_profile;
+
+			emit m_musicService->userInfoAvailable(m_profile,error);
+			break;
+			}
+				
+		case SmfMusicSearchUser:
+			{
+			SmfMusicProfileList* m_profileList = new SmfMusicProfileList;
+			reader>>*m_profileList;
+			
+			//ToDo :- not incorporating paging now
+			SmfResultPage page;
+
+			emit m_musicService->searchInfoAvailable(m_profileList, error, page);
+			break;
+			}
+			
+		case SmfMusicPostCurrentPlaying:
+		case SmfMusicPostRating:
+		case SmfMusicPostComment:
+			{
+			emit m_musicService->postfinished(error);
+			break;
+			}
+			
+		case SmfMusicServiceCustomRequest:
+   			{
+   			int operationId;
+   			QByteArray *data = new QByteArray;
+   			reader>>operationId;
+   			reader>>*data;
+   			qDebug()<<"operationId = "<<operationId;
+   			qDebug()<<"data size = "<<data->size();
+   			emit m_musicService->customDataAvailable(operationId, data);
+   			break;
+   			}
+   			
+		default:
+			User::Panic(_L("Music Service Private = "),opcode);
+		}
+	}
+//SmfMusicServicePrivate start
+
+
+//SmfMusicSearchPrivate start
+SmfMusicSearchPrivate::SmfMusicSearchPrivate(SmfMusicSearch *aMusicSearch)
+		: m_musicSearch(aMusicSearch)
+	{
+#ifdef Q_OS_SYMBIAN
+	//private impl for symbian
+	m_SmfClientPrivate = CSmfClientSymbian::NewL(this);
+#else
+	//TODO:- Use private impl for other platforms or else Qt impl
+#endif
+	}
+
+SmfMusicSearchPrivate::~SmfMusicSearchPrivate()
+	{
+	if(m_SmfClientPrivate)
+		{
+		delete m_SmfClientPrivate;
+		m_SmfClientPrivate = NULL;
+		}
+	}
+
+void SmfMusicSearchPrivate::recommendations(SmfTrackInfo track, int pageNum, int perPage)
+	{
+	//We need to pass Opcode and SmfProvider serialized into bytearray
+	m_serializedDataToServer.clear();
+	SmfProvider* m_baseProvider = m_musicSearch->getProvider();
+	QDataStream write(&m_serializedDataToServer,QIODevice::WriteOnly);
+	write<<*m_baseProvider;
+	m_argFlag = 1;
+	write<<m_argFlag;
+	write<<track;
+	write<<m_argFlag;
+	write<<pageNum;
+	write<<m_argFlag;
+	write<<perPage;
+		
+	QString intfName(musicSearchInterface);
+	//TODO:-revisit all the maxalloc
+	int maxalloc = 1000;
+	
+	//call private impl's send method
+	m_SmfClientPrivate->sendRequest(m_serializedDataToServer, intfName,
+			SmfMusicGetRecommendations, maxalloc);
+	}
+
+void SmfMusicSearchPrivate::tracks(SmfTrackInfo track, int pageNum, int perPage)
+	{
+	//We need to pass Opcode and SmfProvider serialized into bytearray 
+	SmfProvider* m_baseProvider = m_musicSearch->getProvider();
+	m_serializedDataToServer.clear();
+	QDataStream write(&m_serializedDataToServer,QIODevice::WriteOnly);
+	write<<*m_baseProvider;
+	m_argFlag = 1;
+	write<<m_argFlag;
+	write<<track;
+	write<<m_argFlag;
+	write<<pageNum;
+	write<<m_argFlag;
+	write<<perPage;
+	
+	QString intfName(musicSearchInterface);
+	//TODO:-revisit all the maxalloc
+	int maxalloc = 1000;
+	
+	//call private impl's send method
+	m_SmfClientPrivate->sendRequest(m_serializedDataToServer, intfName,
+			SmfMusicGetTracks, maxalloc);
+	}
+
+void SmfMusicSearchPrivate::trackInfo(SmfMusicFingerPrint signature, int pageNum, int perPage)
+	{
+	//We need to pass Opcode and SmfProvider serialized into bytearray 
+	SmfProvider* m_baseProvider = m_musicSearch->getProvider();
+	m_serializedDataToServer.clear();
+	QDataStream write(&m_serializedDataToServer,QIODevice::WriteOnly);
+	write<<*m_baseProvider;
+	m_argFlag = 1;
+	write<<m_argFlag;
+	write<<signature;
+	write<<m_argFlag;
+	write<<pageNum;
+	write<<m_argFlag;
+	write<<perPage;
+	
+	QString intfName(musicSearchInterface);
+	//TODO:-revisit all the maxalloc
+	int maxalloc = 1000;
+	
+	//call private impl's send method
+	m_SmfClientPrivate->sendRequest(m_serializedDataToServer, intfName, 
+			SmfMusicGetTrackInfo, maxalloc);
+	}
+
+void SmfMusicSearchPrivate::stores(SmfTrackInfo track, int pageNum, int perPage)
+	{
+	//We need to pass Opcode and SmfProvider serialized into bytearray 
+	SmfProvider* m_baseProvider = m_musicSearch->getProvider();
+	m_serializedDataToServer.clear();
+	QDataStream write(&m_serializedDataToServer,QIODevice::WriteOnly);
+	write<<*(m_baseProvider);
+	m_argFlag = 1;
+	write<<m_argFlag;
+	write<<track;
+	write<<m_argFlag;
+	write<<pageNum;
+	write<<m_argFlag;
+	write<<perPage;
+	
+	QString intfName(musicSearchInterface);
+	/** @TODO:-revisit all the maxalloc */
+	int maxalloc = 1000;
+	
+	//call private impl's send method
+	m_SmfClientPrivate->sendRequest(m_serializedDataToServer, intfName,
+			SmfMusicGetStores, maxalloc);
+	}
+
+void SmfMusicSearchPrivate::customRequest ( const int& operationId, QByteArray* customData )
+	{
+	//We need to pass Opcode and SmfProvider serialized into bytearray 
+	SmfProvider* m_baseProvider = m_musicSearch->getProvider();
+	m_serializedDataToServer.clear();
+	QDataStream write(&m_serializedDataToServer,QIODevice::WriteOnly);
+	write<<*m_baseProvider;
+	m_argFlag = 1;
+	write<<m_argFlag;
+	write<<operationId;
+	
+	if(customData)
+		{
+		write<<m_argFlag;
+		write<<*customData;
+		}
+	else
+		{
+		m_argFlag = 0;
+		write<<m_argFlag;
+		}
+	
+	QString intfName(musicSearchInterface);
+	/** @TODO:-revisit all the maxalloc */
+	int maxalloc = 1000;
+	
+	//call private impl's send method
+	m_SmfClientPrivate->sendRequest(m_serializedDataToServer, intfName,
+			SmfMusicSearchCustomRequest, maxalloc);
+	}
+
+
+
+void SmfMusicSearchPrivate::resultsAvailable(QByteArray result, SmfRequestTypeID opcode, SmfError error)
+	{
+	//note:- "result" is serialized and we need to de-serialize it as per opcode
+	//Order of serialization Error value followed by data
+	
+	QDataStream reader(&result,QIODevice::ReadOnly);
+	
+	//Now de-serialize it based on opcode
+	switch(opcode)
+		{
+		case SmfMusicGetRecommendations:
+		case SmfMusicGetTracks:
+		case SmfMusicGetTrackInfo:
+				{
+				SmfTrackInfoList* m_trackInfoList = new SmfTrackInfoList;
+				reader>>*(m_trackInfoList);
+				
+				//ToDo :- not incorporating paging now
+				SmfResultPage page;
+	
+				emit m_musicSearch->trackSearchAvailable(m_trackInfoList,error,page);
+				break;
+				}
+				
+		case SmfMusicGetStores:
+			{
+			SmfProviderList* m_providers = new SmfProviderList;
+			reader>>*(m_providers);
+			
+			//ToDo :- not incorporating paging now
+			SmfResultPage page;
+
+			emit m_musicSearch->storeSearchAvailable(m_providers,error,page);
+			break;
+			}
+
+		case SmfMusicSearchCustomRequest:
+   			{
+   			int operationId;
+   			QByteArray *data = new QByteArray;
+   			reader>>operationId;
+   			reader>>*data;
+   			qDebug()<<"operationId = "<<operationId;
+   			qDebug()<<"data size = "<<data->size();
+   			emit m_musicSearch->customDataAvailable(operationId, data);
+   			break;
+   			}
+
+		default:
+			User::Panic(_L("Music Search Private = "),opcode);
+		}
+	}
+//SmfMusicSearchPrivate end
+
+
+//SmfPlaylistServicePrivate start
+SmfPlaylistServicePrivate::SmfPlaylistServicePrivate(SmfPlaylistService *aPlayLstSrvc)
+		: m_playlstSrvc(aPlayLstSrvc)
+	{
+#ifdef Q_OS_SYMBIAN
+	//private impl for symbian
+	m_SmfClientPrivate = CSmfClientSymbian::NewL(this);
+#else
+	//TODO:- Use private impl for other platforms or else Qt impl
+#endif
+	}
+
+SmfPlaylistServicePrivate::~SmfPlaylistServicePrivate()
+	{
+	if(m_SmfClientPrivate)
+		{
+		delete m_SmfClientPrivate;
+		m_SmfClientPrivate = NULL;
+		}	
+	}
+
+void SmfPlaylistServicePrivate::playlists(int pageNum, int perPage)
+	{
+	//We need to pass Opcode and SmfProvider serialized into bytearray 
+	SmfProvider* m_baseProvider = m_playlstSrvc->getProvider();
+	m_serializedDataToServer.clear();
+	QDataStream write(&m_serializedDataToServer,QIODevice::WriteOnly);
+	write<<*(m_baseProvider);
+	m_argFlag = 1;
+	write<<m_argFlag;
+	write<<pageNum;
+	write<<m_argFlag;
+	write<<perPage;
+	
+	QString intfName(playlistServiceInterface);
+	//TODO:-revisit all the maxalloc
+	int maxalloc = 1000;
+	
+	//call private impl's send method
+	m_SmfClientPrivate->sendRequest(m_serializedDataToServer, intfName,
+			SmfMusicGetPlaylists, maxalloc);
+	}
+
+void SmfPlaylistServicePrivate::playlistsOf(SmfMusicProfile *user, int pageNum, int perPage)
+	{
+	//We need to pass Opcode and SmfProvider serialized into bytearray 
+	SmfProvider* m_baseProvider = m_playlstSrvc->getProvider();
+	m_serializedDataToServer.clear();
+	QDataStream write(&m_serializedDataToServer,QIODevice::WriteOnly);
+	write<<*(m_baseProvider);
+	if(user)
+		{
+		m_argFlag = 1;
+		write<<m_argFlag;
+		write<<*user;
+		}
+	else
+		{
+		m_argFlag = 0;
+		write<<m_argFlag;
+		}
+	m_argFlag = 1;
+	write<<m_argFlag;
+	write<<pageNum;
+	write<<m_argFlag;
+	write<<perPage;
+		
+	QString intfName(playlistServiceInterface);
+	//TODO:-revisit all the maxalloc
+	int maxalloc = 1000;
+	
+	//call private impl's send method
+	m_SmfClientPrivate->sendRequest(m_serializedDataToServer, intfName,
+			SmfMusicGetPlaylistsOfUser, maxalloc);
+	}
+
+int SmfPlaylistServicePrivate::addToPlaylist(SmfPlaylist plst, SmfTrackInfoList *tracks)
+	{
+	//We need to pass Opcode and SmfProvider serialized into bytearray 
+	SmfProvider* m_baseProvider = m_playlstSrvc->getProvider();
+	m_serializedDataToServer.clear();
+	QDataStream write(&m_serializedDataToServer,QIODevice::WriteOnly);
+	write<<*(m_baseProvider);
+	m_argFlag = 1;
+	write<<m_argFlag;
+	write<<plst;
+	if(tracks)
+		{
+		write<<m_argFlag;
+		write<<*tracks;
+		}
+	else
+		{
+		m_argFlag = 0;
+		write<<m_argFlag;
+		}
+		
+	QString intfName(playlistServiceInterface);
+	//TODO:-revisit all the maxalloc
+	int maxalloc = 1000;
+	
+	//call private impl's send method
+	return m_SmfClientPrivate->sendRequest(m_serializedDataToServer, intfName,
+			SmfMusicAddToPlaylist, maxalloc);
+	}
+
+int SmfPlaylistServicePrivate::postCurrentPlayingPlaylist(SmfPlaylist plst)
+	{
+	//We need to pass Opcode and SmfProvider serialized into bytearray 
+	SmfProvider* m_baseProvider = m_playlstSrvc->getProvider();
+	m_serializedDataToServer.clear();
+	QDataStream write(&m_serializedDataToServer,QIODevice::WriteOnly);
+	write<<*(m_baseProvider);
+	m_argFlag = 1;
+	write<<m_argFlag;
+	write<<plst;
+	
+	QString intfName(playlistServiceInterface);
+	//TODO:-revisit all the maxalloc
+	int maxalloc = 1000;
+	
+	//call private impl's send method
+	return m_SmfClientPrivate->sendRequest(m_serializedDataToServer, intfName,
+			SmfMusicPostCurrentPlayingPlaylist, maxalloc);
+	}
+
+void SmfPlaylistServicePrivate::customRequest ( const int& operationId, QByteArray* customData )
+	{
+	//We need to pass Opcode and SmfProvider serialized into bytearray 
+	SmfProvider* m_baseProvider = m_playlstSrvc->getProvider();
+	m_serializedDataToServer.clear();
+	QDataStream write(&m_serializedDataToServer,QIODevice::WriteOnly);
+	write<<*m_baseProvider;
+	m_argFlag = 1;
+	write<<m_argFlag;
+	write<<operationId;
+	
+	if(customData)
+		{
+		write<<m_argFlag;
+		write<<*customData;
+		}
+	else
+		{
+		m_argFlag = 0;
+		write<<m_argFlag;
+		}
+	
+	QString intfName(playlistServiceInterface);
+	//TODO:-revisit all the maxalloc
+	int maxalloc = 1000;
+	
+	//call private impl's send method
+	m_SmfClientPrivate->sendRequest(m_serializedDataToServer, intfName,
+			SmfMusicPlaylistCustomRequest, maxalloc);
+	}
+
+void SmfPlaylistServicePrivate::resultsAvailable(QByteArray result, SmfRequestTypeID opcode, SmfError error)
+	{
+	//note:- "result" is serialized and we need to de-serialize it as per opcode
+	//Order of serialization Error value followed by data
+	
+	QDataStream reader(&result,QIODevice::ReadOnly);
+	
+	//Now de-serialize it based on opcode
+	switch(opcode)
+		{
+		case SmfMusicGetPlaylists:
+		case SmfMusicGetPlaylistsOfUser:
+			{
+			SmfPlaylistList* m_playlistList = new SmfPlaylistList;
+			reader>>*(m_playlistList);
+			
+			//ToDo:-
+			SmfResultPage page;
+			
+			emit m_playlstSrvc->playlistsListAvailable(m_playlistList,error,page);
+			break;
+			}
+			
+		case SmfMusicAddToPlaylist:
+		case SmfMusicPostCurrentPlayingPlaylist:
+			{
+			emit m_playlstSrvc->playlistUpdated(error);
+			break;
+			}
+			
+		case SmfMusicPlaylistCustomRequest:
+   			{
+   			int operationId;
+   			QByteArray *data = new QByteArray;
+   			reader>>operationId;
+   			reader>>*data;
+   			qDebug()<<"operationId = "<<operationId;
+   			qDebug()<<"data size = "<<data->size();
+   			emit m_playlstSrvc->customDataAvailable(operationId, data);
+   			break;
+   			}
+		default:
+			Q_ASSERT_X(1,"SmfPlaylistServicePrivate::resultsAvailable","unknown opcode");
+		}
+	}
+//SmfPlaylistServicePrivate end
+
+
+//SmfMusicEventsPrivate start
+SmfMusicEventsPrivate::SmfMusicEventsPrivate(SmfMusicEvents *aMusicEvent)
+		:m_musicEvent(aMusicEvent)
+	{
+#ifdef Q_OS_SYMBIAN
+	//private impl for symbian
+	m_SmfClientPrivate = CSmfClientSymbian::NewL(this);
+#else
+	//TODO:- Use private impl for other platforms or else Qt impl
+#endif
+	}
+
+SmfMusicEventsPrivate::~SmfMusicEventsPrivate()
+	{
+	if(m_SmfClientPrivate)
+		{
+		delete m_SmfClientPrivate;
+		m_SmfClientPrivate = NULL;
+		}
+	}
+
+void SmfMusicEventsPrivate::events(SmfLocation venue, int pageNum, int perPage)
+	{
+	//We need to pass Opcode and SmfProvider serialized into bytearray 
+	SmfProvider* m_baseProvider = m_musicEvent->getProvider();
+	m_serializedDataToServer.clear();
+	QDataStream write(&m_serializedDataToServer,QIODevice::WriteOnly);
+	write<<*(m_baseProvider);
+	m_argFlag = 1;
+	write<<m_argFlag;
+	write<<venue;
+	write<<m_argFlag;
+	write<<pageNum;
+	write<<m_argFlag;
+	write<<perPage;
+		
+	QString intfName(musicEventServiceInterface);
+	//TODO:-revisit all the maxalloc
+	int maxalloc = 1000;
+	
+	//call private impl's send method
+	m_SmfClientPrivate->sendRequest(m_serializedDataToServer, intfName,
+			SmfMusicGetEventsOnLoc, maxalloc);
+	}
+
+void SmfMusicEventsPrivate::venues(SmfLocation location, int pageNum, int perPage)
+	{
+	//We need to pass Opcode and SmfProvider serialized into bytearray 
+	SmfProvider* m_baseProvider = m_musicEvent->getProvider();
+	m_serializedDataToServer.clear();
+	QDataStream write(&m_serializedDataToServer,QIODevice::WriteOnly);
+	write<<*(m_baseProvider);
+	m_argFlag = 1;
+	write<<m_argFlag;
+	write<<location;
+	write<<m_argFlag;
+	write<<pageNum;
+	write<<m_argFlag;
+	write<<perPage;
+		
+	QString intfName(musicEventServiceInterface);
+	//TODO:-revisit all the maxalloc
+	int maxalloc = 1000;
+	
+	//call private impl's send method
+	m_SmfClientPrivate->sendRequest(m_serializedDataToServer, intfName,
+			SmfMusicGetVenueOnLoc, maxalloc);
+	}
+
+void SmfMusicEventsPrivate::postEvents(SmfEventList events)
+	{
+	//We need to pass Opcode and SmfProvider serialized into bytearray 
+	SmfProvider* m_baseProvider = m_musicEvent->getProvider();
+	m_serializedDataToServer.clear();
+	QDataStream write(&m_serializedDataToServer,QIODevice::WriteOnly);
+	write<<*(m_baseProvider);
+	m_argFlag = 1;
+	write<<m_argFlag;
+	write<<events;
+	
+	QString intfName(musicEventServiceInterface);
+	//TODO:-revisit all the maxalloc
+	int maxalloc = 1000;
+	
+	//call private impl's send method
+	m_SmfClientPrivate->sendRequest(m_serializedDataToServer, intfName,
+			SmfMusicPostEvents, maxalloc);
+	}
+
+void SmfMusicEventsPrivate::customRequest ( const int& operationId, QByteArray* customData )
+	{
+	//We need to pass Opcode and SmfProvider serialized into bytearray 
+	SmfProvider* m_baseProvider = m_musicEvent->getProvider();
+	m_serializedDataToServer.clear();
+	QDataStream write(&m_serializedDataToServer,QIODevice::WriteOnly);
+	write<<*m_baseProvider;
+	m_argFlag = 1;
+	write<<m_argFlag;
+	write<<operationId;
+	
+	if(customData)
+		{
+		write<<m_argFlag;
+		write<<*customData;
+		}
+	else
+		{
+		m_argFlag = 0;
+		write<<m_argFlag;
+		}
+	
+	QString intfName(musicEventServiceInterface);
+	//TODO:-revisit all the maxalloc
+	int maxalloc = 1000;
+	
+	//call private impl's send method
+	m_SmfClientPrivate->sendRequest(m_serializedDataToServer, intfName,
+			SmfMusicEventsCustomRequest, maxalloc);
+	}
+
+void SmfMusicEventsPrivate::resultsAvailable(QByteArray result,SmfRequestTypeID opcode,SmfError error)
+	{
+	//note:- "result" is serialized and we need to de-serialize it as per opcode
+	//Order of serialization Error value followed by data
+	
+	QDataStream reader(&result,QIODevice::ReadOnly);
+	
+	//Now de-serialize it based on opcode
+	switch(opcode)
+		{
+		case SmfMusicGetEventsOnLoc:
+			{
+			SmfEventList* m_events = new SmfEventList;
+			reader>>*(m_events);
+			
+			// ToDo :-
+			SmfResultPage page;
+			
+			m_musicEvent->eventsAvailable(m_events,error,page);
+			break;
+			}
+			
+		case SmfMusicGetVenueOnLoc:
+			{
+			SmfLocationList* m_venues = new SmfLocationList;
+			reader>>*(m_venues);
+			
+			//ToDo :-
+			SmfResultPage page;
+			
+			m_musicEvent->venuesAvailable(m_venues,error,page);
+			break;
+			}
+			
+		case SmfMusicPostEvents:
+			m_musicEvent->eventsUpdated(error);
+			break;
+			
+		case SmfMusicEventsCustomRequest:
+   			{
+   			int operationId;
+   			QByteArray *data = new QByteArray;
+   			reader>>operationId;
+   			reader>>*data;
+   			qDebug()<<"operationId = "<<operationId;
+   			qDebug()<<"data size = "<<data->size();
+   			emit m_musicEvent->customDataAvailable(operationId, data);
+   			break;
+   			}
+   			
+		default:
+			Q_ASSERT_X(1,"SmfMusicEventsPrivate::resultsAvailable","unknown opcode");
+		}
+	}
+//SmfMusicEventsPrivate end
+
+
+//SmfLyricsServicePrivate start
+SmfLyricsServicePrivate::SmfLyricsServicePrivate(SmfLyricsService *aLyricsSrvc)
+		: m_lyricsSrvc(aLyricsSrvc)
+	{
+#ifdef Q_OS_SYMBIAN
+	//private impl for symbian
+	m_SmfClientPrivate = CSmfClientSymbian::NewL(this);
+#else
+	//TODO:- Use private impl for other platforms or else Qt impl
+#endif
+	}
+
+SmfLyricsServicePrivate::~SmfLyricsServicePrivate()
+	{
+	if(m_SmfClientPrivate)
+		{
+		delete m_SmfClientPrivate;
+		m_SmfClientPrivate = NULL;
+		}
+	}
+
+void SmfLyricsServicePrivate::lyrics(SmfTrackInfo track, int pageNum, int perPage)
+	{
+	//We need to pass Opcode and SmfProvider serialized into bytearray 
+	SmfProvider* m_baseProvider = m_lyricsSrvc->getProvider();
+	m_serializedDataToServer.clear();
+	QDataStream write(&m_serializedDataToServer,QIODevice::WriteOnly);
+	write<<*(m_baseProvider);
+	m_argFlag = 1;
+	write<<m_argFlag;
+	write<<track;
+	write<<m_argFlag;
+	write<<pageNum;
+	write<<m_argFlag;
+	write<<perPage;
+		
+	QString intfName(lyricsServiceInterface);
+	//TODO:-revisit all the maxalloc
+	int maxalloc = 1000;
+	
+	//call private impl's send method
+	m_SmfClientPrivate->sendRequest(m_serializedDataToServer, intfName,
+			SmfMusicGetLyrics, maxalloc);
+	}
+
+void SmfLyricsServicePrivate::subtitles(SmfTrackInfo track, SmfSubtitleSearchFilter filter, 
+		int pageNum, int perPage)
+	{
+	//We need to pass Opcode and SmfProvider serialized into bytearray 
+	SmfProvider* m_baseProvider = m_lyricsSrvc->getProvider();
+	QDataStream write(&m_serializedDataToServer,QIODevice::WriteOnly);
+	write<<*(m_baseProvider);
+	m_argFlag = 1;
+	write<<m_argFlag;
+	write<<track;
+	write<<m_argFlag;
+	write<<filter;
+	write<<m_argFlag;
+	write<<pageNum;
+	write<<m_argFlag;
+	write<<perPage;
+		
+	QString intfName(lyricsServiceInterface);
+	//TODO:-revisit all the maxalloc
+	int maxalloc = 1000;
+	
+	//call private impl's send method
+	m_SmfClientPrivate->sendRequest(m_serializedDataToServer, intfName,
+			SmfMusicGetSubtitle, maxalloc);
+	}
+
+void SmfLyricsServicePrivate::customRequest ( const int& operationId, QByteArray* customData )
+	{
+	//We need to pass Opcode and SmfProvider serialized into bytearray 
+	SmfProvider* m_baseProvider = m_lyricsSrvc->getProvider();
+	m_serializedDataToServer.clear();
+	QDataStream write(&m_serializedDataToServer,QIODevice::WriteOnly);
+	write<<*m_baseProvider;
+	m_argFlag = 1;
+	write<<m_argFlag;
+	write<<operationId;
+	
+	if(customData)
+		{
+		write<<m_argFlag;
+		write<<*customData;
+		}
+	else
+		{
+		m_argFlag = 0;
+		write<<m_argFlag;
+		}
+	
+	QString intfName(lyricsServiceInterface);
+	//TODO:-revisit all the maxalloc
+	int maxalloc = 1000;
+	
+	//call private impl's send method
+	m_SmfClientPrivate->sendRequest(m_serializedDataToServer, intfName,
+			SmfMusicLyricsCustomRequest, maxalloc);
+	}
+
+void SmfLyricsServicePrivate::resultsAvailable(QByteArray result, SmfRequestTypeID opcode, SmfError error)
+	{
+	//note:- "result" is serialized and we need to de-serialize it as per opcode
+
+	QDataStream reader(&result,QIODevice::ReadOnly);
+	
+	//Now de-serialize it based on opcode
+	switch(opcode)
+		{
+		case SmfMusicGetLyrics:
+			{
+			SmfLyricsList* m_lyricsList = new SmfLyricsList;
+			reader>>*(m_lyricsList);
+			
+			// ToDo :-
+			SmfResultPage page;
+			
+			emit m_lyricsSrvc->lyricsAvailable(m_lyricsList,error,page);
+			break;
+			}
+			
+		case SmfMusicGetSubtitle:
+			{
+			SmfSubtitleList* m_subList = new SmfSubtitleList;
+			reader>>*(m_subList);
+			
+			// ToDo :-
+			SmfResultPage page;
+			
+			emit m_lyricsSrvc->subtitleAvailable(m_subList,error,page);
+			break;
+			}
+			
+		case SmfMusicLyricsCustomRequest:
+   			{
+   			int operationId;
+   			QByteArray *data = new QByteArray;
+   			reader>>operationId;
+   			reader>>*data;
+   			qDebug()<<"operationId = "<<operationId;
+   			qDebug()<<"data size = "<<data->size();
+   			emit m_lyricsSrvc->customDataAvailable(operationId, data);
+   			break;
+   			}
+   			
+		default:
+			Q_ASSERT_X(1,"SmfLyricsServicePrivate::resultsAvailable","unknown opcode");
+		}
+	}
+
+//SmfLyricsServicePrivate end