diff -r 000000000000 -r c8caa15ef882 simpleengine/engine/inc/simplewatcher.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/simpleengine/engine/inc/simplewatcher.h Tue Feb 02 01:05:17 2010 +0200 @@ -0,0 +1,250 @@ +/* +* 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: SIMPLE Engine watcher +* +*/ + + + + +#ifndef simplewatcher_H +#define simplewatcher_H + +#include +#include "simplecommon.h" +#include "simpleclient.h" +#include "msimpleconnection.h" +#include "msimplewatcher.h" +#include "msimpleowncallback.h" + + +// FORWARD DECLARATION +class CSimpleEngineRequest; +class MSimpleWatcherObserver; +class MSimpleConnectionObserver; + +/** + * CSimpleWatcher + * + * SIMPLE Engine core. + * + * @lib simpleengine + * @since S60 3.2 + */ +class CSimpleWatcher : public CSimpleClient, public MSimpleWatcher + { + +public: + + /** + * Two-phased constructor. + * @since S60 3.2 + * @param aConn connection + * @param aObserver callback observer + * @return CSimpleWatcher + */ + static CSimpleWatcher* NewL( + MSimpleConnection& aConn, + MSimpleWatcherObserver& aObserver ); + + /** + * Destructor. + */ + virtual ~CSimpleWatcher(); + +// from base class MSimpleWatcher + + /** + * Destroy this entity + * + * @since S60 3.2 + */ + void Close(); + + /** + * Getter for the SIMPLE engine connection. + * @since S60 3.2 + * @return the connection + */ + const MSimpleConnection& Connection(); + + /** + * Subscribe presence entity. + * Expiry time is set based on SIMPLE settings. + * Refreshing is made by SIMPLE engine. + * Leaves with KErrInUse if there is already active subscription. + * @since S60 3.2 + * @param aURI URI of entity to be subscribed + * @param aFilter filter data, may be NULL. + * @param aRefresh whether refresh is made automatically + * @param aAnonymous whether anonymous subscription is wanted + * @return operation id + */ + TInt SubscribeL( + const TDesC8& aURI, + MSimpleFilterDocument* aFilter, + TBool aRefresh, + TBool aAnonymous ); + + /** + * Subscribe presence list. + * Expiry time is set based on SIMPLE settings. + * Refreshing is made by SIMPLE engine. + * @since S60 3.2 + * @param aURI URI of entity to be subscribed + * @param aFilter filter data, may be NULL. + * @param aRefresh whether refresh is made automatically + * @param aAnonymous whether anonymous subscription is wanted + * @return operation id + */ + TInt SubscribeListL( + const TDesC8& aURI, + MSimpleFilterDocument* aFilter, + TBool aRefresh, + TBool aAnonymous ); + + /** + * Get presence data.3 + * @since S60 3.2 + * @param aURI URI of entity to be subscribed + * @param aFilter filter data, may be NULL. + * @param aAnonymous whether anonymous subscription is wanted + * @return operation id + */ + TInt GetPresenceL( const TDesC8& aURI, MSimpleFilterDocument* aFilter, TBool aAnonymous ); + + /** + * Unsubscribe. + * Leaves with KErrNotFound if there is no active subscription. + * @since S60 3.2 + * @return operation id + */ + TInt UnsubscribeL(); + + /** + * SIP Status accessor + * Get the status of the last completed request. + * @since S60 3.2 + * @return SIP status, 0 if not available + */ + TUint SIPStatus(); + + /** + * SIP Retry-after accessor + * Get the header of the last completed request. + * @since S60 3.2 + * @return retry-after value in seconds, 0 if not available + */ + TUint SIPRetryAfter(); + + /** + * SIP Subscription-state header value accessor. + * Get the SIP Subscription-state header value of the last NOTIFY message or + * ESimpleStateTerminated when the subscription is terminated by a client. + * Refer to RFC3265 + * + * @since S60 3.2 + * @return subscription state + */ + TSimpleSipSubscriptionState SipSubscriptionState(); + +// from base class MSimpleOwnCallback + + /** + * Complete the open client request + * @since S60 3.2 + * @param aOpId operation id + * @param aStatus result status + * @param aReq request + */ + void Complete( TInt aOpId, TInt aStatus, MSimpleEngineRequest& aReq ); + + +private: + + + /** + * Two-phase constructor + */ + void ConstructL( ); + + + /** + * constructor + * @param aConn connection + * @param aObserver callback observer + */ + CSimpleWatcher( + MSimpleConnection& aConn, + MSimpleWatcherObserver& aObserver ); + + /** + * Stream document into request + * @param aReq request + * @param aFilter document + */ + void StreamDocumentL( + CSimpleEngineRequest& aReq, + MSimpleFilterDocument& aFilter ); + + /** + * New Request from server + * @since S60 3.2 + * @param aReq request + */ + void NewRequestL( MSimpleEngineRequest& aReq ); + + /** + * Complete client request + * @param aOpId operation id + * @param aStatus result status + * @return error when observer has deleted ourself in callback + */ + TInt DoCallReqComplete( + TInt aOpId, TInt aStatus ); + + +private: // data + + /** + * Client API observer for events + */ + MSimpleWatcherObserver& iObserver; + + /** + * Subscription id + */ + TInt iSubsId; + + /** + * Response counter in error situations, or state. reply + notify + */ + TInt iResCount; + + /** + * Whether WatcherReqCompleteL callback method is called + */ + TBool iComplete; + + /** + * Data buffer for transmission + * OWN. + */ + CBufFlat* iBuffer; + + }; + +#endif // simplewatcher_H + +// End of File