diff -r 000000000000 -r ba25891c3a9e ncdengine/debuglogger/obex/src/osmobexsender.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ncdengine/debuglogger/obex/src/osmobexsender.cpp Thu Dec 17 08:51:10 2009 +0200 @@ -0,0 +1,165 @@ +/* +* Copyright (c) 2006 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: ?Description +* +*/ + + +// Class for testing the asynchronous api of CObjectExchange client + +#include "OsmObexSender.h" +#include "ObjectExchangeClient.h" + + +COsmObexSender* COsmObexSender::NewL( MOsmObexSenderObserver& aObserver ) +{ + COsmObexSender* self = NewLC( aObserver ); + CleanupStack::Pop(self); + return self; +} + +COsmObexSender* COsmObexSender::NewLC( MOsmObexSenderObserver& aObserver ) +{ + COsmObexSender* self = new (ELeave) COsmObexSender( aObserver ); + CleanupStack::PushL(self); + self->ConstructL(); + return self; +} + +COsmObexSender::COsmObexSender( MOsmObexSenderObserver& aObserver ) : + CActive(CActive::EPriorityStandard), + iState(EWaitingToConnect), // Set initial state. Waiting for StartL function call + iObserver( aObserver ) +{ + CActiveScheduler::Add(this); +} + +void COsmObexSender::ConstructL() +{ + iObexClient = CObjectExchangeClient::NewL(); +} + + +COsmObexSender::~COsmObexSender() +{ + Cancel(); + + delete iObexClient; +} + +void COsmObexSender::DoCancel() +{ + if (iState != EWaitingToConnect && iObexClient) + { + iObexClient->Cancel(); // NOTE: following could do this? + } + iState = EWaitingToConnect; // Return to initial state +} + + +void COsmObexSender::RunL() +{ + // add proper implementations for these: + if( iStatus != KErrNone ) + { + switch( iState ) + { + case EWaitingToConnect: + iObserver.ObexDisconnected( iStatus.Int(), EWaitingToConnect ); + iState = EWaitingToConnect; + break; + case EConnecting: + iObserver.ObexDisconnected( iStatus.Int(), EConnecting ); + iState = EWaitingToConnect; + break; + case ESending: + iObserver.ObexDisconnected( iStatus.Int(), ESending ); + iState = EWaitingToConnect; + break; + case EDisconnecting: + iObserver.ObexDisconnected( iStatus.Int(), EDisconnecting ); + iState = EWaitingToConnect; + break; + default: + // should panic here? + break; + } + } + else + { + switch( iState ) + { + case EWaitingToConnect: + break; + case EConnecting: + iState = ESending; + iObexClient->SendObjectL( iFileName, iStatus ); + SetActive(); + break; + case ESending: + iState = EDisconnecting; + iObexClient->DisconnectL( iStatus ); + SetActive(); + break; + case EDisconnecting: + iState = EWaitingToConnect; + iObserver.ObexFileSent(); + // Sent successfully + break; + default: + // should panic here? + break; + }; + } +} + + + +void COsmObexSender::SendFileL( TOsmConnectionType aConnectionType, const TDesC& aFileName ) +{ + iFileName.Copy( aFileName ); + + if (iState == EWaitingToConnect) + { + iState = EConnecting; + if( aConnectionType == EOsmConnectionBT ) + { + iObexClient->ConnectL( iStatus ); + } + else + { +// iObexClient->ConnectIrL( iStatus ); + } + + SetActive(); + } +} + + +void COsmObexSender::StopL() +{ + iObexClient->StopL(); + + /* Implementation for this?? */ + /* + if (iClient && iClient->IsConnected()) + { + iClient->Abort(); + iState = EWaitingToGetDevice; + } + */ +} + + +