PECengine/PresenceManager2/SrcNWSessionSlot/CPEngNWSessionSlotID2Imp.h
changeset 0 094583676ce7
--- /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 <E32Base.h>
+
+
+
+// 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