diff -r 000000000000 -r 094583676ce7 PECengine/PresenceManager2/SrcNWSessionSlot/CPEngNWSessionSlotID2Imp.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/PECengine/PresenceManager2/SrcNWSessionSlot/CPEngNWSessionSlotID2Imp.h Thu Dec 17 08:41:52 2009 +0200 @@ -0,0 +1,243 @@ +/* +* 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: NWSessionSlotID implementation. +* +*/ + +#ifndef CPENGNWSESSIONSLOTID2IMP_H +#define CPENGNWSESSIONSLOTID2IMP_H + +// INCLUDES +#include + + + +// CONSTANTS +_LIT( KPEngMatchSymbolWildAny, "*" ); +enum TPEngNWSSIDMatchMode + { + EPEngMMExact = 0, + EPEngMMWildAny = 1 + }; + + +// FORWARD DECLARATIONS +class RWriteStream; +class RReadStream; +class CPEngSessionSlotId; + + + +/** + * NWSessionSlotID implementation. + * + * @since 3.0 + */ +NONSHARABLE_CLASS( CPEngNWSessionSlotID2Imp ) : public CBase + { +public: /* Construction */ + + + /** + * Instantiates CPEngNWSessionSlotID2Imp object. + * + * @return New CPEngNWSessionSlotID2Imp instance. + */ + static CPEngNWSessionSlotID2Imp* NewL(); + + + /** + * Cloness CPEngNWSessionSlotID2Imp object. + * + * @return New CPEngNWSessionSlotID2Imp copy instance. + */ + CPEngNWSessionSlotID2Imp* CloneL() const; + + + /** + * Reset. + */ + void Reset(); + + + /** + * Destructor. + */ + ~CPEngNWSessionSlotID2Imp(); + + + +protected: + + /** + * C++ constructor. + */ + CPEngNWSessionSlotID2Imp(); + + /** + * CSymbian OS constructor.. + */ + void ConstructL(); + + + //----------------------------------------------------------------------- +public: /* NWSessionSlotID implementation */ + + /** + * Sets the NWSessionSlotID sub-part. + * + * @param aAddress Service address to use. + * @param aUserId User id to use. + * @param aAppId AppId to use. + * @param aMatchMode The match mode for sub-part. + */ + void SetServiceAddressL( const TDesC& aAddress, TPEngNWSSIDMatchMode aMatchMode ); + void SetUserIdL( const TDesC& aUserId, TPEngNWSSIDMatchMode aMatchMode ); + void SetAppIdL( const TDesC& aAppId, TPEngNWSSIDMatchMode aMatchMode ); + void SetAllL( const CPEngSessionSlotId& aBasePart, const TDesC& aAppId ); + + + /** + * Fragment access. + * + * Return pointer descriptor presenting + * requested NWSessionSlotID sub-part. + * + * @return Requested sub-part. + */ + TPtrC ServiceAddress() const; + TPtrC UserId() const; + TPtrC AppId() const; + + + /** + * Base part access + */ + const CPEngSessionSlotId& BasePart() const; + + + + + + //----------------------------------------------------------------------- +public: /* Match support */ + + /** + * Tests is certain sub-part defined as wild. + * + * @return ETrue if requested sub-part is defined as wild. + * Else EFalse. + */ + TBool IsServiceAddressWild() const; + TBool IsUserIdWild() const; + TBool IsAppIdWild() const; + TBool IsWild() const; + + + /** + * Tests is all NWSessionSlotID sub-parts defined. + * + * @return If any of sub parts isn't defined or + * is defined as wild, returns EFalse. Else ETrue. + */ + TBool IsFullyDefined() const; + + + /** + * Pattern-matches NWSessionSlotIDs. + * + * @param aIdToMatch The NWSessionSlotID to match. + * @return KErrNone if NWSessionSlotIDs match. + * Else KErrNotFound. + */ + TInt MatchFullId( const CPEngNWSessionSlotID2Imp& aIdToMatch ) const; + + + /** + * Pattern-matches NWSessionSlotIDs base parts. + * (ServiceAddress and UserId). + * + * @param aIdToMatch The NWSessionSlotID which base part to match. + * @return KErrNone if NWSessionSlotIDs match. + * Else KErrNotFound. + */ + TInt MatchBasePart( const CPEngNWSessionSlotID2Imp& aIdToMatch ) const; + TInt MatchBasePart( const CPEngSessionSlotId& aBasePartToMatch ) const; + + + + /** + * Pattern-matches NWSessionSlotIDs AppId parts. + * (AppId). + * + * @param aIdToMatch The NWSessionSlotID which AppId part to match. + * @return KErrNone if NWSessionSlotIDs match. + * Else KErrNotFound. + */ + TInt MatchAppIdPart( const CPEngNWSessionSlotID2Imp& aIdToMatch ) const; + TInt MatchAppIdPart( const TDesC& aAppId ) const; + + //----------------------------------------------------------------------- +public: /* Serialized presentation */ + + /** + * Packs NWSessionSlotIDs state to buffer and + * returns buffer to caller. + * @return NWSessionSlotID state buffer. + */ + HBufC8* PackFullLC() const; + + + /** + * Initializes NWSessionSlotID state from a package + * previously created with PackFullLC(). + * + * @param aPack NWSessionSlotID state package. + */ + void UnPackFullL( const TDesC8& aPack ); + + + /** + * Externalizes the data. + * + * @param aStream Stream where to write. + */ + void ExternalizeL( RWriteStream& aStream ) const; + + + /** + * Internalizes the data. + * + * @param aStream Stream where to read from. + */ + void InternalizeL( RReadStream& aStream ); + + + +private: //Data + + //OWN: NWSessionSlotID sub-parts + CPEngSessionSlotId* iBasePart; + HBufC* iAppId; + + //OWN: NWSessionSlotID part wild definitions + TInt iServiceAddressMatchMode; + TInt iUserIdMatchMode; + TInt iAppIdMatchMode; + + }; + +#endif //CPENGNWSESSIONSLOTID2IMP_H + +// End of File