--- a/imservices/ossprotocoladaptation/src/cossprotocolloginrequest.cpp Fri May 28 18:27:27 2010 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,420 +0,0 @@
-/*
-* Copyright (c) 2007-2008 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: Login Request to the Network Server.
-*
-*/
-
-
-#include "cossprotocolloginrequest.h"
-#include <ximpprotocolconnectionhost.h>
-#include "mossprotocolconnectionmanager.h"
-#include "ossprotocolpluginlogger.h"
-#include "cossprotocolconnection.h"
-#include "cossprotocolconnectionmanager.h"
-#include <stdlib.h>
-#include "stringutils.h"
-#include <string.h>
-#include "msgliterals.h"
-#include "msg_enums.h"
-#include "xmppparameters.h"
-#include "waittimer.h"
-#include <e32math.h>
-
-#include <ximperrors.hrh>
-
-// ======== MEMBER FUNCTIONS ========
-
-// ---------------------------------------------------------------------------
-// COSSProtocolLoginRequest::COSSProtocolLoginRequest()
-// ---------------------------------------------------------------------------
-//
-COSSProtocolLoginRequest::COSSProtocolLoginRequest (
- MOSSProtocolConnectionManager& aConnMan,
- TXIMPRequestId aRequestId ) :
- CActive ( CActive::EPriorityStandard ),
- iRequestId ( aRequestId ),
- iConnMan ( aConnMan )
- {
- LOGGER ( TXT ( "COSSProtocolLoginRequest::COSSProtocolLoginRequest Start" ) );
- CActiveScheduler::Add ( this );
- LOGGER ( TXT ( "COSSProtocolLoginRequest::COSSProtocolLoginRequest End" ) );
- }
-
-// COSSProtocolLoginRequest::ConstructL()
-// ---------------------------------------------------------------------------
-//
-void COSSProtocolLoginRequest::ConstructL()
- {
- LOGGER ( TXT ( "COSSProtocolLoginRequest::COSSProtocolLoginRequest Start-End" ) );
- LOGGER ( TXT ( "COSSProtocolLoginRequest::COSSProtocolLoginRequest End" ) );
- }
-
-
-// ---------------------------------------------------------------------------
-// COSSProtocolLoginRequest::NewL()
-// ---------------------------------------------------------------------------
-//
-COSSProtocolLoginRequest* COSSProtocolLoginRequest::NewL (
- MOSSProtocolConnectionManager& aConnMan,
- TXIMPRequestId aRequestId )
- {
- LOGGER ( TXT ( "COSSProtocolLoginRequest::NewL Start" ) );
-
- COSSProtocolLoginRequest* self =
- new ( ELeave ) COSSProtocolLoginRequest ( aConnMan, aRequestId );
- CleanupStack::PushL ( self );
- self->ConstructL();
- CleanupStack::Pop ( self );
-
- LOGGER ( TXT ( "COSSProtocolLoginRequest::NewL End" ) );
- return self;
- }
-
-
-// ---------------------------------------------------------------------------
-// COSSProtocolLoginRequest::NewLC()
-// ---------------------------------------------------------------------------
-//
-COSSProtocolLoginRequest* COSSProtocolLoginRequest::NewLC (
- MOSSProtocolConnectionManager& aConnMan,
- TXIMPRequestId aRequestId )
- {
- LOGGER ( TXT ( "COSSProtocolLoginRequest::NewLC Start" ) );
-
- COSSProtocolLoginRequest* self =
- COSSProtocolLoginRequest::NewL ( aConnMan, aRequestId );
- CleanupStack::PushL ( self );
-
- LOGGER ( TXT ( "COSSProtocolLoginRequest::NewLC End" ) );
- return self;
- }
-
-// ---------------------------------------------------------------------------
-// COSSProtocolLoginRequest::~COSSProtocolLoginRequest()
-// ---------------------------------------------------------------------------
-//
-COSSProtocolLoginRequest::~COSSProtocolLoginRequest()
- {
- LOGGER ( TXT ( "::~COSSProtocolLoginRequest Start-End" ) );
- Cancel();
- if( iUserName )
- {
- delete iUserName;
- }
-
- LOGGER ( TXT ( "::~COSSProtocolLoginRequest End\n" ) );
- }
-
-
-// ---------------------------------------------------------------------------
-// COSSProtocolLoginRequest::DoCancel()
-// ---------------------------------------------------------------------------
-//
-void COSSProtocolLoginRequest::DoCancel()
- {
- }
-
-
-// ---------------------------------------------------------------------------
-// COSSProtocolLoginRequest::RunL()
-// ---------------------------------------------------------------------------
-//
-void COSSProtocolLoginRequest::RunL()
- {
- LOGGER ( TXT ( "COSSProtocolLoginRequest::RunL Start" ) );
- message_hdr_resp* msg_struct = NULL;
- User::LeaveIfError ( iStatus.Int() );
- char* pResponse = NULL;
- pResponse = iConnMan.DataHandler().ResponseL ( iSendId );
-
- msg_struct = ( message_hdr_resp* )pResponse ;
- if( !( msg_struct->response ) )
- {
- switch( msg_struct->error_type )
- {
- case ELOGIN_NETWORK_ERROR:
- LOGGER ( TXT ( "COSSProtocolLoginRequest::RunL ELOGIN_NETWORK_ERROR" ) );
- case ELOGIN_NONE_SPECIFIED:
- //XImpfw is not giving any error code for canceling accespoint so we are using KErrDisconnected
- //once error code is provided by ximpfw we can remove
- LOGGER ( TXT ( "COSSProtocolLoginRequest::RunL ELOGIN_NONE_SPECIFIED" ) );
- iConnMan.HandleToHost().HandleRequestCompleted ( iRequestId, KErrDisconnected );
- break;
- case ELOGIN_AUTHENTICATION: //The username or password was invalid.
- LOGGER ( TXT ( "COSSProtocolLoginRequest::RunL ELOGIN_AUTHENTICATION" ) );
- iConnMan.HandleToHost().HandleRequestCompleted ( iRequestId, KXIMPErrServiceAuthenticationFailed );
- break;
- default: //for all other error codes like ssl related are mapped to general error ELOGIN_AUTHORIZATION
- LOGGER ( TXT ( "COSSProtocolLoginRequest::RunL defualt" ) );
- iConnMan.HandleToHost().HandleRequestCompleted ( iRequestId, KXIMPErrServiceGeneralError );
- break;
- }
- }
- else
- {
- iConnMan.HandleToHost().HandleRequestCompleted ( iRequestId, KErrNone );
- MPresenceBuddyInfo2* buddyPresInfo = MPresenceBuddyInfo2::NewLC();
- MPresenceCacheWriter2* presenceCacheWriter = MPresenceCacheWriter2::CreateWriterL();
- HBufC* userName = HBufC::NewLC( iUserName->Length() + iConnMan.ServiceName().Length() + KColon().Length() );
- TPtr namePtr( userName->Des() );
- namePtr.Zero();
- namePtr.Append(iConnMan.ServiceName()); // prepend service name
- namePtr.Append(KColon);
- namePtr.Append(iUserName->Des() );
- buddyPresInfo->SetIdentityL(namePtr);
- LOGGER ( TXT ( "COSSProtocolLoginRequest::owndata:%S " ), userName );
- CleanupStack::PopAndDestroy();//userName
- _LIT(KAvailable,"available");//since not getting the own status from downlayer.here
- _LIT(KStatusTest,"Online");//is hardcoded once logged in is successfully
- HBufC16 *message = KAvailable().AllocLC();
- buddyPresInfo->SetAvailabilityL( MPresenceBuddyInfo2::EAvailable,*message);
- HBufC16 *statusmessage = KStatusTest().AllocLC();
- buddyPresInfo->SetStatusMessageL(*statusmessage);
-
- TInt cacheerror = presenceCacheWriter->WritePresenceL(buddyPresInfo);
- User::LeaveIfError ( cacheerror);
- CleanupStack::PopAndDestroy ( 3 ); //buddyPresInfo, message ,statusmessage
- delete presenceCacheWriter ;
- }
-
-
- free( pResponse );
- delete this;
-
- LOGGER ( TXT ( "COSSProtocolLoginRequest::RunL End" ) );
-
- }
-
-
-// ---------------------------------------------------------------------------
-// COSSProtocolLoginRequest::RunError()
-// ---------------------------------------------------------------------------
-//
-TInt COSSProtocolLoginRequest::RunError ( TInt aError )
- {
- LOGGER ( TXT ( "COSSProtocolLoginRequest::RunError Start" ) );
-
- iConnMan.HandleToHost().HandleRequestCompleted ( iRequestId, aError );
-
- delete this;
- LOGGER ( TXT ( "COSSProtocolLoginRequest::RunError End" ) );
- return KErrNone;
- }
-
-
-// ---------------------------------------------------------------------------
-// COSSProtocolLoginRequest::IssueLoginRequestL()
-// ---------------------------------------------------------------------------
-//
-void COSSProtocolLoginRequest::IssueLoginRequestL()
- {
- LOGGER ( TXT ( "COSSProtocolLoginRequest::IssueLoginRequestL Start" ) );
-
- char *smsg = NULL;
- char *tmpmsg = NULL;
- message_hdr_req msgHdr = {0,};
- int userLen = 0;
- int totalLen = 0;
- int err = 0;
-
- smsg = ( char* ) User::AllocLC(MAX_MSG_SIZE);
-
- tmpmsg = ( char* ) User::AllocLC(MAX_MSG_SIZE);
-
- HBufC* buffer = HBufC::NewLC ( MAX_MSG_SIZE );
- TPtr bufferPtr ( buffer->Des() );
- bufferPtr.Zero();
- memset ( smsg, '\0', MAX_MSG_SIZE );
- memset ( tmpmsg, '\0', MAX_MSG_SIZE );
-
- msgHdr.message_type = ELogin_Request;
- iConnMan.DataHandler().IncreaseOpId();
- TInt Opid = iConnMan.DataHandler().GetOpId();
- msgHdr.request_id = Opid;
- memcpy ( smsg, &msgHdr, sizeof ( message_hdr_req ) );
- totalLen += sizeof ( message_hdr_req );
- bufferPtr.Zero();
-
- if ( iConnMan.UserName().Length() == 0 && iConnMan.Password().Length() == 0 ) //if username and pwd are not passed from client.read default settings
- {
- bufferPtr.Append ( iConnMan.XmppParams().UserName() );
- iUserName = bufferPtr.AllocL();
- LOGGER ( TXT ( "COSSProtocolLoginRequest::UserName:%S " ), & ( iConnMan.XmppParams().UserName() ) );
- memset ( tmpmsg, '\0', MAX_MSG_SIZE );
- err = tbufC16tochar ( bufferPtr, tmpmsg );
- if( -1 == err)
- {
- iConnMan.HandleToHost().HandleRequestCompleted ( iRequestId, err );
- }
- userLen = strlen ( tmpmsg ) + 1; //for '\0'
- memcpy ( smsg + totalLen, tmpmsg, userLen );
- totalLen += userLen;
-
- bufferPtr.Zero();
- bufferPtr.Append ( iConnMan.XmppParams().Passwd() );
- memset ( tmpmsg, '\0', MAX_MSG_SIZE );
- err = tbufC16tochar ( bufferPtr, tmpmsg );
- userLen = strlen ( tmpmsg ) + 1; //for '\0'
- memcpy ( smsg + totalLen, tmpmsg, userLen );
- totalLen += userLen;
- }
- else
- {
- iUserName = iConnMan.UserName().AllocL();
- bufferPtr.Append ( iConnMan.UserName() );
- LOGGER ( TXT ( "COSSProtocolLoginRequest::UserName:%S " ), & ( iConnMan.UserName() ) );
- memset ( tmpmsg, '\0', MAX_MSG_SIZE );
- err = tbufC16tochar ( bufferPtr, tmpmsg );
- userLen = strlen ( tmpmsg ) + 1; //for '\0'
- memcpy ( smsg + totalLen, tmpmsg, userLen );
- totalLen += userLen;
-
- bufferPtr.Zero();
- bufferPtr.Append ( iConnMan.Password() );
- memset ( tmpmsg, '\0', MAX_MSG_SIZE );
- err = tbufC16tochar ( bufferPtr, tmpmsg );
- userLen = strlen ( tmpmsg ) + 1; //for '\0'
- memcpy ( smsg + totalLen, tmpmsg, userLen );
- totalLen += userLen;
-
- }
-
- bufferPtr.Zero();
-
- bufferPtr.Append ( iConnMan.XmppParams().ServerAddress() );
- LOGGER ( TXT ( "COSSProtocolLoginRequest::RunL:ServerAddress:%S " ), & ( iConnMan.XmppParams().ServerAddress() ) );
- memset ( tmpmsg, '\0', MAX_MSG_SIZE );
- err = tbufC16tochar ( bufferPtr, tmpmsg );
- userLen = strlen ( tmpmsg ) + 1; //for '\0'
- memcpy ( smsg + totalLen, tmpmsg, userLen );
- totalLen += userLen;
-
- //resource
- bufferPtr.Zero();
- bufferPtr.Append ( GenResourceId(iConnMan.XmppParams().Resource()) );
- memset ( tmpmsg, '\0', MAX_MSG_SIZE );
- err = tbufC16tochar ( bufferPtr, tmpmsg );
- userLen = strlen ( tmpmsg ) + 1; //for '\0'
- memcpy ( smsg + totalLen, tmpmsg, userLen );
- totalLen += userLen;
-
- //ssl
- bufferPtr.Zero();
- bufferPtr.AppendNum ( iConnMan.XmppParams().Ssl() );
- memset ( tmpmsg, '\0', MAX_MSG_SIZE );
- err = tbufC16tochar ( bufferPtr, tmpmsg );
- userLen = strlen ( tmpmsg ) + 1; //for '\0'
- memcpy ( smsg + totalLen, tmpmsg, userLen );
- totalLen += userLen;
-
- //ServerPort
- bufferPtr.Zero();
- bufferPtr.AppendNum ( iConnMan.XmppParams().ServerPort() );
- memset ( tmpmsg, '\0', MAX_MSG_SIZE );
- err = tbufC16tochar ( bufferPtr, tmpmsg );
- userLen = strlen ( tmpmsg ) + 1; //for '\0'
- memcpy ( smsg + totalLen, tmpmsg, userLen );
- totalLen += userLen;
-
- //IapId
- bufferPtr.Zero();
- bufferPtr.AppendNum ( iConnMan.XmppParams().IapId() );
- memset ( tmpmsg, '\0', MAX_MSG_SIZE );
- err = tbufC16tochar ( bufferPtr, tmpmsg );
- userLen = strlen ( tmpmsg ) + 1; //for '\0'
- memcpy ( smsg + totalLen, tmpmsg, userLen );
- totalLen += userLen;
-
- //connmgr_bus
- bufferPtr.Zero();
- bufferPtr.Append ( iConnMan.XmppParams().ConnMgrBus() );
- memset ( tmpmsg, '\0', MAX_MSG_SIZE );
- err = tbufC16tochar ( bufferPtr, tmpmsg );
- userLen = strlen ( tmpmsg ) + 1; //for '\0'
- memcpy ( smsg + totalLen, tmpmsg, userLen );
- totalLen += userLen;
-
- //connmgr_path
- bufferPtr.Zero();
- bufferPtr.Append ( iConnMan.XmppParams().ConnMgrPath() );
- memset ( tmpmsg, '\0', MAX_MSG_SIZE );
- err = tbufC16tochar ( bufferPtr, tmpmsg );
- userLen = strlen ( tmpmsg ) + 1; //for '\0'
- memcpy ( smsg + totalLen, tmpmsg, userLen );
- totalLen += userLen;
-
- //protocol
- bufferPtr.Zero();
- bufferPtr.Append ( iConnMan.XmppParams().Protocol() );
- memset ( tmpmsg, '\0', MAX_MSG_SIZE );
- err = tbufC16tochar ( bufferPtr, tmpmsg );
- userLen = strlen ( tmpmsg ) + 1; //for '\0'
- memcpy ( smsg + totalLen, tmpmsg, userLen );
- totalLen += userLen;
-
-#ifdef __WINSCW__
- //ProxyServer
- bufferPtr.Zero();
- bufferPtr.Append ( iConnMan.XmppParams().ProxyServer() );
- memset ( tmpmsg, '\0', MAX_MSG_SIZE );
- err = tbufC16tochar ( bufferPtr, tmpmsg );
- userLen = strlen ( tmpmsg ) + 1; //for '\0'
- memcpy ( smsg + totalLen, tmpmsg, userLen );
- totalLen += userLen;
-
- //ProxyPort
- bufferPtr.Zero();
- bufferPtr.AppendNum ( iConnMan.XmppParams().ProxyPort() );
- memset ( tmpmsg, '\0', MAX_MSG_SIZE );
- err = tbufC16tochar ( bufferPtr, tmpmsg );
- userLen = strlen ( tmpmsg ) + 1; //for '\0'
- memcpy ( smsg + totalLen, tmpmsg, userLen );
- totalLen += userLen;
-#endif
-
-
- iSendId = iConnMan.DataHandler().SendDataL ( iStatus, smsg, totalLen );
-
- // signal the scheduler
- SetActive();
- CleanupStack::PopAndDestroy (buffer);
- CleanupStack::PopAndDestroy (tmpmsg);
- CleanupStack::PopAndDestroy (smsg);
- LOGGER ( TXT ( "COSSProtocolConnection::OpenSessionL() End" ) );
- }
-// ---------------------------------------------------------------------------
-// COSSProtocolLoginRequest::GenResourceId()
-// ---------------------------------------------------------------------------
-//
-TPtrC COSSProtocolLoginRequest::GenResourceId( const TDesC& aResourceId )
- {
- TBuf<KImpsMaxResourceIdLen> tempRId = aResourceId;
- //initialise client id
- iResourceId.SetLength(0);
-
- //generate Resourse here
- iResourceId.Append(tempRId);
-
- TTime time;
- time.HomeTime();
- TInt64 seed = time.Int64();
-
- TInt i = Math::Rand( seed );
-
- iResourceId.AppendFormat( _L("%d"), i);
-
- return iResourceId;
- }
-
-// End of file