diff -r 000000000000 -r 094583676ce7 PECengine/AttributeLibrary2/SrcTransactions/CPEngPresenceNotificationHandler.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/PECengine/AttributeLibrary2/SrcTransactions/CPEngPresenceNotificationHandler.h Thu Dec 17 08:41:52 2009 +0200 @@ -0,0 +1,164 @@ +/* +* Copyright (c) 2004 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: Presence notification handler. +* +*/ + +#ifndef CPENGPRESENCENOTIFICATIONHANDLER_H__ +#define CPENGPRESENCENOTIFICATIONHANDLER_H__ + + +// INCLUDES +#include "MPEngIncomingTransactionHandler.h" +#include "PEngWVCspVersion.h" +#include +#include + + +//FORWARD DECLARATION +class MPEngPresenceAttrManager; +class MPEngPresenceAttrTransactionEnv; +class MPEngXMLParser; +class MPEngPresenceAttrModel2; + + + +// CLASS DECLARATION + +/** + * Presence notification handler. + * + * @lib PEngAttrLib + * @since 3.0 + */ +NONSHARABLE_CLASS( CPEngPresenceNotificationHandler ) : public CBase, + public MPEngIncomingTransactionHandler + { +public: // Constructors and destructor + + /** + * Two-phased constructor. + */ + static CPEngPresenceNotificationHandler* NewL( const TDesC& aDomain, + TPEngWVCspVersion aCspVersion, + MPEngPresenceAttrManager& aAttrManager, + MPEngPresenceAttrTransactionEnv& aTransEnv ); + + /** + * Destructor. + */ + virtual ~CPEngPresenceNotificationHandler(); + + + +private: + + /** + * C++ default constructor. + */ + CPEngPresenceNotificationHandler( MPEngPresenceAttrManager& aAttrManager, + MPEngPresenceAttrTransactionEnv& aTransEnv, + TPEngWVCspVersion aCspVersion ); + + /** + * By default Symbian 2nd phase constructor is private. + */ + void ConstructL( const TDesC& aDomain ); + + + +public: // Methods from MPEngIncomingTransactionHandler + + /** + * From MPEngIncomingTransactionHandler + * + * @since 3.0 + */ + void ProcessRequestL( const TDesC8& aRequest, + TRequestStatus& aStatus ); + + void CancelProcessing(); + + +public: // New methods + + + /** + * Checks is the incoming request + * a presence update notification. + * + * @since 3.0 + * @param aIncomingRequest The incoming request to check. + * @return ETrue if the request is presence update + * request. Else EFalse. + */ + static TBool CanHandleL( const TDesC8& aIncomingRequest ); + + + + /** + * Processes one presence notification block. + * + * @since 3.0 + * @param aPresenceBlock The presence block to process. + * @param aDomain The domain for presence notification. + * @param aSubscribedPresences Subscribed presences IDs. + * Used for matching presence notifications to + * subscribed presence IDs. + * @param aAttributeManager The attribute manager to instantiate attribute models. + * @param aParser XML parser for processing the notification. + * @param aModels Model array to append generated attribute models. + * @return EFalse if couldn't match the notification presence ID to any subscriped ID. + * Else ETrue. + */ + static TBool ProcessNotifyBlockL( const TDesC8& aPresenceBlock, + const TDesC& aDomain, + const MDesCArray& aSubscribedPresences, + MPEngPresenceAttrManager& aAttributeManager, + MPEngXMLParser& aParser, + RPointerArray< MPEngPresenceAttrModel2 >& aModels ); + + +private: // Data + + //REF: The attribute manger + MPEngPresenceAttrManager& iAttributeManager; + + //REF: The attribute transaction environment + MPEngPresenceAttrTransactionEnv& iTransEnv; + + //OWN: WV CSP version + TPEngWVCspVersion iCspVersion; + + //OWN: The XML parser + MPEngXMLParser* iXmlParser; + + //OWN: Presence data blocks + CDesC8ArraySeg iPresenceDataBlocks; + + //OWN: Parsed attribute models + RPointerArray< MPEngPresenceAttrModel2 > iModels; + + //OWN: Transaction domain. + HBufC16* iDomain; + + }; + +#endif // CPENGPRESENCENOTIFICATIONHANDLER_H__ + +// End of File + + + +