smf/smfservermodule/smfclient/client/smfpostprovider_p.cpp
changeset 14 a469c0e6e7fb
parent 10 77a56c951f86
equal deleted inserted replaced
13:b5d63d5fc252 14:a469c0e6e7fb
    10  * Chandradeep Gandhi, Sasken Communication Technologies Ltd - Initial contribution
    10  * Chandradeep Gandhi, Sasken Communication Technologies Ltd - Initial contribution
    11  *
    11  *
    12  * Contributors:
    12  * Contributors:
    13  * Manasij Roy, Nalina Hariharan
    13  * Manasij Roy, Nalina Hariharan
    14  * 
    14  * 
    15  * Description:
       
    16  * The SmfEvent class represents an event
       
    17  *
    15  *
    18  */
    16  */
    19 
    17 
    20 #include "smfpostprovider_p.h"
    18 #include "smfpostprovider_p.h"
    21 //logging headers
    19 //logging headers
    24 #include <QFile>
    22 #include <QFile>
    25 #endif
    23 #endif
    26 #ifdef Q_OS_SYMBIAN
    24 #ifdef Q_OS_SYMBIAN
    27 #include "smfclientsymbian.h"
    25 #include "smfclientsymbian.h"
    28 #else
    26 #else
    29 #include "smfclientqt.h"
    27 #include "SmfClientQt.h"
    30 #endif
    28 #endif
    31 SmfPostProviderPrivate::SmfPostProviderPrivate(SmfPostProvider* postProvider)
    29 SmfPostProviderPrivate::SmfPostProviderPrivate(SmfPostProvider* postProvider)
    32 : m_postProvider(postProvider),m_postList(NULL)
    30 : m_postProvider(postProvider),m_postList(NULL)
    33 	{
    31 	{
    34 	  //private impl for symbian
    32 	//private impl for symbian
    35 	#ifdef Q_OS_SYMBIAN
    33 	#ifdef Q_OS_SYMBIAN
    36 	m_SmfClientPrivate = CSmfClientSymbian::NewL(this);
    34 	m_SmfClientPrivate = CSmfClientSymbian::NewL(this);
    37 	#endif
    35 	#endif
    38 	}
    36 	}
    39 SmfPostProviderPrivate::~SmfPostProviderPrivate()
    37 SmfPostProviderPrivate::~SmfPostProviderPrivate()
    59 	  
    57 	  
    60 	  m_baseProvider = m_postProvider->getProvider();
    58 	  m_baseProvider = m_postProvider->getProvider();
    61 	  //serialize start
    59 	  //serialize start
    62 	  QDataStream write(&m_serializedDataToServer,QIODevice::WriteOnly);
    60 	  QDataStream write(&m_serializedDataToServer,QIODevice::WriteOnly);
    63 	  write<<*(m_baseProvider);
    61 	  write<<*(m_baseProvider);
       
    62 	  m_pageInfoFlag = 1;
       
    63 	  write<<m_pageInfoFlag;
       
    64 	  write<<pageNum;
       
    65 	  write<<perPage;
    64 	  //TODO:- use different opcode incase post retreival is for other user
    66 	  //TODO:- use different opcode incase post retreival is for other user
    65 	  //serialize SmfContact if post retrieval is for other user
    67 	  //serialize SmfContact if post retrieval is for other user
       
    68 
    66 	  if(user)
    69 	  if(user)
    67 		  {
    70 		  {
       
    71 		  //m_xtraInfoFlag = 1;
       
    72 		  //write<<m_xtraInfoFlag;
    68 		  //now serialize SmfContact 
    73 		  //now serialize SmfContact 
    69 		  write<<*(user);
    74 		  m_xtraInfoSerialized.clear();
       
    75 		  QDataStream Xtrawrite(&m_xtraInfoSerialized,QIODevice::WriteOnly);
       
    76 		  Xtrawrite<<*(user);
       
    77 		  m_xtraInfoFlag = m_xtraInfoSerialized.size();
       
    78 		  write<<m_xtraInfoFlag;
       
    79 		  }
       
    80 	  else
       
    81 		  {
       
    82 		  m_xtraInfoFlag = 0;
       
    83 		  write<<m_xtraInfoFlag;
    70 		  }
    84 		  }
    71 	  //serialize end
    85 	  //serialize end
    72 	  QString intfName(postProviderInterface);
    86 	  intfName.clear();
    73 	  
    87 	  intfName.append(postProviderInterface);
    74 	  //call private impl's send method
    88 	  int maxAllocation = MaxSmfPostSize*perPage;
    75 	  m_SmfClientPrivate->sendRequest(m_serializedDataToServer,intfName,SmfContactRetrievePosts);
    89 	  //call private impl's send method
       
    90 	  m_SmfClientPrivate->sendRequest(m_serializedDataToServer,intfName,SmfContactRetrievePosts,maxAllocation,m_xtraInfoSerialized);
    76 
    91 
    77 }
    92 }
    78 	
    93 	
    79 /**
    94 /**
    80  * Updates a post to own area, the success of the post can be checked with signal
    95  * Updates a post to own area, the success of the post can be checked with signal
    82  * @param postData data to be posted
    97  * @param postData data to be posted
    83  * @param location location data
    98  * @param location location data
    84  */
    99  */
    85 void SmfPostProviderPrivate::post(SmfPost& postData,SmfLocation& location) 
   100 void SmfPostProviderPrivate::post(SmfPost& postData,SmfLocation& location) 
    86 	{
   101 	{
       
   102 	  m_xtraInfoSerialized.clear();
    87 	  m_baseProvider = m_postProvider->getProvider();
   103 	  m_baseProvider = m_postProvider->getProvider();
    88 	  //serialize start
   104 	  //serialize start
    89 	  QDataStream write(&m_serializedDataToServer,QIODevice::WriteOnly);
   105 	  QDataStream write(&m_serializedDataToServer,QIODevice::WriteOnly);
    90 	  //SmfProvider
   106 	  //SmfProvider
    91 	  write<<*(m_baseProvider);
   107 	  write<<*(m_baseProvider);
       
   108 	  m_pageInfoFlag = 0;
       
   109 	  write<<m_pageInfoFlag;
       
   110 	  //m_xtraInfoFlag = 1;
       
   111 	  //write<<m_xtraInfoFlag;
       
   112 	  
       
   113 	  QDataStream xtraInfoWrite(&m_xtraInfoSerialized,QIODevice::WriteOnly);
    92 	  //SmfPost
   114 	  //SmfPost
    93 	  write<<postData;
   115 	  xtraInfoWrite<<postData;
    94 	  //SmfPlace
   116 	  //SmfPlace
    95 	  write<<location;
   117 	  xtraInfoWrite<<location;
    96 	  
   118 	  m_xtraInfoFlag = m_xtraInfoSerialized.size();
       
   119 	  write<<m_xtraInfoFlag;
    97 	  //serialize end
   120 	  //serialize end
    98 	  QString intfName(postProviderInterface);
   121 	  QString intfName(postProviderInterface);
    99 	  
   122 	  //we are not mentioning the max size, as we'll receive only bool
   100 	  //call private impl's send method
   123 	  //call private impl's send method
   101 	  m_SmfClientPrivate->sendRequest(m_serializedDataToServer,intfName,SmfContactPost);
   124 	  m_SmfClientPrivate->sendRequest(m_serializedDataToServer,intfName,SmfContactPost,10,m_xtraInfoSerialized);
   102 	}
   125 	}
   103 /**
   126 /**
   104  * Updates the last post to own area with new data, the success of the post can be checked with signal
   127  * Updates the last post to own area with new data, the success of the post can be checked with signal
   105  * updatePostFinished() signal
   128  * updatePostFinished() signal
   106  * @param postData edited/new data to be posted
   129  * @param postData edited/new data to be posted
   111 	  m_baseProvider = m_postProvider->getProvider();
   134 	  m_baseProvider = m_postProvider->getProvider();
   112 	  //serialize start
   135 	  //serialize start
   113 	  QDataStream write(&m_serializedDataToServer,QIODevice::WriteOnly);
   136 	  QDataStream write(&m_serializedDataToServer,QIODevice::WriteOnly);
   114 	  //SmfProvider
   137 	  //SmfProvider
   115 	  write<<*(m_baseProvider);
   138 	  write<<*(m_baseProvider);
       
   139 	  m_pageInfoFlag = 0;
       
   140 	  write<<m_pageInfoFlag;
       
   141 	  //m_xtraInfoFlag = 1;
       
   142 	  //write<<m_xtraInfoFlag;
       
   143 	  
       
   144 	  QDataStream xtraInfoWrite(&m_xtraInfoSerialized,QIODevice::WriteOnly);
   116 	  //SmfPost
   145 	  //SmfPost
   117 	  write<<postData;
   146 	  xtraInfoWrite<<postData;
   118 
   147 	  m_xtraInfoFlag = m_xtraInfoSerialized.size();
       
   148 	  write<<m_xtraInfoFlag;
   119 	  //serialize end
   149 	  //serialize end
   120 	  QString intfName(postProviderInterface);
   150 	  QString intfName(postProviderInterface);
   121 	  
   151 	  //we are not mentioning the max size, as we'll receive only bool
   122 	  //call private impl's send method
   152 	  //call private impl's send method
   123 	  m_SmfClientPrivate->sendRequest(m_serializedDataToServer,intfName,SmfContactUpdatePost);
   153 	  m_SmfClientPrivate->sendRequest(m_serializedDataToServer,intfName,SmfContactUpdatePost,10,m_xtraInfoSerialized);
   124 	}
   154 	}
   125 
   155 
   126 /**
   156 /**
   127  * Updates a post to a particular Smf contact. the success of the post can be checked with signal
   157  * Updates a post to a particular Smf contact. the success of the post can be checked with signal
   128  * updatePostFinished() signal.
   158  * updatePostFinished() signal.
   130  * @param contact contact to which the post is to be directed
   160  * @param contact contact to which the post is to be directed
   131  * @param location location data
   161  * @param location location data
   132  */
   162  */
   133 void SmfPostProviderPrivate::postDirected(SmfPost& postData,SmfContact& contact,SmfLocation* location)
   163 void SmfPostProviderPrivate::postDirected(SmfPost& postData,SmfContact& contact,SmfLocation* location)
   134 	{
   164 	{
       
   165 
   135 	  m_baseProvider = m_postProvider->getProvider();
   166 	  m_baseProvider = m_postProvider->getProvider();
   136 	  //serialize start
   167 	  //serialize start
   137 	  QDataStream write(&m_serializedDataToServer,QIODevice::WriteOnly);
   168 	  QDataStream write(&m_serializedDataToServer,QIODevice::WriteOnly);
   138 	  //SmfProvider
   169 	  //SmfProvider
   139 	  write<<*(m_baseProvider);
   170 	  write<<*(m_baseProvider);
       
   171 	  m_pageInfoFlag = 0;
       
   172 	  write<<m_pageInfoFlag;
       
   173 	  //m_xtraInfoFlag = 1;
       
   174 	  //write<<m_xtraInfoFlag;
       
   175 	  
       
   176 	  QDataStream xtraInfoWrite(&m_xtraInfoSerialized,QIODevice::WriteOnly);
   140 	  //SmfPost
   177 	  //SmfPost
   141 	  write<<postData;
   178 	  xtraInfoWrite<<postData;
   142 	  //SmfContact
   179 	  //SmfContact
   143 	  write<<contact;
   180 	  xtraInfoWrite<<contact;
   144 	  //SmfPlace
   181 	  //SmfPlace
   145 	  write<<location;
   182 	  xtraInfoWrite<<location;
       
   183 	  m_xtraInfoFlag = m_xtraInfoSerialized.size();
       
   184 	  write<<m_xtraInfoFlag;
   146 	  //serialize end
   185 	  //serialize end
   147 	  
   186 	  
   148 	  QString intfName(postProviderInterface);
   187 	  QString intfName(postProviderInterface);
   149 	  
   188 	  //we are not mentioning the max size, as we'll receive only bool
   150 	  //call private impl's send method
   189 	  //call private impl's send method
   151 	  m_SmfClientPrivate->sendRequest(m_serializedDataToServer,intfName,SmfContactPostDirected);
   190 	  m_SmfClientPrivate->sendRequest(m_serializedDataToServer,intfName,SmfContactPostDirected,10,m_xtraInfoSerialized);
   152 	}
   191 	}
   153 
   192 
   154 /**
   193 /**
   155  * Posts appearance info of the user.e.g. appear offline, busy, do-not-disturb
   194  * Posts appearance info of the user.e.g. appear offline, busy, do-not-disturb
   156  * @param appearence user appearance
   195  * @param appearence user appearance
   164 	{
   203 	{
   165 	  m_baseProvider = m_postProvider->getProvider();
   204 	  m_baseProvider = m_postProvider->getProvider();
   166 	  //serialize start
   205 	  //serialize start
   167 	  QDataStream write(&m_serializedDataToServer,QIODevice::WriteOnly);
   206 	  QDataStream write(&m_serializedDataToServer,QIODevice::WriteOnly);
   168 	  write<<*(m_baseProvider);
   207 	  write<<*(m_baseProvider);
   169 	  write<<appearence;
   208 	  m_pageInfoFlag = 0;
   170 	  QString intfName(postProviderInterface);
   209 	  write<<m_pageInfoFlag;
   171 	  
   210 	  //m_xtraInfoFlag = 1;
   172 	  //call private impl's send method
   211 	  //write<<m_xtraInfoFlag;
   173 	  m_SmfClientPrivate->sendRequest(m_serializedDataToServer,intfName,SmfContactPostAppearence);
   212 	  QDataStream xtraInfoWrite(&m_xtraInfoSerialized,QIODevice::WriteOnly);
       
   213 	  xtraInfoWrite<<appearence;
       
   214 	  m_xtraInfoFlag = m_xtraInfoSerialized.size();
       
   215 	  write<<m_xtraInfoFlag;
       
   216 	  QString intfName(postProviderInterface);
       
   217 	  //we are not mentioning the max size, as we'll receive only bool
       
   218 	  //call private impl's send method
       
   219 	  m_SmfClientPrivate->sendRequest(m_serializedDataToServer,intfName,SmfContactPostAppearence,10,m_xtraInfoSerialized);
   174 	}
   220 	}
   175 /**
   221 /**
   176  * Share /a contact's post to user's friends and followers (e.g. retweet in twitter, share on facebook)
   222  * Share /a contact's post to user's friends and followers (e.g. retweet in twitter, share on facebook)
   177  * emits updatePostFinished() signal when done.
   223  * emits updatePostFinished() signal when done.
   178  * @param postData data to be posted
   224  * @param postData data to be posted
   183 	{
   229 	{
   184 	  m_baseProvider = m_postProvider->getProvider();
   230 	  m_baseProvider = m_postProvider->getProvider();
   185 	  //serialize start
   231 	  //serialize start
   186 	  QDataStream write(&m_serializedDataToServer,QIODevice::WriteOnly);
   232 	  QDataStream write(&m_serializedDataToServer,QIODevice::WriteOnly);
   187 	  write<<*(m_baseProvider);
   233 	  write<<*(m_baseProvider);
   188 	  write<<postData;
   234 	  m_pageInfoFlag = 0;
   189 	  write<<contact;
   235 	  write<<m_pageInfoFlag;
   190 	  write<<edited;
   236 	  //m_xtraInfoFlag = 1;
   191 	  QString intfName(postProviderInterface);
   237 	  //write<<m_xtraInfoFlag;
   192 	  
   238 	  
   193 	  //call private impl's send method
   239 	  QDataStream xtraInfoWrite(&m_serializedDataToServer,QIODevice::WriteOnly);
   194 	  m_SmfClientPrivate->sendRequest(m_serializedDataToServer,intfName,SmfContactSharePost);
   240 	  xtraInfoWrite<<postData;
       
   241 	  xtraInfoWrite<<contact;
       
   242 	  xtraInfoWrite<<edited;
       
   243 	  m_xtraInfoFlag = m_xtraInfoSerialized.size();
       
   244 	  write<<m_xtraInfoFlag;
       
   245 	  QString intfName(postProviderInterface);
       
   246 	  //we are not mentioning the max size, as we'll receive only bool
       
   247 	  //call private impl's send method
       
   248 	  m_SmfClientPrivate->sendRequest(m_serializedDataToServer,intfName,SmfContactSharePost,10,m_serializedDataToServer);
   195 	}
   249 	}
   196 /**
   250 /**
   197 * From smfobserver
   251 * From smfobserver
   198 */
   252 */
   199 void SmfPostProviderPrivate::resultsAvailable(QByteArray result,SmfRequestTypeID opcode,SmfError error)
   253 void SmfPostProviderPrivate::resultsAvailable(QByteArray result,SmfRequestTypeID opcode,SmfError error)
   200    {
   254    {
   201 	writeLog("SmfPostProviderPrivate::resultsAvailable");
   255 	writeLog("SmfPostProviderPrivate::resultsAvailable");
   202 	
   256 	writeLog("opcode=");
   203 	//note:- "result" is serialized and we need to de-serialize it as per opcode
   257 	writeLog(QString::number(opcode));
   204 	//TODO:- order of serialization Error value followed by data
       
   205 	
       
   206 	QDataStream reader(&result,QIODevice::ReadOnly);
   258 	QDataStream reader(&result,QIODevice::ReadOnly);
   207 	
       
   208 	//Now de-serialize it based on opcode
   259 	//Now de-serialize it based on opcode
   209 	switch(opcode)
   260 	switch(opcode)
   210 		{
   261 		{
   211 		case SmfContactRetrievePostsComplete:
   262 		case SmfContactRetrievePosts:
   212 			{
   263 			{
   213 				if(m_postList)
   264 				if(m_postList)
   214 					{
   265 					{
   215 					delete m_postList;
   266 					delete m_postList;
   216 					m_postList = NULL;
   267 					m_postList = NULL;
   217 					}
   268 					}
   218 
   269 
   219 				m_postList = new SmfPostList;
   270 				m_postList = new SmfPostList;
   220 				//TODO
       
   221 	//   			SmfError error;
       
   222 	//   			reader>>error;
       
   223 	//   			writeLog("Error=");
       
   224 	//   			writeLog(QString::number(error));
       
   225 	//   			SmfError err = (SmfError)error;
       
   226 				reader>>*(m_postList);
   271 				reader>>*(m_postList);
   227 				writeLog("postList.count=");
   272 				writeLog("postList.count=");
   228 				writeLog(QString::number(m_postList->count()));
   273 				writeLog(QString::number(m_postList->count()));
   229 				foreach(SmfPost post,*m_postList)
   274 				foreach(SmfPost post,*m_postList)
   230 					{
   275 					{
   235 
   280 
   236 				emit m_postProvider->postsAvailable(m_postList,error,page);
   281 				emit m_postProvider->postsAvailable(m_postList,error,page);
   237 			
   282 			
   238 			}
   283 			}
   239 			break;
   284 			break;
   240 		case SmfContactPostComplete:
   285 		case SmfContactPost:
   241 			{
   286 			{
   242 				bool success;
   287 			int errInt;
   243 				reader>>success;
   288 			reader>>errInt;
   244 				writeLog("success=");
   289 			writeLog("success=");
   245 				if(success)
   290 			SmfError success = (SmfError)errInt; 
   246 					writeLog("true");
   291 			emit m_postProvider->postFinished(success);
   247 				emit m_postProvider->postFinished(success);
       
   248 			
   292 			
   249 			}
   293 			}
   250 			break;
   294 			break;
   251 		case SmfContactUpdatePostComplete:
   295 		case SmfContactUpdatePost:
   252 		case SmfContactPostDirectedComplete:
   296 		case SmfContactPostDirected:
   253 		case SmfContactSharePostComplete:
   297 		case SmfContactSharePost:
   254 			{
   298 			{
   255 			bool success;
   299 			int errInt;
   256 			reader>>success;
   300 			reader>>errInt;
   257 			writeLog("success=");
   301 			writeLog("success=");
   258 			if(success)
   302 			SmfError success = (SmfError)errInt; 
   259 				writeLog("true");
       
   260 			emit m_postProvider->postFinished(success);
   303 			emit m_postProvider->postFinished(success);
   261 			}
   304 			}
   262 //		default:
   305 		default:
   263 //			//should panic?
   306 			Q_ASSERT_X(1,"SmfPostProviderPrivate::resultsAvailable","default case");
   264 //			
       
   265 		}
   307 		}
   266    }
   308    }
   267 void SmfPostProviderPrivate::writeLog(QString log) const
   309 void SmfPostProviderPrivate::writeLog(QString log) const
   268 	{
   310 	{
   269 #ifdef WRITE_LOG
   311 #ifdef WRITE_LOG