--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/plugins/networking/tcpcsy/src/config.cpp Wed Jun 23 15:52:26 2010 +0100
@@ -0,0 +1,129 @@
+// config.cpp
+//
+// Copyright (c) 2008 - 2010 Accenture. All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of the "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:
+// Accenture - Initial contribution
+//
+
+#include "panic.h"
+#include "tcpcsy.h"
+#include "config.h"
+
+
+const TUid KRepositoryUid = { 0x102836da };
+const TInt KModeField = 0x00000000;
+const TInt KFamilyField = 0x00010000;
+const TInt KProtocolField = 0x00020000;
+const TInt KIpAddressField = 0x00030000;
+const TInt KPortField = 0x00040000;
+
+
+CConfig* CConfig::NewL(CTcpPortFactory& aFactory)
+ {
+ CConfig* self = new(ELeave) CConfig(aFactory);
+ CleanupStack::PushL(self);
+ self->ConstructL();
+ CleanupStack::Pop(self);
+ return self;
+ }
+
+CConfig::~CConfig()
+ {
+ delete iRepository;
+ }
+
+CConfig::TMode CConfig::ModeL(const TUint aUnit) const
+ {
+ TInt mode = ReadIntL(KModeField, aUnit);
+ if ((mode < EActive) || (mode > EPassive))
+ {
+ User::Leave(KErrCorrupt);
+ }
+ return static_cast<TMode>(mode);
+ }
+
+TUint CConfig::ProtocolFamilyL(const TUint aUnit) const
+ {
+ return static_cast<TUint>(ReadIntL(KFamilyField, aUnit));
+ }
+
+TUint CConfig::ProtocolL(const TUint aUnit) const
+ {
+ return static_cast<TUint>(ReadIntL(KProtocolField, aUnit));
+ }
+
+void CConfig::GetAddressL(const TUint aUnit, TInetAddr& aAddress) const
+ {
+ TBuf<64> ip;
+ ReadStringL(KIpAddressField, aUnit, ip);
+ TInt err = aAddress.Input(ip);
+ if (err)
+ {
+ User::Leave(KErrCorrupt);
+ }
+ TUint port = static_cast<TUint>(ReadIntL(KPortField, aUnit));
+ aAddress.SetPort(port);
+ TPtr8 narrowIp = ip.Collapse();
+ LOG("Unit: %u, IP: \"%S\", Port: %u", aUnit, &narrowIp, port);
+ }
+
+void CConfig::UnitRange(TUint& aLowUnit, TUint& aHighUnit) const
+ {
+ TInt i = 0;
+ TInt val;
+ while (iRepository->Get(KModeField + i, val) != KErrNone)
+ {
+ ++i;
+ }
+ aLowUnit = i;
+ while (iRepository->Get(KModeField + i, val) == KErrNone)
+ {
+ ++i;
+ }
+ aHighUnit = Max(0, i - 1);
+ }
+
+CConfig::CConfig(CTcpPortFactory& aFactory)
+ : iFactory(aFactory)
+ {
+ }
+
+void CConfig::ConstructL()
+ {
+ iRepository = CRepository::NewL(KRepositoryUid);
+ }
+
+TInt CConfig::ReadIntL(TInt aFieldId, const TUint aUnit) const
+ {
+ if (aUnit > KMaxTUint16)
+ {
+ User::Leave(KErrArgument);
+ }
+ TInt val;
+ TInt err = iRepository->Get(aFieldId + aUnit, val);
+ if (err == KErrNotFound)
+ {
+ err = KErrNotSupported;
+ }
+ User::LeaveIfError(err);
+ return val;
+ }
+
+void CConfig::ReadStringL(TInt aFieldId, const TUint aUnit, TDes& aString) const
+ {
+ if (aUnit > KMaxTUint16)
+ {
+ User::Leave(KErrArgument);
+ }
+ TInt err = iRepository->Get(aFieldId + aUnit, aString);
+ if (err == KErrNotFound)
+ {
+ err = KErrNotSupported;
+ }
+ User::LeaveIfError(err);
+ }