diff -r b6f2a363adf7 -r 7797b2f86d2b imservices/ossprotocoladaptation/src/cossprotocolloginrequest.cpp --- a/imservices/ossprotocoladaptation/src/cossprotocolloginrequest.cpp Wed Apr 14 16:17:20 2010 +0300 +++ /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 -#include "mossprotocolconnectionmanager.h" -#include "ossprotocolpluginlogger.h" -#include "cossprotocolconnection.h" -#include "cossprotocolconnectionmanager.h" -#include -#include "stringutils.h" -#include -#include "msgliterals.h" -#include "msg_enums.h" -#include "xmppparameters.h" -#include "waittimer.h" -#include - -#include - -// ======== 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 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