42 self->ConstructL(); |
42 self->ConstructL(); |
43 return self; |
43 return self; |
44 } |
44 } |
45 |
45 |
46 CSmfClientSymbian::CSmfClientSymbian(smfObserver* aObserver) |
46 CSmfClientSymbian::CSmfClientSymbian(smfObserver* aObserver) |
47 : iObserver(aObserver), |
47 : CActive( EPriorityStandard ), |
48 CActive( EPriorityStandard ), |
48 iObserver(aObserver), |
49 iDataPtr(NULL, 0, 0) |
49 iDataPtr(NULL, 0, 0) |
50 { |
50 { |
51 CActiveScheduler::Add(this); |
51 CActiveScheduler::Add(this); |
52 } |
52 } |
53 |
53 |
54 void CSmfClientSymbian::ConstructL() |
54 void CSmfClientSymbian::ConstructL() |
55 { |
55 { |
56 qDebug()<<"Inside CSmfClientSymbian::ConstructL()"; |
|
57 User::LeaveIfError(iSession.connectToServer()); |
56 User::LeaveIfError(iSession.connectToServer()); |
58 } |
57 } |
59 |
58 |
60 CSmfClientSymbian::~CSmfClientSymbian() |
59 CSmfClientSymbian::~CSmfClientSymbian() |
61 { |
60 { |
123 QByteArray CSmfClientSymbian::sendRequest(QString aInterfaceName, |
122 QByteArray CSmfClientSymbian::sendRequest(QString aInterfaceName, |
124 SmfRequestTypeID requestType, |
123 SmfRequestTypeID requestType, |
125 TInt aMaxAllocation, |
124 TInt aMaxAllocation, |
126 QByteArray& aSerializedData) |
125 QByteArray& aSerializedData) |
127 { |
126 { |
128 qDebug()<<"Inside CSmfClientSymbian::sendRequest() for intf = "<<aInterfaceName; |
|
129 |
|
130 //Gets data synchronously from the server |
127 //Gets data synchronously from the server |
131 TPtr8 symbianBuf(iSession.sendSyncRequest(aInterfaceName,requestType, aMaxAllocation, aSerializedData)); |
128 TPtr8 symbianBuf(iSession.sendSyncRequest(aInterfaceName,requestType, aMaxAllocation, aSerializedData)); |
132 //convert this into bytearray |
129 //convert this into bytearray |
133 QByteArray receivedData(reinterpret_cast<const char*>(symbianBuf.Ptr()),symbianBuf.Length()); |
130 QByteArray receivedData(reinterpret_cast<const char*>(symbianBuf.Ptr()),symbianBuf.Length()); |
134 return receivedData; |
131 return receivedData; |
176 |
173 |
177 |
174 |
178 |
175 |
179 |
176 |
180 RSmfClientSymbianSession::RSmfClientSymbianSession() |
177 RSmfClientSymbianSession::RSmfClientSymbianSession() |
181 :iDataPtr8(NULL, 0, 0),iDataPtr16(NULL,0), |
178 :iDataPtr8(NULL, 0, 0), |
182 iIntfNamePtr(NULL,0),iIntfNamePtr8(NULL,0), |
179 iDataPtr16(NULL,0), |
183 iPtrProvider(NULL,0),iPtrProvider8(NULL,0), |
180 iPtrProvider(NULL,0), |
184 iPtrToXtraInfo8(NULL,0),iPtrToXtraInfo(NULL, 0), |
181 iPtrProvider8(NULL,0), |
|
182 iIntfNamePtr(NULL,0), |
|
183 iIntfNamePtr8(NULL,0), |
|
184 iPtrToXtraInfo(NULL, 0), |
|
185 iPtrToXtraInfo8(NULL,0), |
185 iPtr8ToSlot0(NULL,0) |
186 iPtr8ToSlot0(NULL,0) |
186 { |
187 { |
187 // No implementation required |
188 // No implementation required |
188 } |
189 } |
189 |
190 |
190 TInt RSmfClientSymbianSession::connectToServer() |
191 TInt RSmfClientSymbianSession::connectToServer() |
191 { |
192 { |
192 qDebug()<<"Inside RSmfClientSymbianSession::connectToServer()"; |
|
193 |
|
194 TInt error = ::StartServerL(); |
193 TInt error = ::StartServerL(); |
195 qDebug()<<"StartServerL = "<<error; |
194 qDebug()<<"StartServerL = "<<error; |
196 |
195 |
197 if ( KErrNone == error ) |
196 if ( KErrNone == error ) |
198 { |
197 { |
205 } |
204 } |
206 |
205 |
207 TPtr8 RSmfClientSymbianSession::sendSyncRequest(QByteArray& aSerializedData, |
206 TPtr8 RSmfClientSymbianSession::sendSyncRequest(QByteArray& aSerializedData, |
208 QString aInterfaceName, SmfRequestTypeID aRequestType, TInt maxSize) |
207 QString aInterfaceName, SmfRequestTypeID aRequestType, TInt maxSize) |
209 { |
208 { |
210 qDebug()<<"Inside RSmfClientSymbianSession::sendSyncRequest() for plugins"; |
|
211 qDebug()<<"iInterfaceName = "<<aInterfaceName; |
|
212 iLastRequest = aRequestType; |
209 iLastRequest = aRequestType; |
213 /** |
210 /** |
214 * The message body consists of.- |
211 * The message body consists of.- |
215 * 1. Serialized data to server SmfProvider+page information+extra information |
212 * 1. Serialized data to server SmfProvider+page information+extra information |
216 * 2. Interface name as string ("org.symbian.smf.client.gallery") |
213 * 2. Interface name as string ("org.symbian.smf.client.gallery") |
227 iPtrProvider8.Copy(reinterpret_cast<const TText8*>(aSerializedData.constData()),aSerializedData.length()); |
224 iPtrProvider8.Copy(reinterpret_cast<const TText8*>(aSerializedData.constData()),aSerializedData.length()); |
228 |
225 |
229 //convert the QByteArray into TPtr |
226 //convert the QByteArray into TPtr |
230 TPtrC8 ptrSlot0(reinterpret_cast<const TText8*>(aSerializedData.constData()),aSerializedData.length()); |
227 TPtrC8 ptrSlot0(reinterpret_cast<const TText8*>(aSerializedData.constData()),aSerializedData.length()); |
231 qDebug()<<"ptrSlot0 size = "<<ptrSlot0.Size(); |
228 qDebug()<<"ptrSlot0 size = "<<ptrSlot0.Size(); |
232 |
|
233 |
229 |
234 iInterfaceNamebyte.clear(); |
230 iInterfaceNamebyte.clear(); |
235 //Pass serialized QString for interface name |
231 //Pass serialized QString for interface name |
236 QDataStream intfNameStream(&iInterfaceNamebyte,QIODevice::WriteOnly); |
232 QDataStream intfNameStream(&iInterfaceNamebyte,QIODevice::WriteOnly); |
237 intfNameStream<<aInterfaceName; |
233 intfNameStream<<aInterfaceName; |
261 args.Set(0, &iPtrProvider8); |
257 args.Set(0, &iPtrProvider8); |
262 args.Set(1, &iIntfNamePtr8); |
258 args.Set(1, &iIntfNamePtr8); |
263 args.Set(2, &iDataPtr8); |
259 args.Set(2, &iDataPtr8); |
264 qDebug()<<"After setting 0,1,2 slots"; |
260 qDebug()<<"After setting 0,1,2 slots"; |
265 |
261 |
266 TInt err(KErrBadHandle); |
|
267 qDebug()<<"Before handle"; |
262 qDebug()<<"Before handle"; |
268 if (Handle()) |
263 if (Handle()) |
269 { |
264 { |
270 err = KErrNone; |
|
271 qDebug()<<"Before sendreceive"; |
265 qDebug()<<"Before sendreceive"; |
272 //synchronous request |
266 //synchronous request |
273 TInt sendErr = SendReceive(aRequestType, args); |
267 TInt sendErr = SendReceive(aRequestType, args); |
274 if(sendErr) |
268 if(sendErr) |
275 qDebug()<<"SendReceive error = "<<sendErr; |
269 qDebug()<<"SendReceive error = "<<sendErr; |
308 iIntfNameBuffer8 = NULL; |
302 iIntfNameBuffer8 = NULL; |
309 } |
303 } |
310 iIntfNameBuffer8 = HBufC8::NewL(iInterfaceNamebyte.size()); |
304 iIntfNameBuffer8 = HBufC8::NewL(iInterfaceNamebyte.size()); |
311 iIntfNamePtr8.Set(iIntfNameBuffer8->Des()); |
305 iIntfNamePtr8.Set(iIntfNameBuffer8->Des()); |
312 iIntfNamePtr8.Copy(reinterpret_cast<TUint8*>(iInterfaceNamebyte.data()),iInterfaceNamebyte.length()); |
306 iIntfNamePtr8.Copy(reinterpret_cast<TUint8*>(iInterfaceNamebyte.data()),iInterfaceNamebyte.length()); |
313 qDebug()<<"iIntfNamePtr8 size = "<<iIntfNamePtr8.Size(); |
307 qDebug()<<"iIntfNamePtr8 (1) size = "<<iIntfNamePtr8.Size(); |
314 |
308 |
315 if(iBuffer8) |
309 if(iBuffer8) |
316 { |
310 { |
317 delete iBuffer8; |
311 delete iBuffer8; |
318 iBuffer8 = NULL; |
312 iBuffer8 = NULL; |
319 } |
313 } |
320 qDebug()<<"Allocated for output = "<<maxSize; |
314 qDebug()<<"Allocated for output = "<<maxSize; |
321 iBuffer8 = HBufC8::NewL(maxSize); |
315 iBuffer8 = HBufC8::NewL(maxSize); |
322 iDataPtr8.Set(iBuffer8->Des()); |
316 iDataPtr8.Set(iBuffer8->Des()); |
323 qDebug()<<"After iDataPtr8.Set"; |
|
324 |
317 |
325 if(iProviderBuf8) |
318 if(iProviderBuf8) |
326 { |
319 { |
327 delete iProviderBuf8; |
320 delete iProviderBuf8; |
328 iProviderBuf8 = NULL; |
321 iProviderBuf8 = NULL; |
338 TIpcArgs args; |
331 TIpcArgs args; |
339 args.Set(0, &iPtrProvider8); |
332 args.Set(0, &iPtrProvider8); |
340 args.Set(1, &iIntfNamePtr8); |
333 args.Set(1, &iIntfNamePtr8); |
341 args.Set(2, &iDataPtr8); |
334 args.Set(2, &iDataPtr8); |
342 |
335 |
343 TInt err(KErrBadHandle); |
|
344 qDebug()<<"Before handle"; |
336 qDebug()<<"Before handle"; |
345 if (Handle()) |
337 if (Handle()) |
346 { |
338 { |
347 err = KErrNone; |
|
348 qDebug()<<"Before sendreceive"; |
339 qDebug()<<"Before sendreceive"; |
349 TInt sendErr = SendReceive(aRequestType, args); |
340 TInt sendErr = SendReceive(aRequestType, args); |
350 if(sendErr) |
341 if(sendErr) |
351 qDebug()<<"SendReceive error = "<<sendErr; |
342 qDebug()<<"SendReceive error = "<<sendErr; |
352 } |
343 } |
355 |
346 |
356 /** |
347 /** |
357 * Sends sync DSM request to the Smf server |
348 * Sends sync DSM request to the Smf server |
358 */ |
349 */ |
359 TPtr8 RSmfClientSymbianSession::sendDSMSyncRequest(SmfRequestTypeID aRequestType, |
350 TPtr8 RSmfClientSymbianSession::sendDSMSyncRequest(SmfRequestTypeID aRequestType, |
360 QByteArray& aSerializedData, SmfError aErr, TInt maxSize) |
351 QByteArray& aSerializedData, SmfError& aErr, TInt maxSize) |
361 { |
352 { |
362 /** |
353 /** |
363 * Slot 0:- Data to be passed to DSM |
354 * Slot 0:- Data to be passed to DSM |
364 * Slot 1:- Data returned from DSM |
355 * Slot 1:- Data returned from DSM |
365 * Slot 2:- Error |
356 * Slot 2:- Error |
371 delete iSlot0Buffer8; |
362 delete iSlot0Buffer8; |
372 iSlot0Buffer8 = NULL; |
363 iSlot0Buffer8 = NULL; |
373 } |
364 } |
374 iSlot0Buffer8 = HBufC8::NewL(aSerializedData.size()); |
365 iSlot0Buffer8 = HBufC8::NewL(aSerializedData.size()); |
375 iPtr8ToSlot0.Set(iSlot0Buffer8->Des()); |
366 iPtr8ToSlot0.Set(iSlot0Buffer8->Des()); |
|
367 iPtr8ToSlot0.Copy(reinterpret_cast<const TText8*>(aSerializedData.constData()),aSerializedData.length()); |
376 |
368 |
377 if(iBuffer8) |
369 if(iBuffer8) |
378 { |
370 { |
379 delete iBuffer8; |
371 delete iBuffer8; |
380 iBuffer8 = NULL; |
372 iBuffer8 = NULL; |
428 iPtrProvider8.Set(iProviderBuf8->Des()); |
420 iPtrProvider8.Set(iProviderBuf8->Des()); |
429 iPtrProvider8.Copy(reinterpret_cast<const TText8*>(aSerializedData.constData()),aSerializedData.length()); |
421 iPtrProvider8.Copy(reinterpret_cast<const TText8*>(aSerializedData.constData()),aSerializedData.length()); |
430 |
422 |
431 //convert the QByteArray into TPtr |
423 //convert the QByteArray into TPtr |
432 TPtrC8 ptrSlot0(reinterpret_cast<const TText8*>(aSerializedData.constData()),aSerializedData.length()); |
424 TPtrC8 ptrSlot0(reinterpret_cast<const TText8*>(aSerializedData.constData()),aSerializedData.length()); |
433 qDebug()<<"ptrSlot0 size = "<<ptrSlot0.Size(); |
425 qDebug()<<"ptrSlot0 size = "<<iPtrProvider8.Size(); |
434 |
426 |
435 //Convert the interface name into TPtr |
427 //Convert the interface name into TPtr |
436 //Pass serialized QString for interface name |
428 //Pass serialized QString for interface name |
437 iInterfaceNamebyte.clear(); |
429 iInterfaceNamebyte.clear(); |
438 QDataStream intfNameStream(&iInterfaceNamebyte,QIODevice::WriteOnly); |
430 QDataStream intfNameStream(&iInterfaceNamebyte,QIODevice::WriteOnly); |
444 iIntfNameBuffer8 = NULL; |
436 iIntfNameBuffer8 = NULL; |
445 } |
437 } |
446 iIntfNameBuffer8 = HBufC8::NewL(iInterfaceNamebyte.size()); |
438 iIntfNameBuffer8 = HBufC8::NewL(iInterfaceNamebyte.size()); |
447 iIntfNamePtr8.Set(iIntfNameBuffer8->Des()); |
439 iIntfNamePtr8.Set(iIntfNameBuffer8->Des()); |
448 iIntfNamePtr8.Copy(reinterpret_cast<const TText8*>(iInterfaceNamebyte.constData()),iInterfaceNamebyte.length()); |
440 iIntfNamePtr8.Copy(reinterpret_cast<const TText8*>(iInterfaceNamebyte.constData()),iInterfaceNamebyte.length()); |
449 qDebug()<<"After iIntfNamePtr8.Copy"; |
441 qDebug()<<"ptrSlot1 size = "<<iIntfNamePtr8.Size(); |
450 |
442 |
451 if(iBuffer8) |
443 if(iBuffer8) |
452 { |
444 { |
453 delete iBuffer8; |
445 delete iBuffer8; |
454 iBuffer8 = NULL; |
446 iBuffer8 = NULL; |
455 } |
447 } |
456 iBuffer8 = HBufC8::NewL(aMaxAllocation); |
448 iBuffer8 = HBufC8::NewL(aMaxAllocation); |
457 iDataPtr8.Set(iBuffer8->Des()); |
449 iDataPtr8.Set(iBuffer8->Des()); |
458 qDebug()<<"After iDataPtr.Set"; |
450 qDebug()<<"After iDataPtr.Set"; |
459 |
|
460 |
451 |
461 TIpcArgs args; |
452 TIpcArgs args; |
462 |
453 |
463 //filling the slots |
454 //filling the slots |
464 args.Set(0, &iPtrProvider8); |
455 args.Set(0, &iPtrProvider8); |
465 args.Set(1, &iIntfNamePtr8); |
456 args.Set(1, &iIntfNamePtr8); |
466 args.Set(2, &iDataPtr8); |
457 args.Set(2, &iDataPtr8); |
467 qDebug()<<"After setting 0,1,2 slots"; |
458 qDebug()<<"After setting 0,1,2 slots"; |
468 |
459 |
469 TInt err(KErrBadHandle); |
|
470 qDebug()<<"Before Handle()"; |
460 qDebug()<<"Before Handle()"; |
471 if (Handle()) |
461 if (Handle()) |
472 { |
462 { |
473 err = KErrNone; |
|
474 qDebug()<<"Before sendreceive"; |
463 qDebug()<<"Before sendreceive"; |
475 SendReceive(aRequestType, args, aStatus); |
464 SendReceive(aRequestType, args, aStatus); |
|
465 qDebug()<<"After sendreceive"; |
476 } |
466 } |
477 } |
467 } |
478 |
468 |
479 // ----------------------------------------------------------------------------- |
469 // ----------------------------------------------------------------------------- |
480 // CreateServerProcessL() |
470 // CreateServerProcessL() |
488 const TUidType serverUid( KNullUid, KNullUid, KSmfServerUID3 ); |
478 const TUidType serverUid( KNullUid, KNullUid, KSmfServerUID3 ); |
489 |
479 |
490 RProcess server; |
480 RProcess server; |
491 |
481 |
492 result = server.Create( KSmfServerFilename, KNullDesC, serverUid ); |
482 result = server.Create( KSmfServerFilename, KNullDesC, serverUid ); |
|
483 qDebug()<<"server.Create() = "<<result; |
493 if ( result != KErrNone ) |
484 if ( result != KErrNone ) |
494 { |
485 { |
495 return result; |
486 return result; |
496 } |
487 } |
497 |
488 |