1 // Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). |
1 // Copyright (c) 2008-2010 Nokia Corporation and/or its subsidiary(-ies). |
2 // All rights reserved. |
2 // All rights reserved. |
3 // This component and the accompanying materials are made available |
3 // This component and the accompanying materials are made available |
4 // under the terms of "Eclipse Public License v1.0" |
4 // under the terms of "Eclipse Public License v1.0" |
5 // which accompanies this distribution, and is available |
5 // which accompanies this distribution, and is available |
6 // at the URL "http://www.eclipse.org/legal/epl-v10.html". |
6 // at the URL "http://www.eclipse.org/legal/epl-v10.html". |
10 // |
10 // |
11 // Contributors: |
11 // Contributors: |
12 // |
12 // |
13 // Description: |
13 // Description: |
14 // |
14 // |
|
15 #include "OstTraceDefinitions.h" |
|
16 #ifdef OST_TRACE_COMPILER_IN_USE |
|
17 #include "WapMessageApiAgentTraces.h" |
|
18 #endif |
15 |
19 |
16 #include "WapMessageApiAgent.h" |
20 #include "WapMessageApiAgent.h" |
17 #include "WapMsgUtils.h" |
21 #include "WapMsgUtils.h" |
18 #include "CLWSPPduHandler.h" |
22 #include "CLWSPPduHandler.h" |
19 #include <es_wsms.h> |
23 #include <es_wsms.h> |
20 #include <wapmsgerr.h> |
24 #include <wapmsgerr.h> |
21 #include "WapSwsLog.h" |
|
22 |
25 |
23 CWapAsyncCallBack::CWapAsyncCallBack( const TCallBack& aCallBack, TInt aPriority ) |
26 CWapAsyncCallBack::CWapAsyncCallBack( const TCallBack& aCallBack, TInt aPriority ) |
24 : CActive( aPriority ), iCallBack( aCallBack ) |
27 : CActive( aPriority ), iCallBack( aCallBack ) |
25 { |
28 { |
26 CActiveScheduler::Add( this ); |
29 CActiveScheduler::Add( this ); |
189 @returns KErrNone on successful completion, or one of the system error codes on failure. |
192 @returns KErrNone on successful completion, or one of the system error codes on failure. |
190 */ |
193 */ |
191 { |
194 { |
192 if (!iIsOpen) |
195 if (!iIsOpen) |
193 { |
196 { |
194 LOG(SwsLog::Printf(_L("CWapMessageApiAgent::GetLocalPort: Trying to GetLocalPort on unconnected API."));) |
197 OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CWAPMESSAGEAPIAGENT_GETLOCALPORT_1, "CWapMessageApiAgent::GetLocalPort: Trying to GetLocalPort on unconnected API."); |
195 return KErrNotReady; |
198 return KErrNotReady; |
196 } |
199 } |
197 CActiveSocket* sock=GetActiveSocketByBearer(iLastPduBearer); |
200 CActiveSocket* sock=GetActiveSocketByBearer(iLastPduBearer); |
198 if (!sock) |
201 if (!sock) |
199 { |
202 { |
200 LOG(SwsLog::Printf(_L("CWapMessageApiAgent::GetLocalPort: Can not find Last Bearer."));) |
203 OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CWAPMESSAGEAPIAGENT_GETLOCALPORT_2, "CWapMessageApiAgent::GetLocalPort: Can not find Last Bearer."); |
201 return Wap::EBearerError; |
204 return Wap::EBearerError; |
202 } |
205 } |
203 sock->GetLocalPort(aLocalPort); |
206 sock->GetLocalPort(aLocalPort); |
204 return KErrNone; |
207 return KErrNone; |
205 } |
208 } |
206 |
209 |
213 @returns KErrNone on successful completion, or one of the system error codes on failure. |
216 @returns KErrNone on successful completion, or one of the system error codes on failure. |
214 */ |
217 */ |
215 { |
218 { |
216 if (!iIsOpen) |
219 if (!iIsOpen) |
217 { |
220 { |
218 LOG(SwsLog::Printf(_L("CWapMessageApiAgent::GetLocalAddress: Trying to GetLocalAddress on unconnected API."));) |
221 OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CWAPMESSAGEAPIAGENT_GETLOCALADDRESS_1, "CWapMessageApiAgent::GetLocalAddress: Trying to GetLocalAddress on unconnected API."); |
219 return KErrNotReady; |
222 return KErrNotReady; |
220 } |
223 } |
221 CActiveSocket* sock=GetActiveSocketByBearer(iLastPduBearer); |
224 CActiveSocket* sock=GetActiveSocketByBearer(iLastPduBearer); |
222 if (!sock) |
225 if (!sock) |
223 { |
226 { |
224 LOG(SwsLog::Printf(_L("CWapMessageApiAgent::GetLocalAddress: Can not find Last Bearer"));) |
227 OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CWAPMESSAGEAPIAGENT_GETLOCALADDRESS_2, "CWapMessageApiAgent::GetLocalAddress: Can not find Last Bearer"); |
225 return Wap::EBearerError; |
228 return Wap::EBearerError; |
226 } |
229 } |
227 TSockAddr& localHost=sock->GetLocalAddress(); |
230 TSockAddr& localHost=sock->GetLocalAddress(); |
228 TInt err=KErrNone; |
231 TInt err=KErrNone; |
229 TRAP(err, aLocalHost=localHost.AllocL()) |
232 TRAP(err, aLocalHost=localHost.AllocL()) |
230 if (err) |
233 if (err) |
231 { |
234 { |
232 LOG(SwsLog::Printf(_L("CWapMessageApiAgent::GetLocalAddress: Alloc Memory Err=%d"), err);) |
235 OstTraceDef1(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CWAPMESSAGEAPIAGENT_GETLOCALADDRESS_3, "CWapMessageApiAgent::GetLocalAddress: Alloc Memory Err=%d", err); |
233 } |
236 } |
234 return err; |
237 return err; |
235 } |
238 } |
236 |
239 |
237 TInt CWapMessageApiAgent::GetBearer(Wap::TBearer& aBearer) |
240 TInt CWapMessageApiAgent::GetBearer(Wap::TBearer& aBearer) |
261 @returns KErrNone on successful completion, or one of the system error codes on failure. |
264 @returns KErrNone on successful completion, or one of the system error codes on failure. |
262 */ |
265 */ |
263 { |
266 { |
264 if (!iIsOpen) |
267 if (!iIsOpen) |
265 { |
268 { |
266 LOG(SwsLog::Printf(_L("CWapMessageApiAgent::GetServerAddress: Trying to GetServerAddress on unconnected API."));) |
269 OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CWAPMESSAGEAPIAGENT_GETSERVERADDRESS_1, "CWapMessageApiAgent::GetServerAddress: Trying to GetServerAddress on unconnected API."); |
267 return KErrNotReady; |
270 return KErrNotReady; |
268 } |
271 } |
269 CActiveSocket* sock=GetActiveSocketByBearer(iLastPduBearer); |
272 CActiveSocket* sock=GetActiveSocketByBearer(iLastPduBearer); |
270 if (!sock) |
273 if (!sock) |
271 { |
274 { |
272 LOG(SwsLog::Printf(_L("CWapMessageApiAgent::GetServerAddress: Can not find last error."));) |
275 OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CWAPMESSAGEAPIAGENT_GETSERVERADDRESS_2, "CWapMessageApiAgent::GetServerAddress: Can not find last error."); |
273 return Wap::EBearerError; |
276 return Wap::EBearerError; |
274 } |
277 } |
275 return sock->GetRemoteAddress(aServerHost); |
278 return sock->GetRemoteAddress(aServerHost); |
276 } |
279 } |
277 |
280 |
331 if (!iIsOpen) |
334 if (!iIsOpen) |
332 { |
335 { |
333 TRAP(ret, CActiveSocket::NewL(iSocketServ, iBearers, aBearer, iMessageType, this, aPort)) |
336 TRAP(ret, CActiveSocket::NewL(iSocketServ, iBearers, aBearer, iMessageType, this, aPort)) |
334 if (ret!=KErrNone) |
337 if (ret!=KErrNone) |
335 { |
338 { |
336 LOG(SwsLog::Printf(_L("CWapMessageApiAgent::Connect: CActiveSocket Instantiate err=%d."),ret);) |
339 OstTraceDef1(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CWAPMESSAGEAPIAGENT_CONNECT_1, "CWapMessageApiAgent::Connect: CActiveSocket Instantiate err=%d.",ret); |
337 return ret; |
340 return ret; |
338 } |
341 } |
339 iIsOpen=ETrue; |
342 iIsOpen=ETrue; |
340 } |
343 } |
341 else |
344 else |
342 { |
345 { |
343 LOG(SwsLog::Printf(_L("CWapMessageApiAgent::Connect:Trying Connect twice to the API."));) |
346 OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CWAPMESSAGEAPIAGENT_CONNECT_2, "CWapMessageApiAgent::Connect:Trying Connect twice to the API."); |
344 ret=KErrInUse; |
347 ret=KErrInUse; |
345 } |
348 } |
346 return ret; |
349 return ret; |
347 } |
350 } |
348 |
351 |
359 @returns KErrNone on successful completion, or one of the system error codes on failure. |
362 @returns KErrNone on successful completion, or one of the system error codes on failure. |
360 */ |
363 */ |
361 { |
364 { |
362 if (aSocketServHandle==0 || !aConnection) |
365 if (aSocketServHandle==0 || !aConnection) |
363 { |
366 { |
364 LOG(SwsLog::Printf(_L("CWapMessageApiAgent::Connect:Parameter Error"));) |
367 OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CWAPMESSAGEAPIAGENT_CONNECT_1_1, "CWapMessageApiAgent::Connect:Parameter Error"); |
365 return KErrArgument; |
368 return KErrArgument; |
366 } |
369 } |
367 TInt ret=KErrNone; |
370 TInt ret=KErrNone; |
368 if (!iIsOpen) |
371 if (!iIsOpen) |
369 { |
372 { |
370 iSocketServ.SetHandle(aSocketServHandle); |
373 iSocketServ.SetHandle(aSocketServHandle); |
371 TRAP(ret, CActiveSocket::NewL(iSocketServ, iBearers, aBearer, iMessageType, this, aPort, aConnection)) |
374 TRAP(ret, CActiveSocket::NewL(iSocketServ, iBearers, aBearer, iMessageType, this, aPort, aConnection)) |
372 if (ret!=KErrNone) |
375 if (ret!=KErrNone) |
373 { |
376 { |
374 LOG(SwsLog::Printf(_L("CWapMessageApiAgent::Connect: CActiveSocket Instantiate err=%d."), ret);) |
377 OstTraceDef1(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CWAPMESSAGEAPIAGENT_CONNECT_1_2, "CWapMessageApiAgent::Connect: CActiveSocket Instantiate err=%d.", ret); |
375 return ret; |
378 return ret; |
376 } |
379 } |
377 iIsOpen=ETrue; |
380 iIsOpen=ETrue; |
378 } |
381 } |
379 else |
382 else |
380 { |
383 { |
381 LOG(SwsLog::Printf(_L("CWapMessageApiAgent::Connect:Trying to Connect twice to the API."));) |
384 OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CWAPMESSAGEAPIAGENT_CONNECT_1_3, "CWapMessageApiAgent::Connect:Trying to Connect twice to the API."); |
382 ret=KErrInUse; |
385 ret=KErrInUse; |
383 } |
386 } |
384 return ret; |
387 return ret; |
385 } |
388 } |
386 |
389 |
397 @returns KErrNone on successful completion, or one of the system error codes on failure. |
400 @returns KErrNone on successful completion, or one of the system error codes on failure. |
398 */ |
401 */ |
399 { |
402 { |
400 if (aBearer==Wap::EAll) |
403 if (aBearer==Wap::EAll) |
401 { |
404 { |
402 LOG(SwsLog::Printf(_L("CWapMessageApiAgent::SendWspMessage:Connect to EAll Error"));) |
405 OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CWAPMESSAGEAPIAGENT_CONNECT_2_1, "CWapMessageApiAgent::SendWspMessage:Connect to EAll Error"); |
403 return Wap::EBearerError; |
406 return Wap::EBearerError; |
404 } |
407 } |
405 TInt ret=KErrNone; |
408 TInt ret=KErrNone; |
406 if (!iIsOpen) |
409 if (!iIsOpen) |
407 { |
410 { |
408 TSockAddr remoteAddr; |
411 TSockAddr remoteAddr; |
409 TRAP(ret, CSWSWapMsgUtils::BuildAddrL(remoteAddr, aBearer, aRemoteHost, aRemotePort)) |
412 TRAP(ret, CSWSWapMsgUtils::BuildAddrL(remoteAddr, aBearer, aRemoteHost, aRemotePort)) |
410 if (ret!=KErrNone) |
413 if (ret!=KErrNone) |
411 { |
414 { |
412 LOG(SwsLog::Printf(_L("CWapMessageApiAgent::Connect: BuildAddress err=%d."), ret);) |
415 OstTraceDef1(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CWAPMESSAGEAPIAGENT_CONNECT_2_2, "CWapMessageApiAgent::Connect: BuildAddress err=%d.", ret); |
413 return ret; |
416 return ret; |
414 } |
417 } |
415 TRAP(ret, CActiveSocket::NewL(iSocketServ, iBearers, aBearer, iMessageType, this, remoteAddr)) |
418 TRAP(ret, CActiveSocket::NewL(iSocketServ, iBearers, aBearer, iMessageType, this, remoteAddr)) |
416 if (ret!=KErrNone) |
419 if (ret!=KErrNone) |
417 { |
420 { |
418 LOG(SwsLog::Printf(_L("CWapMessageApiAgent::Connect: CActiveSocket Instantiate err=%d."), ret);) |
421 OstTraceDef1(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CWAPMESSAGEAPIAGENT_CONNECT_2_3, "CWapMessageApiAgent::Connect: CActiveSocket Instantiate err=%d.", ret); |
419 return ret; |
422 return ret; |
420 } |
423 } |
421 iIsOpen=ETrue; |
424 iIsOpen=ETrue; |
422 } |
425 } |
423 else |
426 else |
424 { |
427 { |
425 LOG(SwsLog::Printf(_L("CWapMessageApiAgent::Connect:Trying to Connect twice to the API."));) |
428 OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CWAPMESSAGEAPIAGENT_CONNECT_2_4, "CWapMessageApiAgent::Connect:Trying to Connect twice to the API."); |
426 ret=KErrInUse; |
429 ret=KErrInUse; |
427 } |
430 } |
428 return ret; |
431 return ret; |
429 } |
432 } |
430 |
433 |
458 @returns KErrNone on successful completion, or one of the system error codes on failure. |
461 @returns KErrNone on successful completion, or one of the system error codes on failure. |
459 */ |
462 */ |
460 { |
463 { |
461 if (aBearer==Wap::EAll) |
464 if (aBearer==Wap::EAll) |
462 { |
465 { |
463 LOG(SwsLog::Printf(_L("CWapMessageApiAgent::SendWspMessage:Connect to EAll Error"));) |
466 OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CWAPMESSAGEAPIAGENT_CONNECT_3_1, "CWapMessageApiAgent::SendWspMessage:Connect to EAll Error"); |
464 return Wap::EBearerError; |
467 return Wap::EBearerError; |
465 } |
468 } |
466 if (aSocketServHandle==0 || !aConnection) |
469 if (aSocketServHandle==0 || !aConnection) |
467 { |
470 { |
468 LOG(SwsLog::Printf(_L("CWapMessageApiAgent::Connect:Parameter Error"));) |
471 OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CWAPMESSAGEAPIAGENT_CONNECT_3_2, "CWapMessageApiAgent::Connect:Parameter Error"); |
469 return KErrArgument; |
472 return KErrArgument; |
470 } |
473 } |
471 TInt ret=KErrNone; |
474 TInt ret=KErrNone; |
472 if (!iIsOpen) |
475 if (!iIsOpen) |
473 { |
476 { |
474 iSocketServ.SetHandle(aSocketServHandle); |
477 iSocketServ.SetHandle(aSocketServHandle); |
475 TSockAddr remoteAddr; |
478 TSockAddr remoteAddr; |
476 TRAP(ret, CSWSWapMsgUtils::BuildAddrL(remoteAddr, aBearer, aRemoteHost, aRemotePort)) |
479 TRAP(ret, CSWSWapMsgUtils::BuildAddrL(remoteAddr, aBearer, aRemoteHost, aRemotePort)) |
477 if (ret!=KErrNone) |
480 if (ret!=KErrNone) |
478 { |
481 { |
479 LOG(SwsLog::Printf(_L("CWapMessageApiAgent::Connect: BuildAddress err=%d."),ret);) |
482 OstTraceDef1(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CWAPMESSAGEAPIAGENT_CONNECT_3_3, "CWapMessageApiAgent::Connect: BuildAddress err=%d.",ret); |
480 return ret; |
483 return ret; |
481 } |
484 } |
482 TRAP(ret, CActiveSocket::NewL(iSocketServ, iBearers, aBearer, iMessageType, this, remoteAddr, aConnection)) |
485 TRAP(ret, CActiveSocket::NewL(iSocketServ, iBearers, aBearer, iMessageType, this, remoteAddr, aConnection)) |
483 if (ret!=KErrNone) |
486 if (ret!=KErrNone) |
484 { |
487 { |
485 LOG(SwsLog::Printf(_L("CWapMessageApiAgent::Connect: CActiveSocket Instantiate err=%d."),ret);) |
488 OstTraceDef1(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CWAPMESSAGEAPIAGENT_CONNECT_3_4, "CWapMessageApiAgent::Connect: CActiveSocket Instantiate err=%d.",ret); |
486 return ret; |
489 return ret; |
487 } |
490 } |
488 iIsOpen=ETrue; |
491 iIsOpen=ETrue; |
489 } |
492 } |
490 else |
493 else |
491 { |
494 { |
492 LOG(SwsLog::Printf(_L("CWapMessageApiAgent::Connect:Connect to a connected API."));) |
495 OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CWAPMESSAGEAPIAGENT_CONNECT_3_5, "CWapMessageApiAgent::Connect:Connect to a connected API."); |
493 ret=KErrInUse; |
496 ret=KErrInUse; |
494 } |
497 } |
495 return ret; |
498 return ret; |
496 } |
499 } |
497 // |
500 // |
556 @returns KErrNone on successful completion, or one of the system error codes on failure. |
559 @returns KErrNone on successful completion, or one of the system error codes on failure. |
557 */ |
560 */ |
558 { |
561 { |
559 if (!iIsOpen) |
562 if (!iIsOpen) |
560 { |
563 { |
561 LOG(SwsLog::Printf(_L("CWapMessageApiAgent::SendWspMessage:Tryig to send to unconnected API"));) |
564 OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CWSPMESSAGEAPIAGENT_SENDWSPMESSAGE_1, "CWapMessageApiAgent::SendWspMessage:Tryig to send to unconnected API"); |
562 return KErrNotReady; |
565 return KErrNotReady; |
563 } |
566 } |
564 if (aBearer==Wap::EAll) |
567 if (aBearer==Wap::EAll) |
565 { |
568 { |
566 LOG(SwsLog::Printf(_L("CWapMessageApiAgent::SendWspMessage:Send to EAll Error"));) |
569 OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CWSPMESSAGEAPIAGENT_SENDWSPMESSAGE_2, "CWapMessageApiAgent::SendWspMessage:Send to EAll Error"); |
567 return Wap::EBearerError; |
570 return Wap::EBearerError; |
568 } |
571 } |
569 HBufC8* sendBuf=NULL; |
572 HBufC8* sendBuf=NULL; |
570 TInt err=KErrNone; |
573 TInt err=KErrNone; |
571 TSockAddr remoteAddr; |
574 TSockAddr remoteAddr; |
572 TRAP(err, CSWSWapMsgUtils::BuildAddrL(remoteAddr, aBearer, aRemoteHost, aRemotePort)) |
575 TRAP(err, CSWSWapMsgUtils::BuildAddrL(remoteAddr, aBearer, aRemoteHost, aRemotePort)) |
573 if (err!=KErrNone) |
576 if (err!=KErrNone) |
574 { |
577 { |
575 LOG(SwsLog::Printf(_L("CWapMessageApiAgent::SendWspMessage: BuildAddress err=%d."),err);) |
578 OstTraceDef1(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CWSPMESSAGEAPIAGENT_SENDWSPMESSAGE_3, "CWapMessageApiAgent::SendWspMessage: BuildAddress err=%d.", err); |
576 return err; |
579 return err; |
577 } |
580 } |
578 TRAP(err, CCLWSPPduHandler::PackWSPPduL(sendBuf, TWSPPduType(aMethod), aURI, aReqHeaders, aReqBody, aTransactionId)) |
581 TRAP(err, CCLWSPPduHandler::PackWSPPduL(sendBuf, TWSPPduType(aMethod), aURI, aReqHeaders, aReqBody, aTransactionId)) |
579 if (err!=KErrNone) |
582 if (err!=KErrNone) |
580 { |
583 { |
581 LOG(SwsLog::Printf(_L("CWapMessageApiAgent::SendWspMessage:Pack Wsp Packet Error=%d"),err);) |
584 OstTraceDef1(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CWSPMESSAGEAPIAGENT_SENDWSPMESSAGE_4, "CWapMessageApiAgent::SendWspMessage:Pack Wsp Packet Error=%d", err); |
582 return err; |
585 return err; |
583 } |
586 } |
584 CActiveSocket* sendSock=GetActiveSocketByBearer(aBearer); |
587 CActiveSocket* sendSock=GetActiveSocketByBearer(aBearer); |
585 if (sendSock) |
588 if (sendSock) |
586 { |
589 { |
616 @returns KErrNone on successful completion, or one of the system error codes on failure. |
619 @returns KErrNone on successful completion, or one of the system error codes on failure. |
617 */ |
620 */ |
618 { |
621 { |
619 if (!iIsOpen) |
622 if (!iIsOpen) |
620 { |
623 { |
621 LOG(SwsLog::Printf(_L("CWapMessageApiAgent::SendWspMessage:Trying to send to unconnected API"));) |
624 OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CWSPMESSAGEAPIAGENT_SENDWSPMESSAGE_1_1, "CWapMessageApiAgent::SendWspMessage:Tryig to send to unconnected API"); |
622 return KErrNotReady; |
625 return KErrNotReady; |
623 } |
626 } |
624 if (!iBearers[0]) |
627 if (!iBearers[0]) |
625 { |
628 { |
626 LOG(SwsLog::Printf(_L("CWapMessageApiAgent::SendWspMessage:No Bearer"));) |
629 OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CWSPMESSAGEAPIAGENT_SENDWSPMESSAGE_1_2, "CWapMessageApiAgent::SendWspMessage:No Bearer"); |
627 return Wap::EBearerError; |
630 return Wap::EBearerError; |
628 } |
631 } |
629 HBufC8* sendBuf=NULL; |
632 HBufC8* sendBuf=NULL; |
630 TInt err=KErrNone; |
633 TInt err=KErrNone; |
631 TRAP(err, CCLWSPPduHandler::PackWSPPduL(sendBuf, TWSPPduType(aMethod), aURI, aReqHeaders, aReqBody, aTransactionId)) |
634 TRAP(err, CCLWSPPduHandler::PackWSPPduL(sendBuf, TWSPPduType(aMethod), aURI, aReqHeaders, aReqBody, aTransactionId)) |
632 if (err!=KErrNone) |
635 if (err!=KErrNone) |
633 { |
636 { |
634 LOG(SwsLog::Printf(_L("CWapMessageApiAgent::SendWspMessage:Pack Wsp Packet Error=%d"),err);) |
637 OstTraceDef1(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CWSPMESSAGEAPIAGENT_SENDWSPMESSAGE_1_3, "CWapMessageApiAgent::SendWspMessage:Pack Wsp Packet Error=%d",err); |
635 return err; |
638 return err; |
636 } |
639 } |
637 Wap::TBearer bearer=iBearers[0]->GetBearerType(); |
640 Wap::TBearer bearer=iBearers[0]->GetBearerType(); |
638 if (bearer==Wap::ESMS||bearer==Wap::EWAPSMS) |
641 if (bearer==Wap::ESMS||bearer==Wap::EWAPSMS) |
639 { |
642 { |
665 TRequestStatus* reqStatus=NULL; |
668 TRequestStatus* reqStatus=NULL; |
666 if (!iIsOpen) |
669 if (!iIsOpen) |
667 { |
670 { |
668 reqStatus=&aReqStatus; |
671 reqStatus=&aReqStatus; |
669 User::RequestComplete(reqStatus, KErrNotReady); |
672 User::RequestComplete(reqStatus, KErrNotReady); |
670 LOG(SwsLog::Printf(_L("CWspMessageApiAgent::ReceiveWspMessage: Trying to recvive from unconnected API"));) |
673 OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CWSPMESSAGEAPIAGENT_RECEIVEWSPMESSAGE_1, "CWspMessageApiAgent::ReceiveWspMessage: Trying to recevive from unconnected API"); |
671 return KErrNotReady; |
674 return KErrNotReady; |
672 } |
675 } |
673 if (iRequestActive) |
676 if (iRequestActive) |
674 { |
677 { |
675 reqStatus=&aReqStatus; |
678 reqStatus=&aReqStatus; |
676 User::RequestComplete(reqStatus, KErrInUse); |
679 User::RequestComplete(reqStatus, KErrInUse); |
677 LOG(SwsLog::Printf(_L("CWspMessageApiAgent::ReceiveWspMessage:Outstanding Receive exist"));) |
680 OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CWSPMESSAGEAPIAGENT_RECEIVEWSPMESSAGE_2, "CWspMessageApiAgent::ReceiveWspMessage:Outstanding Receive exist"); |
678 return KErrInUse; |
681 return KErrInUse; |
679 } |
682 } |
680 //Record the client buffer |
683 //Record the client buffer |
681 iClientReqHeaders=&aWspHeaders; |
684 iClientReqHeaders=&aWspHeaders; |
682 iClientReqBody=&aWspBody; |
685 iClientReqBody=&aWspBody; |
742 @param aMessage (in) The Event Type received by the ActiveSocket |
745 @param aMessage (in) The Event Type received by the ActiveSocket |
743 @param aData (in)The Event received by the ActiveSocket. |
746 @param aData (in)The Event received by the ActiveSocket. |
744 @returns KErrNone on successful completion, or one of the system error codes on failure. |
747 @returns KErrNone on successful completion, or one of the system error codes on failure. |
745 */ |
748 */ |
746 { |
749 { |
747 LOG(SwsLog::Printf(_L("CWspMessageApiAgent::Notification is called"));) |
750 OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CWSPMESSAGEAPIAGENT_NOTIFICATION_1, "CWspMessageApiAgent::Notification is called"); |
748 TWapNotificationInfo& info=*(reinterpret_cast<TWapNotificationInfo*>(const_cast<TUint8*>(aData.Ptr()))); |
751 TWapNotificationInfo& info=*(reinterpret_cast<TWapNotificationInfo*>(const_cast<TUint8*>(aData.Ptr()))); |
749 Wap::TBearer bearer=info.iBearer; |
752 Wap::TBearer bearer=info.iBearer; |
750 CActiveSocket* currentSocket=GetActiveSocketByBearer(bearer); |
753 CActiveSocket* currentSocket=GetActiveSocketByBearer(bearer); |
751 ASSERT(currentSocket!=NULL); |
754 ASSERT(currentSocket!=NULL); |
752 if (!currentSocket) |
755 if (!currentSocket) |
758 { |
761 { |
759 case EPduLengthReceived: |
762 case EPduLengthReceived: |
760 { |
763 { |
761 if (err!=KErrNone) |
764 if (err!=KErrNone) |
762 { |
765 { |
763 LOG(SwsLog::Printf(_L("CWspMessageApiAgent::Notification PDU length err status:%d"), err);) |
766 OstTraceDef1(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CWSPMESSAGEAPIAGENT_NOTIFICATION_2, "CWspMessageApiAgent::Notification PDU length err status:%d", err); |
764 currentSocket->CleanUpData(); |
767 currentSocket->CleanUpData(); |
765 if (iRequestActive) |
768 if (iRequestActive) |
766 { |
769 { |
767 iTimeoutTimer->Cancel(); |
770 iTimeoutTimer->Cancel(); |
768 User::RequestComplete(iRequestStatus, err); |
771 User::RequestComplete(iRequestStatus, err); |
769 iRequestActive=EFalse; |
772 iRequestActive=EFalse; |
770 } |
773 } |
771 } |
774 } |
772 else |
775 else |
773 { |
776 { |
774 LOG(SwsLog::Printf(_L("CWspMessageApiAgent::Notification PDU length is received"));) |
777 OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CWSPMESSAGEAPIAGENT_NOTIFICATION_3, "CWspMessageApiAgent::Notification PDU length is received"); |
775 if ((err=currentSocket->Receive())!=KErrNone) |
778 if ((err=currentSocket->Receive())!=KErrNone) |
776 { |
779 { |
777 currentSocket->CleanUpData(); |
780 currentSocket->CleanUpData(); |
778 if (iRequestActive) |
781 if (iRequestActive) |
779 { |
782 { |
788 case EPduReceived: |
791 case EPduReceived: |
789 { |
792 { |
790 CActiveSocket* sock=GetActiveSocketByStatus(EReading); |
793 CActiveSocket* sock=GetActiveSocketByStatus(EReading); |
791 if (err!=KErrNone) |
794 if (err!=KErrNone) |
792 { |
795 { |
793 LOG(SwsLog::Printf(_L("CWspMessageApiAgent::Notification PDU data is received with Err status:%d"), err);) |
796 OstTraceDef1(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CWSPMESSAGEAPIAGENT_NOTIFICATION_4, "CWspMessageApiAgent::Notification PDU data is received with Err status:%d", err); |
794 currentSocket->CleanUpData(); |
797 currentSocket->CleanUpData(); |
795 if (iRequestActive && !sock) |
798 if (iRequestActive && !sock) |
796 { |
799 { |
797 iTimeoutTimer->Cancel(); |
800 iTimeoutTimer->Cancel(); |
798 User::RequestComplete(iRequestStatus, err); |
801 User::RequestComplete(iRequestStatus, err); |
799 iRequestActive=EFalse; |
802 iRequestActive=EFalse; |
800 } |
803 } |
801 } |
804 } |
802 else |
805 else |
803 { |
806 { |
804 LOG(SwsLog::Printf(_L("CWspMessageApiAgent::Notification PDU data is received"));) |
807 OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CWSPMESSAGEAPIAGENT_NOTIFICATION_5, "CWspMessageApiAgent::Notification PDU data is received"); |
805 if (!sock && iRequestActive) |
808 if (!sock && iRequestActive) |
806 { |
809 { |
807 iTimeoutTimer->Cancel(); |
810 iTimeoutTimer->Cancel(); |
808 iRequestActive=EFalse; |
811 iRequestActive=EFalse; |
809 TRAP(err, currentSocket->UnpackPduToWspDataL()) |
812 TRAP(err, currentSocket->UnpackPduToWspDataL()) |
891 TInt err=KErrNone; |
894 TInt err=KErrNone; |
892 if (!iIsOpen) |
895 if (!iIsOpen) |
893 { |
896 { |
894 reqStatus=&aReqStatus; |
897 reqStatus=&aReqStatus; |
895 User::RequestComplete(reqStatus, KErrNotReady); |
898 User::RequestComplete(reqStatus, KErrNotReady); |
896 LOG(SwsLog::Printf(_L("CWdpMessageApiAgent::ReceiveWdpMessage:Recv From unconnected API"));) |
899 OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CWDPMESSAGEAPIAGENT_RECEIVEWDPMESSAGE_1, "CWdpMessageApiAgent::ReceiveWdpMessage: Recv From unconnected API"); |
897 return KErrNotReady; |
900 return KErrNotReady; |
898 } |
901 } |
899 //if the length has been read |
902 //if the length has been read |
900 CActiveSocket* sock=GetActiveSocketByStatus(EGotLength); |
903 CActiveSocket* sock=GetActiveSocketByStatus(EGotLength); |
901 CActiveSocket* sock1=GetActiveSocketByStatus(EReading); |
904 CActiveSocket* sock1=GetActiveSocketByStatus(EReading); |
902 if (iRequestActive || (!sock && !sock1)) |
905 if (iRequestActive || (!sock && !sock1)) |
903 { |
906 { |
904 reqStatus=&aReqStatus; |
907 reqStatus=&aReqStatus; |
905 User::RequestComplete(reqStatus, KErrInUse); |
908 User::RequestComplete(reqStatus, KErrInUse); |
906 LOG(SwsLog::Printf(_L("CWdpMessageApiAgent::ReceiveWdpMessage:in wrong state"));) |
909 OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CWDPMESSAGEAPIAGENT_RECEIVEWDPMESSAGE_2, "CWdpMessageApiAgent::ReceiveWdpMessage:in wrong state"); |
907 return KErrInUse; |
910 return KErrInUse; |
908 } |
911 } |
909 if (sock1) |
912 if (sock1) |
910 { |
913 { |
911 Wap::TBearer bearer=sock1->GetBearerType(); |
914 Wap::TBearer bearer=sock1->GetBearerType(); |
968 TRequestStatus* reqStatus=NULL; |
971 TRequestStatus* reqStatus=NULL; |
969 if (!iIsOpen) |
972 if (!iIsOpen) |
970 { |
973 { |
971 reqStatus=&aReqStatus; |
974 reqStatus=&aReqStatus; |
972 User::RequestComplete(reqStatus, KErrNotReady); |
975 User::RequestComplete(reqStatus, KErrNotReady); |
973 LOG(SwsLog::Printf(_L("CWdpMessageApiAgent::AwaitRecvDataSize:Wait For Data length From unconnected API"));) |
976 OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CWDPMESSAGEAPIAGENT_AWAITRECVDATASIZE_1, "CWdpMessageApiAgent::AwaitRecvDataSize:Wait For Data length From unconnected API"); |
974 return KErrNotReady; |
977 return KErrNotReady; |
975 } |
978 } |
976 //if the length has been read or there is some data pending, then error completion |
979 //if the length has been read or there is some data pending, then error completion |
977 CActiveSocket* sock=GetActiveSocketByStatus(EGotLength); |
980 CActiveSocket* sock=GetActiveSocketByStatus(EGotLength); |
978 CActiveSocket* sock1=GetActiveSocketByStatus(ERequestingData); |
981 CActiveSocket* sock1=GetActiveSocketByStatus(ERequestingData); |
979 CActiveSocket* sock2=GetActiveSocketByStatus(EReading); |
982 CActiveSocket* sock2=GetActiveSocketByStatus(EReading); |
980 if (iRequestActive||sock||sock1||sock2) |
983 if (iRequestActive||sock||sock1||sock2) |
981 { |
984 { |
982 reqStatus=&aReqStatus; |
985 reqStatus=&aReqStatus; |
983 User::RequestComplete(reqStatus, KErrInUse); |
986 User::RequestComplete(reqStatus, KErrInUse); |
984 LOG(SwsLog::Printf(_L("CWdpMessageApiAgent::AwaitRecvDataSize:in wrong state"));) |
987 OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CWDPMESSAGEAPIAGENT_AWAITRECVDATASIZE_2, "CWdpMessageApiAgent::AwaitRecvDataSize:in wrong state"); |
985 return KErrInUse; |
988 return KErrInUse; |
986 } |
989 } |
987 //if there is a pending length, then get it |
990 //if there is a pending length, then get it |
988 sock=GetActiveSocketByStatus(EPendingLength); |
991 sock=GetActiveSocketByStatus(EPendingLength); |
989 if (sock) |
992 if (sock) |
1031 @returns KErrNone on successful completion, or one of the system error codes on failure. |
1034 @returns KErrNone on successful completion, or one of the system error codes on failure. |
1032 */ |
1035 */ |
1033 { |
1036 { |
1034 if (!iIsOpen) |
1037 if (!iIsOpen) |
1035 { |
1038 { |
1036 LOG(SwsLog::Printf(_L("CWdpMessageApiAgent::SendWdpMessage:Send WDP to unconnected API"));) |
1039 OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CWDPMESSAGEAPIAGENT_SENDWDPMESSAGE_1, "CWdpMessageApiAgent::SendWdpMessage:Send WDP to unconnected API"); |
1037 return KErrNotReady; |
1040 return KErrNotReady; |
1038 } |
1041 } |
1039 if (aBearer==Wap::EAll) |
1042 if (aBearer==Wap::EAll) |
1040 { |
1043 { |
1041 LOG(SwsLog::Printf(_L("CWdpMessageApiAgent::SendWdpMessage:Wrong Bearer"));) |
1044 OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CWDPMESSAGEAPIAGENT_SENDWDPMESSAGE_2, "CWdpMessageApiAgent::SendWdpMessage:Wrong Bearer"); |
1042 return Wap::EBearerError; |
1045 return Wap::EBearerError; |
1043 } |
1046 } |
1044 TSockAddr remoteAddr; |
1047 TSockAddr remoteAddr; |
1045 TInt err=KErrNone; |
1048 TInt err=KErrNone; |
1046 TRAP(err, CSWSWapMsgUtils::BuildAddrL(remoteAddr, aBearer, aRemoteHost, aRemotePort)) |
1049 TRAP(err, CSWSWapMsgUtils::BuildAddrL(remoteAddr, aBearer, aRemoteHost, aRemotePort)) |
1047 if (err) |
1050 if (err) |
1048 { |
1051 { |
1049 LOG(SwsLog::Printf(_L("CWdpMessageApiAgent::SendWdpMessage:BuildAddrL Err=%d"), err);) |
1052 OstTraceDef1(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CWDPMESSAGEAPIAGENT_SENDWDPMESSAGE_3, "CWdpMessageApiAgent::SendWdpMessage:BuildAddrL Err=%d", err); |
1050 return err; |
1053 return err; |
1051 } |
1054 } |
1052 CActiveSocket* sendSock=GetActiveSocketByBearer(aBearer); |
1055 CActiveSocket* sendSock=GetActiveSocketByBearer(aBearer); |
1053 if (sendSock) |
1056 if (sendSock) |
1054 { |
1057 { |
1079 @returns KErrNone on successful completion, or one of the system error codes on failure. |
1082 @returns KErrNone on successful completion, or one of the system error codes on failure. |
1080 */ |
1083 */ |
1081 { |
1084 { |
1082 if (!iIsOpen) |
1085 if (!iIsOpen) |
1083 { |
1086 { |
1084 LOG(SwsLog::Printf(_L("CWdpMessageApiAgent::SendWdpMessage:Send WDP to unconnected API"));) |
1087 OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CWDPMESSAGEAPIAGENT_SENDWDPMESSAGE_1_1, "CWdpMessageApiAgent::SendWdpMessage:Send WDP to unconnected API"); |
1085 return KErrNotReady; |
1088 return KErrNotReady; |
1086 } |
1089 } |
1087 if (!iBearers[0]) |
1090 if (!iBearers[0]) |
1088 { |
1091 { |
1089 LOG(SwsLog::Printf(_L("CWdpMessageApiAgent::SendWdpMessage:No Bearer"));) |
1092 OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CWDPMESSAGEAPIAGENT_SENDWDPMESSAGE_1_2, "CWdpMessageApiAgent::SendWdpMessage:No Bearer"); |
1090 return Wap::EBearerError; |
1093 return Wap::EBearerError; |
1091 } |
1094 } |
1092 Wap::TBearer bearer=iBearers[0]->GetBearerType(); |
1095 Wap::TBearer bearer=iBearers[0]->GetBearerType(); |
1093 if (bearer==Wap::ESMS||bearer==Wap::EWAPSMS) |
1096 if (bearer==Wap::ESMS||bearer==Wap::EWAPSMS) |
1094 { |
1097 { |