diff -r 000000000000 -r 4e1aa6a622a0 sensorservices/sensorserver/inc/util/sensrvchannelconditionsetimpl.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/sensorservices/sensorserver/inc/util/sensrvchannelconditionsetimpl.h Tue Feb 02 00:53:00 2010 +0200 @@ -0,0 +1,197 @@ +/* +* 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: Channel condition set object +* +*/ + + +#ifndef SENSRVCHANNELCONDITIONSETIMPL_H +#define SENSRVCHANNELCONDITIONSETIMPL_H + +#include + +// CLASS DECLARATION + +/** +* CSensrvChannelConditionSetImpl is an implementation of interface +* CSensrvChannelConditionSet. +*/ +NONSHARABLE_CLASS(CSensrvChannelConditionSetImpl) : public CSensrvChannelConditionSet + { + friend class CSensrvChannelConditionSet; + + public: + + virtual ~CSensrvChannelConditionSetImpl(); + + public: + + /** + * Return condition set type. + * + * @since S60 5.0 + * @return TSensrvConditionSetType Type of the condition set + */ + virtual TSensrvConditionSetType ConditionSetType() const; + + /** + * Add channel condition to the condition set. Ownership of the + * CSensrvChannelCondition is transferred to the CSensrvChannelConditionSet. + * The channel condition is deleted when this condition set is destroyed. + * + * @since S60 5.0 + * @param[in] aChannelCondition Channel condition to be added + * @exception KErrArgument NULL condition or there is already a condition + * for the same index in this set and the new condition is not a + * complementary part of range condition for that existing condition. + */ + virtual void AddChannelConditionL + ( CSensrvChannelCondition* aChannelCondition ); + + /** + * Get all channel conditions added to this set. + * + * @since S60 5.0 + * @return Channel condition pointers are returned in this list. + */ + virtual const RSensrvChannelConditionList& AllConditions() const; + + /** + * Returns id of this condition set + * + * @since S60 5.0 + * @return TInt Condition set id + */ + inline TInt ConditionSetId() const { return iId; }; + + /** + * Sets id of this condition set + * + * @since S60 5.0 + * @param aId New condition set id + */ + inline void SetConditionSetId( TInt aId ) { iId = aId; }; + + /** + * Check if this set has just been added to listening. + * + * @since S60 5.0 + * @return ETrue if set has been just added. + */ + inline TBool IsJustAdded() const { return iJustAdded; } ; + + /** + * Clear iJustAdded flag + * + * @since S60 5.0 + */ + inline void ClearJustAdded() { iJustAdded = EFalse; } ; + + /** + * Checks if condition set is complete, i.e. there are + * no unpaired range conditions. + * Empty sets are not considered complete. + * + * @since S60 5.0 + * @return ETrue if set is complete. + */ + virtual TBool IsComplete() const; + + /** + * Serializes set data into single buffer that can be + * transported from client to server. + * + * @since S60 5.0 + * @return New buffer containing serialized set + */ + virtual HBufC8* SerializeLC() const; + + /** + * Takes serialized condition set as input and makes this set + * a clone of the original serialized set + * + * @since S60 5.0 + * @param[in] aSerializedSet Serialized set + * @return Standard symbian error code + */ + virtual TInt Deserialize( const TDesC8& aSerializedSet ); + + /** + * Set met data. + * + * @since S60 5.0 + * @param[in] aMetData Data that caused set to be met. + * @return Standard symbian error code + */ + virtual TInt SetMetData( const TDesC8& aMetData ); + + /** + * Get pointer to met data. + * + * @since S60 5.0 + * @return Pointer to iMetData. Can be NULL. + */ + inline HBufC8* MetData() const { return iMetData; }; + + private: + CSensrvChannelConditionSetImpl(TSensrvConditionSetType aConditionSetType); + + void ConstructL(); + + public: + + /** + * Link item for queueing condition set pointers + */ + TSglQueLink iLink; + + private: + + /** + * Type of this set. + */ + TSensrvConditionSetType iSetType; + + /** + * List of conditions added to this set. + * Conditions in the list are owned. + */ + RSensrvChannelConditionList iConditionList; + + /** + * Condition set id. Must be unique in the scope of client session. + */ + TInt iId; + + /** + * Flag to indicate that set has just been added and should be ignored + * at next buffer fill handling. + * Only used on server side, not serialized. + */ + TBool iJustAdded; + + /** + * Data that caused condition set to be met. + * Only used on server side, not serialized. + * Own. + */ + HBufC8* iMetData; + }; + + +#endif //SENSRVCHANNELCONDITIONSETIMPL_H + +// End of File + +