natfw/natfwunsaf_protocols/unsaf_codec/src/natfwunsafattributelookuptable.cpp
changeset 0 1bce908db942
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/natfw/natfwunsaf_protocols/unsaf_codec/src/natfwunsafattributelookuptable.cpp	Tue Feb 02 01:04:58 2010 +0200
@@ -0,0 +1,194 @@
+/*
+* Copyright (c) 2006-2007 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:   
+*
+*/
+
+
+
+
+#include "natfwunsafattributelookuptable.h"
+
+#include "natfwunsafmappedaddressattribute.h"
+#include "natfwunsafresponseaddressattribute.h"
+#include "natfwunsafchangedaddressattribute.h"
+#include "natfwunsafchangerequestattribute.h"
+#include "natfwunsafsourceaddressattribute.h"
+#include "natfwunsafreflectedfromattribute.h"
+#include "natfwunsafmessageintegrityattribute.h"
+#include "natfwunsafusernameattribute.h"
+#include "natfwunsafpasswordattribute.h"
+#include "natfwunsaferrorcodeattribute.h"
+#include "natfwunsafunknownattributesattribute.h"
+#include "natfwunsafxoronlyattribute.h"
+#include "natfwunsafserverattribute.h"
+#include "natfwunsafxormappedaddressattribute.h"
+#include "natfwunsaffingerprintattribute.h"
+// TURN specific attributes
+#include "natfwunsafalternateserverattribute.h"
+#include "natfwunsafdestinationaddressattribute.h"
+#include "natfwunsafremoteaddressattribute.h"
+#include "natfwunsaflifetimeattribute.h"
+#include "natfwunsafbandwidthattribute.h"
+#include "natfwunsafdataattribute.h"
+#include "natfwunsafmagiccookieattribute.h"
+#include "natfwunsafnonceattribute.h"
+#include "natfwunsafrealmattribute.h"
+#include "natfwunsafrelayaddressattribute.h"
+#include "natfwunsafrequestedportpropsattribute.h"
+#include "natfwunsafrequestedtransportattribute.h"
+#include "natfwunsafrequestedipattribute.h"
+#include "natfwunsaftimervalattribute.h"
+#include "natfwunsafconnectstatattribute.h"
+// ICE specific attributes
+#include "natfwunsafpriorityattribute.h"
+#include "natfwunsafusecandidateattribute.h"
+#include "natfwunsaficecontrolledattribute.h"
+#include "natfwunsaficecontrollingattribute.h"
+
+// -----------------------------------------------------------------------------
+// CAttributeLookupTable::NewL
+// -----------------------------------------------------------------------------
+//
+CAttributeLookupTable* CAttributeLookupTable::NewL()
+    {
+    CAttributeLookupTable* self = new (ELeave) CAttributeLookupTable();
+    CleanupStack::PushL(self);
+    self->ConstructL();
+    CleanupStack::Pop(self);
+    return self;
+    }
+
+// -----------------------------------------------------------------------------
+// CAttributeLookupTable::CAttributeLookupTable
+// -----------------------------------------------------------------------------
+//
+CAttributeLookupTable::CAttributeLookupTable()
+    {
+    }
+
+// -----------------------------------------------------------------------------
+// CAttributeLookupTable::ConstructL
+// -----------------------------------------------------------------------------
+//
+void CAttributeLookupTable::ConstructL()
+    {
+    AddItemL(CNATFWUNSAFAttribute::EMappedAddress,
+             CNATFWUNSAFMappedAddressAttribute::DecodeAttributeL);
+    AddItemL(CNATFWUNSAFAttribute::EResponseAddress,
+             CNATFWUNSAFResponseAddressAttribute::DecodeAttributeL);
+    AddItemL(CNATFWUNSAFAttribute::EChangedAddress,
+             CNATFWUNSAFChangedAddressAttribute::DecodeAttributeL);
+    AddItemL(CNATFWUNSAFAttribute::EChangeRequest,
+             CNATFWUNSAFChangeRequestAttribute::DecodeAttributeL);
+    AddItemL(CNATFWUNSAFAttribute::ESourceAddress,
+             CNATFWUNSAFSourceAddressAttribute::DecodeAttributeL);
+    AddItemL(CNATFWUNSAFAttribute::EReflectedFrom,
+             CNATFWUNSAFReflectedFromAttribute::DecodeAttributeL);
+    AddItemL(CNATFWUNSAFAttribute::EMessageIntegrity,
+             CNATFWUNSAFMessageIntegrityAttribute::DecodeAttributeL);
+    AddItemL(CNATFWUNSAFAttribute::EUsername,
+             CNATFWUNSAFUsernameAttribute::DecodeAttributeL);
+    AddItemL(CNATFWUNSAFAttribute::EPassword,
+             CNATFWUNSAFPasswordAttribute::DecodeAttributeL);
+    AddItemL(CNATFWUNSAFAttribute::EErrorCode,
+             CNATFWUNSAFErrorCodeAttribute::DecodeAttributeL);
+    AddItemL(CNATFWUNSAFAttribute::EUnknownAttributes,
+             CNATFWUNSAFUnknownAttributesAttribute::DecodeAttributeL);
+    AddItemL(CNATFWUNSAFAttribute::EXorOnly,
+             CNATFWUNSAFXorOnlyAttribute::DecodeAttributeL);
+    AddItemL(CNATFWUNSAFAttribute::EServer,
+             CNATFWUNSAFServerAttribute::DecodeAttributeL);
+    AddItemL(CNATFWUNSAFAttribute::EXorMappedAddress,
+             CNATFWUNSAFXorMappedAddressAttribute::DecodeAttributeL);
+    AddItemL(CNATFWUNSAFAttribute::EFingerprint,
+             CNATFWUNSAFFingerprintAttribute::DecodeAttributeL);
+    // TURN specific attributes
+    AddItemL(CNATFWUNSAFAttribute::EAlternateServer,
+             CNATFWUNSAFAlternateServerAttribute::DecodeAttributeL);
+    AddItemL(CNATFWUNSAFAttribute::EDestinationAddress,
+             CNATFWUNSAFDestinationAddressAttribute::DecodeAttributeL);
+    AddItemL(CNATFWUNSAFAttribute::ERemoteAddress,
+             CNATFWUNSAFRemoteAddressAttribute::DecodeAttributeL);
+    AddItemL(CNATFWUNSAFAttribute::ELifetime,
+             CNATFWUNSAFLifetimeAttribute::DecodeAttributeL);
+    AddItemL(CNATFWUNSAFAttribute::EBandwidth,
+             CNATFWUNSAFBandwidthAttribute::DecodeAttributeL);
+    AddItemL(CNATFWUNSAFAttribute::EData,
+             CNATFWUNSAFDataAttribute::DecodeAttributeL);
+    AddItemL(CNATFWUNSAFAttribute::EMagicCookie,
+             CNATFWUNSAFMagicCookieAttribute::DecodeAttributeL);
+    AddItemL(CNATFWUNSAFAttribute::ENonce,
+             CNATFWUNSAFNonceAttribute::DecodeAttributeL);
+    AddItemL(CNATFWUNSAFAttribute::ERealm,
+             CNATFWUNSAFRealmAttribute::DecodeAttributeL);
+    AddItemL(CNATFWUNSAFAttribute::ERelayAddress,
+             CNATFWUNSAFRelayAddressAttribute::DecodeAttributeL);
+    AddItemL(CNATFWUNSAFAttribute::ERequestedPortProps,
+             CNATFWUNSAFRequestedPortPropsAttribute::DecodeAttributeL);
+    AddItemL(CNATFWUNSAFAttribute::ERequestedTransport,
+             CNATFWUNSAFRequestedTransportAttribute::DecodeAttributeL);
+    AddItemL(CNATFWUNSAFAttribute::ERequestedIp,
+             CNATFWUNSAFRequestedIpAttribute::DecodeAttributeL);
+    AddItemL(CNATFWUNSAFAttribute::ETimerVal,
+             CNATFWUNSAFTimerValAttribute::DecodeAttributeL);
+    AddItemL(CNATFWUNSAFAttribute::EConnectStat,
+             CNATFWUNSAFConnectStatAttribute::DecodeAttributeL);
+    // ICE specific attributes
+    AddItemL(CNATFWUNSAFAttribute::EPriority,
+             CNATFWUNSAFPriorityAttribute::DecodeAttributeL);
+    AddItemL(CNATFWUNSAFAttribute::EUseCandidate,
+             CNATFWUNSAFUseCandidateAttribute::DecodeAttributeL);
+    AddItemL(CNATFWUNSAFAttribute::EIceControlled,
+             CNATFWUNSAFIceControlledAttribute::DecodeAttributeL);
+    AddItemL(CNATFWUNSAFAttribute::EIceControlling,
+             CNATFWUNSAFIceControllingAttribute::DecodeAttributeL);
+    }
+
+// -----------------------------------------------------------------------------
+// CAttributeLookupTable::~CAttributeLookupTable
+// -----------------------------------------------------------------------------
+//
+CAttributeLookupTable::~CAttributeLookupTable()
+    {
+    iTable.Close();
+    }
+
+// -----------------------------------------------------------------------------
+// CAttributeLookupTable::Find
+// -----------------------------------------------------------------------------
+//
+TDecodeFnPtr CAttributeLookupTable::Find(TUint16 aAttributeType)
+    {
+    for (TInt i = 0; i < iTable.Count(); i++)
+        {
+        if (iTable[i].AttributeType() == aAttributeType)
+            {
+            return iTable[i].DecodeFunction();
+            }
+        }
+
+    return NULL;
+    }
+
+// -----------------------------------------------------------------------------
+// CAttributeLookupTable::AddItemL
+// -----------------------------------------------------------------------------
+//
+void CAttributeLookupTable::AddItemL(CNATFWUNSAFAttribute::TType aAttributeType,
+                                        TDecodeFnPtr aDecodeFn)
+    {
+    TAttributeLookupTableItem newItem(aAttributeType, aDecodeFn);
+    iTable.AppendL(newItem);
+    }