--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/multimediacommsengine/mmcesrv/mmcemediamanager/inc/mcepreconditions.h Tue Feb 02 01:04:58 2010 +0200
@@ -0,0 +1,315 @@
+/*
+* Copyright (c) 2005 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:
+*
+*/
+
+
+
+
+#ifndef MCEPRECONDITIONS_H
+#define MCEPRECONDITIONS_H
+
+#include <e32std.h>
+#include "mcemediadefs.h"
+#include "mcesrv.h"
+#include "mcesip.h"
+
+class CMceComMediaStream;
+class CSdpMediaField;
+class CSdpAttributeField;
+class RStringF;
+class RStringPool;
+class TStringTable;
+
+/**
+ *
+ *
+ * @lib
+ */
+
+class TMcePreconditions
+ {
+
+
+public: //
+
+ enum TState
+ {
+ ECreated,
+ ENegotiating,
+ EReserved
+ };
+
+ enum TPreconditionType
+ {
+ EQosPreconds = 1,
+ ESecPreconds
+ };
+
+public: // Constructors & Destructor
+
+
+ /**
+ * C++ default constructor.
+ */
+ TMcePreconditions( CMceComMediaStream& aStream );
+
+ virtual ~TMcePreconditions();
+ void ConstructL();
+
+
+public: // API
+
+ virtual void EncodeL( CSdpMediaField& aMedia ) = 0;
+ virtual TMceSipWarningCode DecodeL( CSdpMediaField& aMedia ) = 0;
+ virtual void Reserved() = 0;
+ virtual TBool ReservationNeeded() const = 0;
+ virtual TBool RemoteReservationNeeded() const = 0;
+ virtual TMcePreconditions* CloneL( CMceComMediaStream& aStream ) = 0;
+
+ TBool IsMet() const;
+
+ TPreconditionType Type();
+
+
+protected: //methods
+
+ virtual void DoConstructL() = 0;
+ void ConstrucL( const TMcePreconditions& aPreconditions );
+
+protected: //data
+
+ CMceComMediaStream& iStream;
+ TState iState;
+ RStringPool iStringPool;
+ const TStringTable* iStringTable;
+ TPreconditionType iType;
+
+
+protected: //data
+
+ RStringF iKAttributeCurr;
+ RStringF iKAttributeDes;
+ RStringF iKAttributeConf;
+ RStringF iKAttributeNone;
+ RStringF iKAttributeSend;
+ RStringF iKAttributeRecv;
+ RStringF iKAttributeSendRecv;
+ RStringF iKAttributeRemote;
+ RStringF iKAttributeLocal;
+ RStringF iKAttributeMandatory;
+ RStringF iKAttributeOptional;
+ RStringF iKAttributeFailure;
+ RStringF iKAttributeUnknown;
+ RStringF iKAttributeEnd2End;
+
+private:
+ friend class TMcePreconditionsFactory;
+
+ };
+
+
+/**
+ *
+ *
+ * @lib
+ */
+class TMceSegmentedPreconditions : public TMcePreconditions
+ {
+
+
+public: // Constructors & Destructor
+
+
+ /**
+ * C++ default constructor.
+ */
+ TMceSegmentedPreconditions( CMceComMediaStream& aStream );
+
+
+public: // from TMcePreconditions
+
+ void EncodeL( CSdpMediaField& aMedia );
+ TMceSipWarningCode DecodeL( CSdpMediaField& aMedia );
+ void Reserved();
+ TBool ReservationNeeded() const;
+ TBool RemoteReservationNeeded() const;
+ TMcePreconditions* CloneL( CMceComMediaStream& aStream );
+
+private: //from TMcePreconditions
+
+ void DoConstructL();
+
+private: //encode
+
+ void EncodeCurrentStatusL( CSdpMediaField& aMedia,
+ RStringF aAccessNetwork ) const;
+ void EncodeDesiredStatusL( CSdpMediaField& aMedia,
+ RStringF aAccessNetwork ) const;
+ void EncodeConfirmationL( CSdpMediaField& aMedia );
+
+ HBufC8* CurrentStausTextLC( const TDesC8& aAccessNetwork,
+ const TDesC8& aMediaDirection ) const;
+ HBufC8* DesiredStausTextLC( const TDesC8& aStrength,
+ const TDesC8& aAccessNetwork,
+ const TDesC8& aMediaDirection ) const;
+
+private: //decode
+
+ TUint DecodeCurrentStatusL( CSdpAttributeField& aAttribute );
+ TUint DecodeDesiredStatusL( CSdpAttributeField& aAttribute );
+ TUint DecodeConfStatusL( CSdpAttributeField& aAttribute );
+ TInt ParseCurrentStatus( const TDesC8& aLine,
+ TPtrC8& aAccessNetwork,
+ TPtrC8& aMediaDirection );
+ TInt ParseDesiredStatus( const TDesC8& aLine,
+ TPtrC8& aStrength,
+ TPtrC8& aAccessNetwork,
+ TPtrC8& aMediaDirection );
+
+ RStringF DecodeMediaDirectionL( const TDesC8& aMediaDirection );
+ RStringF DecodeStrengthL( const TDesC8& aStrength );
+
+private:
+
+ void SetState();
+ void SetRemoteStatus( RStringF aDirection );
+ RStringF DesiredDirection( RStringF aAccessNetwork );
+ void SetDesiredStatus( RStringF aAccessNetwork,
+ RStringF aDirection,
+ RStringF sStrength );
+ void ConstrucL( const TMceSegmentedPreconditions& aPreconditions );
+
+
+private: //data
+
+
+ RStringF iCurrentLocalStatus;
+ RStringF iCurrentRemoteStatus;
+ RStringF iDesiredLocalSend;
+ RStringF iDesiredLocalRecv;
+ RStringF iDesiredRemoteSend;
+ RStringF iDesiredRemoteRecv;
+ RStringF iConfirmation;
+
+
+ //definitions for unit testing
+ MCEMM_UT_DEFINITIONS
+
+
+ };
+
+/**
+ *
+ *
+ * @lib
+ */
+class TMceSecurePreconditions : public TMcePreconditions
+ {
+
+
+public: // Constructors & Destructor
+
+
+ /**
+ * C++ default constructor.
+ */
+ TMceSecurePreconditions( CMceComMediaStream& aStream );
+
+
+public: // from TMcePreconditions
+
+ void EncodeL( CSdpMediaField& aMedia );
+ TMceSipWarningCode DecodeL( CSdpMediaField& aMedia );
+ void Reserved();
+ TBool ReservationNeeded() const;
+ TBool RemoteReservationNeeded() const;
+ TMcePreconditions* CloneL( CMceComMediaStream& aStream );
+
+private: //from TMcePreconditions
+
+ void DoConstructL();
+
+private: //encode
+
+ void EncodeCurrentStatusL( CSdpMediaField& aMedia,
+ TMceNegotiationRole aRole );
+
+ void EncodeDesiredStatusL( CSdpMediaField& aMedia );
+
+ void EncodeConfirmationL( CSdpMediaField& aMedia );
+
+ HBufC8* CurrentStatusTextLC( const TDesC8& aMediaDirection ) const;
+
+ HBufC8* DesiredStatusTextLC( const TDesC8& aStrength,
+ const TDesC8& aMediaDirection ) const;
+
+
+protected: //decode
+
+ TUint DecodeCurrentStatusL( CSdpAttributeField& aAttribute );
+
+ TUint DecodeDesiredStatusL( CSdpAttributeField& aAttribute );
+
+ TUint DecodeConfStatusL( CSdpAttributeField& aAttribute );
+
+ TBool ParseCurrentStatus( const TDesC8& aLine,
+ TPtrC8& aMediaDirection );
+
+ TBool ParseDesiredStatus( const TDesC8& aLine,
+ TPtrC8& aStrength,
+ TPtrC8& aMediaDirection );
+
+ RStringF DecodeMediaDirectionL( const TDesC8& aMediaDirection );
+
+ RStringF DecodeStrengthL( const TDesC8& aStrength );
+
+private:
+
+ void SetState();
+
+ void SetRemoteStatus( RStringF aDirection );
+
+ void SetDesiredStatus( RStringF aEntity, RStringF sStrength );
+
+ TBool FindSecPreconds( CSdpMediaField& aMedia );
+
+ TBool StrengthDowngraded( RStringF aStrength );
+
+ void ConstrucL( const TMceSecurePreconditions& aPreconditions );
+
+private: //data
+
+ RStringF iCurrentLocalStatus;
+ RStringF iCurrentRemoteStatus;
+ RStringF iDesiredLocalSendRecv;
+ RStringF iDesiredRemoteSendRecv;
+ RStringF iConfirmation;
+
+ //definitions for unit testing
+ MCEMM_UT_DEFINITIONS
+ };
+
+
+class TMcePreconditionsFactory
+ {
+ public:
+ TMcePreconditions* CreateL( CMceComMediaStream& aMediaStream, CSdpMediaField& aMediaLine );
+ TMcePreconditions* CreateL( CMceComMediaStream& aMediaStream );
+
+ TInt iDummy;
+ };
+
+#endif //MCEPRECONDITIONS_H