diff -r 000000000000 -r 667063e416a2 supl/locationsuplfw/settingsapi/src/epos_csuplsettingextensionparams.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/supl/locationsuplfw/settingsapi/src/epos_csuplsettingextensionparams.cpp Tue Feb 02 01:06:48 2010 +0200 @@ -0,0 +1,336 @@ +/* +* 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: Implementation of class CServerExtensionParams with get and set methods for Server params +* +*/ + + + +// INCLUDE FILES + +#include "epos_csuplsettingextensionparams.h" +#include "epos_csuplsettingsinternalconstants.h" +#include "epos_csuplsettingsconstants.h" + +// CONSTANTS + +// ==================== LOCAL FUNCTIONS ==================== + + +// ================= MEMBER FUNCTIONS ======================= + +// C++ default constructor can NOT contain any code, that +// might leave. +// +CServerExtensionParams::CServerExtensionParams():iServerId(NULL), + iIap1(NULL), + iIap2(NULL), + iServerAddr(NULL), + iServerAddType(NULL), + iIsValueSet(EFalse) + + { + } + +EXPORT_C CServerExtensionParams* CServerExtensionParams::NewL() + { + CServerExtensionParams* self = new (ELeave) CServerExtensionParams(); + CleanupStack::PushL( self ); + self->ConstructL(); + CleanupStack::Pop(self); + return self; + } + +EXPORT_C CServerExtensionParams* CServerExtensionParams::NewLC() + { + CServerExtensionParams* self = new (ELeave) CServerExtensionParams(); + CleanupStack::PushL( self ); + self->ConstructL(); + return self; + } + + +// EPOC default constructor can leave. +void CServerExtensionParams::ConstructL() + { + + } + +// Destructor +EXPORT_C CServerExtensionParams::~CServerExtensionParams() + { + delete iServerId; + iServerId = NULL; + delete iIap1; + iIap1 = NULL; + delete iIap2; + iIap2 = NULL; + delete iServerAddr; + iServerAddr = NULL; + delete iServerAddType; + iServerAddType = NULL; + + + } +// --------------------------------------------------------------------------- +// CServerExtensionParams::Set() +// +// Sets server parameters. +// --------------------------------------------------------------------------- +EXPORT_C TInt CServerExtensionParams::Set( const TDesC& aServerId, + const TDesC& aIap1, + const TDesC& aIap2, + const TDesC& aServerAddr, + const TDesC& aServerAddType + ) + { + // Reset the state first + delete iServerId; + iServerId = NULL; + delete iIap1; + iIap1 = NULL; + delete iIap2; + iIap2 = NULL; + delete iServerAddType; + iServerAddType = NULL; + delete iServerAddr; + iServerAddr = NULL; + + if(aServerId.Length() > 0 && aServerId.Length() <= KMaxServerIdLen) + { + iServerId = HBufC::New(aServerId.Length()); + if(iServerId) + { + iServerId->Des().Copy(aServerId); + } + + else + { + return KErrNoMemory; + } + } + + else if(aServerId.Length() == 0) + { + iServerId = NULL; + } + + else + { + return KErrArgument; + } + + + if(aIap1.Length() > 0 && aIap1.Length() <= KMaxIAPLen) + { + iIap1 = HBufC::New(aIap1.Length()); + if(iIap1) + { + iIap1->Des().Copy(aIap1); + } + + else + { + return KErrNoMemory; + } + } + + else if(aIap1.Length() == 0) + { + iIap1 = NULL; + } + + else + { + return KErrArgument; + } + + if(aIap2.Length() > 0 && aIap2.Length() <= KMaxIAPLen) + { + iIap2 = HBufC::New(aIap2.Length()); + if(iIap2) + { + iIap2->Des().Copy(aIap2); + } + + else + { + return KErrNoMemory; + } + } + else if(aIap2.Length() == 0) + { + iIap2 = NULL; + } + else + { + return KErrArgument; + } + + if(aServerAddType.Length() > 0 && aServerAddType.Length() <= KMaxServerAddTypeLen) + { + iServerAddType = HBufC::New(aServerAddType.Length()); + if(iServerAddType) + { + iServerAddType->Des().Copy(aServerAddType); + } + + else + { + return KErrNoMemory; + } + } + + else if(aServerAddType.Length() == 0) + { + iServerAddType = NULL; + } + else + { + return KErrArgument; + } + + if(aServerAddr.Length() > 0 && aServerAddr.Length() <= KMaxServerAddLen) + { + iServerAddr = HBufC::New(aServerAddr.Length()); + if(iServerAddr) + { + iServerAddr->Des().Copy(aServerAddr); + } + + else + { + return KErrNoMemory; + } + } + + else if(aServerAddr.Length() == 0) + { + iServerAddr = NULL; + } + else + { + return KErrArgument; + } + + + iIsValueSet = ETrue; + return KErrNone; + } +// --------------------------------------------------------------------------- +// CServerExtensionParams::Get() +// +// Returns server parameters. +// --------------------------------------------------------------------------- +EXPORT_C TInt CServerExtensionParams::Get( TPtr aServerId, + TPtr aIap1, + TPtr aIap2, + TPtr aServerAddr, + TPtr aServerAddType + ) const + { + if(!iIsValueSet) + { + //if values were not set before using the Set method, return error + return KErrNotFound; + } + + if( iServerId ) + { + if( aServerId.Ptr() == NULL ) + { + return KErrArgument; + } + if( iServerId->Length() > aServerId.MaxLength() ) + { + return KErrOverflow; + } + aServerId = iServerId->Des(); + } + else + { + aServerId.Zero(); + } + + if( iIap1 ) + { + if( aIap1.Ptr() == NULL ) + { + return KErrArgument; + } + if( iIap1->Length() > aIap1.MaxLength() ) + { + return KErrOverflow; + } + aIap1 = iIap1->Des(); + } + else + { + aIap1.Zero(); + } + + if( iIap2 ) + { + if( aIap2.Ptr() == NULL ) + { + return KErrArgument; + } + if( iIap2->Length() > aIap2.MaxLength()) + { + return KErrOverflow; + } + aIap2 = iIap2->Des(); + } + else + { + aIap2.Zero(); + } + + if( iServerAddType ) + { + if( aServerAddType.Ptr() == NULL ) + { + return KErrArgument; + } + if( iServerAddType->Length() > aServerAddType.MaxLength() ) + { + return KErrOverflow; + } + aServerAddType = iServerAddType->Des(); + } + else + { + aServerAddType.Zero(); + } + + if( iServerAddr ) + { + if( aServerAddr.Ptr() == NULL ) + { + return KErrArgument; + } + if( iServerAddr->Length() > aServerAddr.MaxLength() ) + { + return KErrOverflow; + } + aServerAddr = iServerAddr->Des(); + } + else + { + aServerAddr.Zero(); + } + return KErrNone; + } +// End of File +