diff -r 000000000000 -r b497e44ab2fc syncmlfw/common/obex/obexclient/inc/NSmlObexClient.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/syncmlfw/common/obex/obexclient/inc/NSmlObexClient.h Thu Dec 17 09:07:52 2009 +0200 @@ -0,0 +1,145 @@ +/* +* Copyright (c) 2002 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: SyncML Obex client +* +*/ + + +#ifndef __NSMLOBEXCLIENT_H__ +#define __NSMLOBEXCLIENT_H__ + +#include +#include +#include + +#include "nsmltransport.h" +#include "Obexsearcherobserver.h" +#include "Btconninfo.h" + +const TUint16 KNSmlObexClientGranularity = 1024; +const TUint16 KNameLen = 256; + +_LIT8( ObexName, "SyncML Obex" ); + + +#ifndef __NSMLOBEXCLIENT_PAN__ +#define __NSMLOBEXCLIENT_PAN__ + + +/** CNsmlObexClient panic codes */ +enum TNSmlObexClientPanics + { + EBTObjectExchangeBasicUi = 1, + EBTObjectExchangeReceiverInvalidState, + EBTObjectExchangeSenderExists, + EBTObjectExchangeReceiverExists, + EBTObjectExchangeSenderInvalidState, + EBTObjectExchangeNoSender, + EBTObjectExchangeAddMessage, + EBTObjectExchangeNextRecordRequestComplete, + EBTObjectExchangeAttributeRequestResult, + EBTObjectExchangeAttributeRequestComplete, + EBTObjectExchangeInvalidControlIndex, + EBTObjectExchangeProtocolRead, + EBTObjectExchangeAttributeRequest, + EBTObjectExchangeSdpRecordDelete, + EBTObjectExchangeUnexpectedState, + EBTObjectExchangeUnexpectedLogicState + }; + +inline void Panic(TNSmlObexClientPanics aReason) + { + User::Panic(_L("NSMLOBEXCLIENT"), aReason); + } + +#endif // __NSMLOBEXCLIENT_PAN__ + + + +class CNSmlObexServiceSearcher; +class CObexSearcherBase; +class MExtBTSearcherObserver; +//class T_CNsmlObexClient; //For testing purposes + +class CNsmlObexClient : public CActive, public MObexSearcherObserver + { +public: +// friend T_CNsmlObexClient; //For testing purposes + + CNsmlObexClient(); + static CNsmlObexClient* NewL(); + virtual void ConstructL ( const TDesC8& aName ); + virtual ~CNsmlObexClient(); + + virtual void ConnectL( TNSmlObexTransport aTransport,TBool aServerAlerted, TDesC8& aMimeType, TRequestStatus &aStatus ); + virtual void CloseCommunicationL( TRequestStatus &aStatus ); + virtual void ReceiveDataL( TPtr8& aStartPtr, TRequestStatus &aStatus ); + virtual void SendDataL( TDesC8& aStartPtr, TBool /*aFinalPacket*/, TRequestStatus &aStatus ); + virtual void SetBTConnInfo( const TBTDevAddr aBTDevAddr, const TUUID aUid ); + virtual void SetExtObserver( MExtBTSearcherObserver* aExtObserver ); + + virtual TBool IsBusy(); +public: + TRequestStatus* iAgentStatus; + +protected: // from CActive + void DoCancel(); + void RunL(); + +protected: //from MObexSearcherObserver + void HandleDeviceFoundL(); + void HandleDeviceErrorL( TInt aErr ); + void HandleServiceFoundL(); + void HandleServiceErrorL( TInt aErr ); + + +private: + void ConnectToServerL(); + void StopL(); + void DisconnectL(); + TBool IsConnected(); + void ErrorConversion( const TInt aError, TInt& aErrCode ); + +private: + + enum TState + { + EDisconnected, + EGettingConnection, + EWaitingToSend, + EWaitingToReceive, + EDisconnecting, + EConnectionFailed + }; + + /*! @var iState the state of the active object, determines behaviour within the RunL method. */ + TState iState; + + CObexSearcherBase* iObexSearcher; + MExtBTSearcherObserver* iExtObserver; + TBTConnInfo iBTConnInfo; + + CObexClient* iClient; + CObexBufObject* iCurrObject; + HBufC8* iMimeType; + TInt iDocumentLength; + CBufFlat* iDataBuf; + TPtr8 iDataPtr; + }; + + IMPORT_C CNsmlObexClient* CreateCNsmlObexClientL(); + typedef CNsmlObexClient* (*TNSmlCreateObexClientFunc) (); + +#endif +