diff -r 866b4af7ffbe -r 4dc88a4ac6f4 obex/obexprotocol/obexbttransport/src/ObexRfcommConnector.cpp --- a/obex/obexprotocol/obexbttransport/src/ObexRfcommConnector.cpp Tue Sep 28 20:14:08 2010 +0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,176 +0,0 @@ -// Copyright (c) 2005-2009 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: -// - -#include -#include -#include "ObexRfcommConnector.h" -#include "ObexActiveRfcommConnector.h" -#include "ObexListenerRfcommConnector.h" -#include "logger.h" -#include "obexbtfaults.h" - -#ifdef __FLOG_ACTIVE -_LIT8(KLogComponent, "RFCOMM"); -#endif - -#ifdef _DEBUG -_LIT(KPanicCat, "RfcommConnector"); -#endif - -CObexRfcommConnector* CObexRfcommConnector::NewL(MObexTransportNotify& aOwner, - TBTSockAddr& aAddr) - { - LOG_STATIC_FUNC_ENTRY - - CObexRfcommConnector* self = new(ELeave) CObexRfcommConnector(aOwner, aAddr); - CleanupStack::PushL(self); - self->ConstructL(); - CleanupStack::Pop(self); - return self; - } - -CObexRfcommConnector::CObexRfcommConnector(MObexTransportNotify& aObserver, - TBTSockAddr& aAddr) - : CObexConnector(aObserver), - iAddr(aAddr) - { - LOG_FUNC - LOG(_L8("\taAddr:")); - LOGHEXDESC(aAddr); - } - -void CObexRfcommConnector::ConstructL() - { - LOG_FUNC - - LEAVEIFERRORL(iSocketServ.Connect()); - LEAVEIFERRORL(iSocketServ.FindProtocol(_L("RFCOMM"), iProtocolDesc)); - - iConnector = new(ELeave) CObexActiveRfcommConnector(*this, iSocketServ, iSocket, iProtocolDesc, iAddr); - iReceiver = new(ELeave) CObexListenerRfcommConnector(*this, iSocketServ, iSocket, iProtocolDesc, iAddr); - - BaseConstructL(); - } - -CObexRfcommConnector::~CObexRfcommConnector() - { - LOG_FUNC - - delete iConnector; - delete iReceiver; - iSocket.Close(); - iSocketServ.Close(); - } - -void CObexRfcommConnector::ConnectL() - { - LOG_FUNC - - __ASSERT_DEBUG(iConnector, PANIC(KPanicCat, ERfcommConnectorInternalError)); - iConnector->ConnectL(); - } - -void CObexRfcommConnector::CancelConnect() - { - LOG_FUNC - - __ASSERT_DEBUG(iConnector, PANIC(KPanicCat, ERfcommConnectorInternalError)); - iConnector->Cancel(); - } - -void CObexRfcommConnector::AcceptL() - { - LOG_FUNC - - __ASSERT_DEBUG(iReceiver, PANIC(KPanicCat, ERfcommConnectorInternalError)); - iReceiver->AcceptL(); - } - -void CObexRfcommConnector::CancelAccept() - { - LOG_FUNC - - __ASSERT_DEBUG(iReceiver, PANIC(KPanicCat, ERfcommConnectorInternalError)); - iReceiver->Cancel(); - } - -TBool CObexRfcommConnector::BringTransportDown() - { - LOG_FUNC - - // There's a nasty contract going on here- at most, only one of these AOs - // should be active at any time. They each use this object's iSocket, - // opening and closing it, and asserting its SubSessionHandle at various - // points. They may be better designed as a single AO state machine. - __ASSERT_DEBUG(iConnector, PANIC(KPanicCat, ERfcommConnectorInternalError)); - iConnector->Cancel(); - __ASSERT_DEBUG(iReceiver, PANIC(KPanicCat, ERfcommConnectorInternalError)); - iReceiver->Cancel(); - - // For cases where the underlying transport has gone we'll - // do an Immediate Shutdown to prevent Close() from blocking. - // This should stop dialogs from "freezing". - //returns true as this transport proceeds with taking down the transport - if ( iTransportUp ) - { - TRequestStatus status; - iSocket.Shutdown(RSocket::EImmediate, status); - User::WaitForRequest(status); - iTransportUp = EFalse; - } - - iSocket.Close(); - return ETrue; - } - -/** Used to set any link layer specific error condition flags. Bluetooth has -none, so the function is a stub. */ -void CObexRfcommConnector::SignalTransportError() - { - LOG_FUNC - } - -/** -Returns the socket instance iSocket -@return RSocket -*/ -RSocket& CObexRfcommConnector::GetSocket() - { - LOG_LINE - LOG_FUNC - - return iSocket; - } - -/** -This method is used to field completed connections from both the active -connector and the listen/acceptor. -*/ -void CObexRfcommConnector::ConnectComplete(TInt aError, TObexConnectionInfo& aSockinfo) - { - LOG_FUNC - LOG1(_L8("\taError = %d"), aError); - - if ( aError == KErrNone ) - { - Observer().TransportUp(aSockinfo); - iTransportUp = ETrue; - } - else - { - Observer().Error(aError); - __ASSERT_DEBUG(!iTransportUp, PANIC(KPanicCat, ERfcommConnectorInternalError)); - } - }