diff -r 000000000000 -r b497e44ab2fc syncmlfw/common/obex/obexdmplugin/inc/NSmlObexDMplugin.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/syncmlfw/common/obex/obexdmplugin/inc/NSmlObexDMplugin.h Thu Dec 17 09:07:52 2009 +0200 @@ -0,0 +1,202 @@ +/* +* 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 plugin for Device Management +* +*/ + + +#ifndef __NSMLOBEXDMPLUGIN__ +#define __NSMLOBEXDMPLUGIN__ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "nsmltransport.h" +#include "NSmlObexDMpluginConstants.h" +#include "nsmlobexserversession.h" +#include "nsmlobexcommserver.h" +#include "nsmlobexdefs.h" + +#ifdef __NSML_DEBUG__ +#include "wbxml2xmlconverter.h" +#endif // __NSML_DEBUG__ + + +const TInt KPluginTimeOutValue = 180000000;// Time (in milliseconds) for the timer + +class CDisListener; +class CNSmlObexServerSession; +class CPluginServiceTimer; +class CThreadObserver; +class CNSmlObexPacketWaiter; + +enum TNSmlObexContent + { + ENSmlDataSync, + ENSmlDeviceManagement + }; + + + +class CNSmlObexDMplugin : public CSrcsInterface, public MObexServerNotify + { +friend class CDisListener; + +public: + IMPORT_C static CNSmlObexDMplugin* NewL(); + IMPORT_C static CNSmlObexDMplugin* NewLC(); + ~CNSmlObexDMplugin(); + + // Get MObexServerNotify object to bind to CObexServer + MObexServerNotify* GetServerCallback(); + TBool IsOBEXActive(); + +public: + TPtr8 iPtr; + TPtr8 iSendPtr; + HBufC8* iData; + RNSmlDMObexServerSession iSs; + TBool iStopped; + +private: + void ConstructL(); + CNSmlObexDMplugin(); + + static TInt CreateServer( TAny* aPtr ); + static void StartServerL( TAny* aPtr ); + void TrimRightSpaceAndNull( TDes8& aDes ) const; + TInt ForwardZeroPkgL( TNSmlObexContent aSyncSelection ); + TInt CheckMimeType(); + void Disconnect(); + TInt ConvertError( TInt aError ); + +private: // from CSrcsInterface + void ErrorIndication( TInt aError ); + void TransportUpIndication(); + void TransportDownIndication(); + TInt ObexConnectIndication( const TObexConnectInfo& aRemoteInfo, const TDesC8& aInfo ); + void ObexDisconnectIndication( const TDesC8& aInfo ); + CObexBufObject* PutRequestIndication(); + TInt PutPacketIndication(); + TInt PutCompleteIndication(); + CObexBufObject* GetRequestIndication( CObexBaseObject* aRequestedObject ); + TInt GetPacketIndication(); + TInt GetCompleteIndication(); + TInt SetPathIndication( const CObex::TSetPathInfo& aPathInfo, const TDesC8& aInfo ); + void AbortIndication(); + void SetMediaType( TSrcsMediaType aMediaType ); + TInt SetObexServer( CObexServer* aObexServer ); +private: + enum TState + { + EIdle, + EGetSendPacket + }; + + TBool iZeroPkg; + TNSmlObexContent iObexContent; + CBufFlat* iObexBufData; + CObexBufObject* iObexBufObject; + CDisListener* iListener; + TState iState; + TBool iSessCancelled; + TBool iSessionActive; + CObexServer* iObexServer; + CPluginServiceTimer* iServiceTimer; + TBool iStartTimer; + TSrcsMediaType iMediaType; + +private: + friend class CPluginServiceTimer; + CNSmlObexPacketWaiter* iGetPacketWaiter; + + }; + + +class CDisListener : public CActive + { +public: + CDisListener( RNSmlDMObexServerSession& aSs, CNSmlObexDMplugin* aPlugin ) : CActive(0), iSessCancelled(EFalse), iSs(aSs), iPlugin( aPlugin ) { CActiveScheduler::Add(this); }; + ~CDisListener(); + void RunL(); + void DoCancel(); + void ListenDisconnect(); + TBool iSessCancelled; + +private: + enum TState + { + EIdle, + EListening + }; + TState iState; + RNSmlDMObexServerSession& iSs; + CNSmlObexDMplugin* iPlugin; + }; + + +//============================================================ +// Class CPluginServiceTimer declaration +//============================================================ + +class CPluginServiceTimer : public CActive + { + public: + CPluginServiceTimer( CNSmlObexDMplugin* aEngine, TInt aValue ); + void ConstructL(); + ~CPluginServiceTimer(); + void StartTimer(); + void StopTimer(); + + private: + void DoCancel(); + void RunL(); + + private: + RTimer iTimer; + CNSmlObexDMplugin* iEngine; + TInt iValue; + }; + +//============================================================ +// CNSmlObexPacketWaiter +// +//============================================================ +class CNSmlObexPacketWaiter : public CBase + { +public: + CNSmlObexPacketWaiter(RNSmlDMObexServerSession& aSession); + ~CNSmlObexPacketWaiter(); + void ConstructL(); + +public: + TInt WaitForGetData(); + inline const TDesC8& Data() const { return *iData; } + +private: + HBufC8* iData; + RNSmlDMObexServerSession& iSession; + TPtr8 iPtr; + }; + +#endif // __NSMLOBEXDMPLUGIN__ +