diff -r 2669f8761a99 -r fbd2e7cec7ef simpledatamodeladapter/inc/presencepluginentitywatcher.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/simpledatamodeladapter/inc/presencepluginentitywatcher.h Wed Sep 01 12:23:14 2010 +0100 @@ -0,0 +1,301 @@ +/* +* 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: IETF SIMPLE Protocol implementation for XIMP Framework +* +*/ + + +#ifndef CPRESENCEPLUGINENTITYWATCHER_H +#define CPRESENCEPLUGINENTITYWATCHER_H + +#include +#include +#include +#include +#include "presenceplugincommon.h" +#include "mpresencepluginconnectionobs.h" +#include "presencelogger.h" + +class TXIMPRequestId; +class MSimpleDocument; +class MSimpleWatcher; +class CPresencePluginWatcher; +class MSimpleConnection; +class CPresencePluginData; + +/** + * CPresencePluginEntityWatcher + * + * Simple Engine Connection + * + * @lib presenceplugin.dll + * @since S60 v3.2 + */ +NONSHARABLE_CLASS( CPresencePluginEntityWatcher ): public CBase, + public MSimpleWatcherObserver + { + private: + + /** + * Current operation + */ + enum TPluginEntityWatcherOperation + { + EPluginIdle, + EPluginStop, + EPluginStart, + EPluginModify, + EPluginStartNotifyClient + }; + + public: + + /** + * Constructor. + * @param aObs callback for complete requests + * @param aConn Simple Engine connection + * @param aHost XIMP connection host + */ + static CPresencePluginEntityWatcher* NewL( + MPresencePluginConnectionObs& aObs, + MSimpleConnection& aConn, + CPresencePluginWatcher& aWatcher, + CPresencePluginData* aPresenceData ); + + /** + * Standard C++ destructor + */ + virtual ~CPresencePluginEntityWatcher(); + + /** + * Access Request id + * + * @since S60 3.2 + * @return XIMP request id + */ + TXIMPRequestId XIMPRequestId(); + + /** + * Access Presentity id + * + * @since S60 3.2 + * @return Presentity id + */ + TPtrC8 PresentityId(); + + /** + * Start subscribe + * + * @since S60 3.2 + * @param aPresentityId presentity id + */ + void StartSubscribeL( const TDesC8& aPresentityId ); + + /** + * Start subscribe + * + * @since S60 5.0 + * @param aPresentityId presentity id + * @param aClientRequst client status to complete + */ + void StartSubscribeL( + const TDesC8& aPresentityId, + TRequestStatus& aClientRequst ); + + /** + * Stop Subscrib + * + * @since S60 3.2 + * @param none + * @return none + */ + void StopSubscribeL(); + + /** + * Stop subscribe + * + * @since S60 5.0 + * @param aClientRequst client status to complete + */ + void StopSubscribeL( + TRequestStatus& aClientRequst ); + + /** + * Set active status to XIMP + * + * @since S60 3.2 + * @param none + * @return none + */ + void SetActiveToXIMPL( const TDesC& aIdentity ); + + /** + * Set terminated status to XIMP + * + * @since S60 3.2 + * @param aIdentity identity + * @return none + */ + void SetTerminatedToXIMPL( const TDesC& aIdentity ); + + private: + + /** + * Standard C++ constructor + * + * @param aObs, connection observer + * @param aConn, SIMPLE connection + * @param aWatcher, plugin watcher + */ + CPresencePluginEntityWatcher( + MPresencePluginConnectionObs& aObs, + MSimpleConnection& aConn, + CPresencePluginWatcher& aWatcher ); + + /** + * Performs the 2nd phase of construction. + * + * @since S60 3.2 + * @param none + * @param none + */ + void ConstructL( CPresencePluginData* aPresenceData ); + + public: // from base class MSimpleWatcherObserver + + /** + * Defined in a base class + */ + void WatcherReqCompleteL( TInt aOpId, TInt aStatus ); + + /** + * Defined in a base class + */ + void WatcherNotificationL( MSimpleDocument& aDocument ); + + /** + * Defined in a base class + */ + void WatcherListNotificationL( MSimplePresenceList& aList ); + + /** + * Defined in a base class + */ + void WatcherTerminatedL( + TInt aOpId, TInt aReason ); + + private: + + /** + * Set active status to XIMP + * + * @since S60 3.2 + * @param none + * @return none + */ + void SetActiveToXIMPL( MSimpleDocument& aDocument ); + + /** + * Set terminated status to XIMP + * + * @since S60 3.2 + * @param none + * @return none + */ + void SetTerminatedToXIMPL( ); + + /** + * Set pending status to XIMP + * + * @since S60 3.2 + * @param none + * @return none + */ + void SetPendingToXIMPL( ); + + /** + * Completes client request + * + * @since S60 5.0 + * @param aStatus, complete code + * @return none + */ + void CompleteClientReq( TInt aStatus ); + + private: // Data + + /** + * XIMP Plugin connection observer + */ + MPresencePluginConnectionObs& iConnObs; + + /** + * SIMPLE engine connection + * Not Own. + */ + MSimpleConnection& iConnection; + + /** + * SIMPLE engine watcher + * Own. + */ + MSimpleWatcher* iWatcher; + + /** + * PrFW request id + * Own. + */ + TXIMPRequestId iXIMPId; + + /** + * Subscribed entity Id. + * Own. + */ + HBufC8* iEntityId; + + /** + * Simple Engine request id + * Own. + */ + TInt iSimpleId; + + /** + * host class + * Own. + */ + CPresencePluginWatcher& iPluginWatcher; + + /** + * current pending operation + * Own. + */ + TPluginEntityWatcherOperation iOperation; + + /** + * instance to Presence data + * Own. + */ + CPresencePluginData* iPresenceData; + + /** + * Client status. + * Not own. + */ + TRequestStatus* iClientStatus; + + SIMPLE_UNIT_TEST( T_CPresencePluginEntityWatcher ) + SIMPLE_UNIT_TEST( T_CPresencePluginWatcher ) + }; + +#endif // CPRESENCEPLUGINENTITYWATCHER_H