diff -r 000000000000 -r b497e44ab2fc syncmlfw/common/obex/obexcommserver/inc/nsmlobexcommserver.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/syncmlfw/common/obex/obexcommserver/inc/nsmlobexcommserver.h Thu Dec 17 09:07:52 2009 +0200 @@ -0,0 +1,144 @@ +/* +* 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 server internal server module +* +*/ + + + +#ifndef __NSMLOBEXCOMMSERVER_H__ +#define __NSMLOBEXCOMMSERVER_H__ + +// --------------------------------------------------------------------------------------- +// Includes +// --------------------------------------------------------------------------------------- +#include + +// --------------------------------------------------------------------------------------- +// Constants +// --------------------------------------------------------------------------------------- +static const TInt KTimeOutInSeconds = 1800; + +// --------------------------------------------------------------------------------------- +// Class forwards +// --------------------------------------------------------------------------------------- +class CNSmlObexCommSession; +class CNSmlTimeOut; + +// --------------------------------------------------------------------------------------- +// Server +// --------------------------------------------------------------------------------------- +class CNSmlObexCommServer : public CServer2 + { +public: + IMPORT_C static CNSmlObexCommServer* NewL( const TDesC& aServerName ); + IMPORT_C virtual ~CNSmlObexCommServer(); + +protected: + virtual CSession2* NewSessionL( const TVersion& aVersion, const RMessage2& aMessage ) const; + +private: + CNSmlObexCommServer(); + void ConstructL(); + + void IncrementSessions(); + void DecrementSessions(); + void Shutdown(); + +private: + friend class CNSmlObexCommSession; + + RMessagePtr2 iClientReceiveMsg; + TBool iClientWaitingReceivePacket; + CNSmlTimeOut* iClientReceiveTimeOut; + + RMessagePtr2 iServerGetSendMsg; + TBool iServerWaitingSendPacket; + CNSmlTimeOut* iServerGetSendTimeOut; + + RMessagePtr2 iServerListenDisconnectMsg; + TBool iServerListeningDisconnect; + + TBool iClientDisconnected; + HBufC8* iSendBuffer; + HBufC8* iRecvBuffer; + TBool iSendReady; + TBool iRecvReady; + + TInt iSessionCount; + }; + +// --------------------------------------------------------------------------------------- +// CNSmlObexCommServer session +// --------------------------------------------------------------------------------------- +class CNSmlObexCommSession : public CSession2 + { +public: + static CNSmlObexCommSession* NewL( CNSmlObexCommServer& aServer ); + void ServiceL( const RMessage2& aMessage ); + void DispatchMessageL( const RMessage2& aMessage ); + +protected: + // ObexClientSession + void Disconnect( const RMessagePtr2& aMessage ); + void SendL( const RMessagePtr2& aMessage ); + void ReceiveL( const RMessagePtr2& aMessage ); + void CancelReceive( const RMessagePtr2& aMessage ); + void ReceiveTimeout(); + + // ObexServerSession + void SetReceivedPacketL( const RMessagePtr2& aMessage ); + void GetSendPacketL( const RMessagePtr2& aMessage ); + void CancelGetSendPacket( const RMessagePtr2& aMessage ); + void GetSendTimeout(); + void ListenDisconnect( const RMessagePtr2& aMessage ); + void CancelListenDisconnect( const RMessagePtr2& aMessage ); + +private: + void ConstructL(); + CNSmlObexCommSession( CNSmlObexCommServer& aServer ); + ~CNSmlObexCommSession(); + void PanicClient( TInt aReason ) const; + + void ClientReceivePacketL(); + void ServerGetSendPacketL(); + void ServerHandleDisconnect( TInt aResult ); + void DoCancelGetSendPacket(); +private: + CNSmlObexCommServer& iServer; + }; + +// --------------------------------------------------------------------------------------- +// CNSmlTimeOut +// --------------------------------------------------------------------------------------- +typedef void (CNSmlObexCommSession::*TNSmlTimeoutCallback)(); + +class CNSmlTimeOut : public CActive + { +public: + static CNSmlTimeOut* NewL(); + ~CNSmlTimeOut(); + void RunL(); + void DoCancel(); + + void StartTimeoutHandling( CNSmlObexCommSession* aThis, TNSmlTimeoutCallback aCallback ); +private: + CNSmlTimeOut(); +private: + RTimer iTimer; + CNSmlObexCommSession* iThis; + TNSmlTimeoutCallback iCallback; + }; + +#endif // __NSMLOBEXCOMMSERVER_H__ \ No newline at end of file