diff -r 000000000000 -r 094583676ce7 IMPSengine/engsrv/inc/impsactivecirmonitor.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/IMPSengine/engsrv/inc/impsactivecirmonitor.h Thu Dec 17 08:41:52 2009 +0200 @@ -0,0 +1,188 @@ +/* +* Copyright (c) 2003-2005 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: +* A manager Class for CIR Channel. +* +*/ + + +#ifndef CImpsCirManager_H +#define CImpsCirManager_H + +// INCLUDES +#include +#include +#include "impsipcirwatcherapi.h" +#include "impscspsessionapi.h" + +// CONSTANTS +const TUint KImpsCirTcp = 0x0001; +const TUint KImpsCirUdp = 0x0002; + +// MACROS + +// DATA TYPES + +// Connection states +enum TImpsCirState + { + EImpsCirOnline = 0, + EImpsCirOffline, + EImpsCirOpeningTcp + }; + +typedef TUint TImpsCirChannels; + +// FORWARD DECLARATIONS +class CImpsSendReceive2; +class MMsgConnManager; + +// CLASS DECLARATION + +class CImpsCirManager : public CActive, public MImpsCirReceiver + { + public: // new methods + + /** + * Two phase constructor + * @param aServer WV engine server + * @param aPriority CActive priority + * @return CImpsCirManager entity + */ + static CImpsCirManager* NewL( MImpsCSPSession& aServer, TInt aPriority ); + + /** + * Destructor + */ + virtual ~CImpsCirManager(); + + /** + * Open CIR channels + * @param aChannels channel bindings + * @param aManager Connection Manager + * @param aServerPort TCP port + * @param aServerAddress TCP server address + * @param aCSPSessionID current CSP session ID + * @param aUDPPOrt UDP port + */ + void OpenChL( + TImpsCirChannels aChannels, + MMsgConnManager& aManager, + TUint aServerport, + const TDesC& aServerAddress, + const TDesC8& aCSPSessionID, + TUint aUDPPort = KDefaultUDPPortNumber ); + + /** + * Close CIR channels + * @param aChannels channel bindings + */ + void CloseCh( TImpsCirChannels aChannels ); + + /** + * CIRWatcher calls this method when it receives a CIR + * from the remote server. + * @param aMessage received CIR message + * @param sCirType CIR channel + */ + + public: // From base classes + + void CirReceivedL( const TDesC8& aMessage, + const TImpsSupportedCirTypes aCirType ); + + /** + * CIRWatcher calls this method in case it encounters an + * error situation from which it cannot recover. In general, + * the watcher is designed to be as self-contained as possible, + * but it can still happen that something quite unexpected + * happens that forces the client to handle the situation by, + * for instance, stopping the whole service and reinstating + * the watcher after the erroneus conditions have been dealt with. + * This could be called an emergency brake of a sort. + */ + void HandleErrorL( const TInt aReceiverError, + const TImpsSupportedCirTypes aCirType ); + + + protected: + // From base class + void DoCancel(); + void RunL(); + + private: + + /** + * Open CIR TCP channel + * @param aServerPort TCP port + * @param aServerAddress TCP server address + * @param aCSPSessionID current CSP session ID + */ + void DoOpenTCPL( + TUint aServerport, + const TDesC& aServerAddress, + const TDesC8& aCSPSessionID ); + + + /** + * Open CIR UDP channel + * @param aUDPPOrt UDP port + */ + void DoOpenUDP( + TUint aUDPPort = KDefaultUDPPortNumber ); + + /** + * By default constructor is private. + */ + void ConstructL( ); + + /** + * Constructor + * @param aServer WV engine server + * @param aPriority Active objects priority + */ + CImpsCirManager( MImpsCSPSession& aServer, TInt aPriority ); + + /** + * Activate entity + * @return error code KErrNotReady if previous request incomplete + */ + TInt ActivateMe(); + + /** + * Error handling + * @param aReceiverError error code + * @param aCirType CIR channel + */ + void DoHandleError( const TInt aReceiverError, + const TImpsSupportedCirTypes aCirType ); + + + private: + MImpsCSPSession& iServer; + TImpsCirState iState; + TBool iCanceled; + MMsgConnManager* iManager; + CImpsTcpCirWatcher* iTCPWatcher; + CImpsUdpCirWatcher* iUDPWatcher; + RLibrary iLibrary; + TImpsCirChannels iChannels; + TImpsCirChannels iReqChannels; + TUint iUDPPort; + }; + + +#endif // ?INCLUDE_H + +// End of File