From 37de16e21bf73d1dea16343f04d061d3cb389acf Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Remko=20Tron=C3=A7on?= <git@el-tramo.be>
Date: Tue, 19 Apr 2011 18:47:01 +0200
Subject: Added CertificateMemoryStorage.


diff --git a/BuildTools/SCons/SConstruct b/BuildTools/SCons/SConstruct
index 5ecb8cb..2d9d200 100644
--- a/BuildTools/SCons/SConstruct
+++ b/BuildTools/SCons/SConstruct
@@ -255,7 +255,7 @@ if target in ["iphone-device", "iphone-simulator", "xcode"] :
 	env["CXX"] = "$XCODE_PLATFORM_DEVELOPER_BIN_DIR/g++"
 	env["OBJCCFLAGS"] = ["-fobjc-abi-version=2", "-fobjc-legacy-dispatch"]
 	env["LD"] = env["CC"]
-	env.Append(CCFLAGS = env["XCODE_ARCH_FLAGS"])
+	env.Append(CCFLAGS = env["XCODE_ARCH_FLAGS"] + ["-fvisibility=hidden"])
 	env.Append(LINKFLAGS = env["XCODE_ARCH_FLAGS"])
 	env.Append(CPPFLAGS = ["-isysroot", "$XCODE_SDKROOT"])
 	env.Append(FRAMEWORKS = ["CoreFoundation", "Foundation", "UIKit", "CoreGraphics"])
diff --git a/SwifTools/Idle/PlatformIdleQuerier.cpp b/SwifTools/Idle/PlatformIdleQuerier.cpp
index a28e701..6735348 100644
--- a/SwifTools/Idle/PlatformIdleQuerier.cpp
+++ b/SwifTools/Idle/PlatformIdleQuerier.cpp
@@ -7,7 +7,7 @@
 #include "SwifTools/Idle/PlatformIdleQuerier.h"
 #include "Swiften/Base/Platform.h"
 
-#if defined(SWIFTEN_PLATFORM_MACOSX) && defined(HAVE_IOKIT)
+#if defined(SWIFTEN_PLATFORM_MACOSX) && defined(HAVE_IOKIT) && !defined(SWIFTEN_PLATFORM_IPHONE)
 #include "SwifTools/Idle/MacOSXIdleQuerier.h"
 #elif defined(SWIFTEN_PLATFORM_WINDOWS)
 #include "SwifTools/Idle/WindowsIdleQuerier.h"
@@ -23,7 +23,7 @@ namespace Swift {
 
 PlatformIdleQuerier::PlatformIdleQuerier() : querier(NULL) {
 #if defined(SWIFTEN_PLATFORM_MACOSX)
-#if defined(HAVE_IOKIT)
+#if defined(HAVE_IOKIT) && !defined(SWIFTEN_PLATFORM_IPHONE)
 	querier = new MacOSXIdleQuerier();
 #else
 	querier = new DummyIdleQuerier();
diff --git a/Swift/Controllers/CertificateMemoryStorageFactory.h b/Swift/Controllers/CertificateMemoryStorageFactory.h
new file mode 100644
index 0000000..adbce80
--- /dev/null
+++ b/Swift/Controllers/CertificateMemoryStorageFactory.h
@@ -0,0 +1,28 @@
+/*
+ * Copyright (c) 2011 Remko Tronçon
+ * Licensed under the GNU General Public License v3.
+ * See Documentation/Licenses/GPLv3.txt for more information.
+ */
+
+#pragma once
+
+#include <Swift/Controllers/Storages/CertificateStorageFactory.h>
+#include <Swift/Controllers/Storages/CertificateMemoryStorage.h>
+
+namespace Swift {
+	class CertificateFactory;
+
+	class CertificateMemoryStorageFactory : public CertificateStorageFactory {
+		public:
+			CertificateMemoryStorageFactory() {
+			}
+
+			virtual CertificateStorage* createCertificateStorage(const JID&) const {
+				return new CertificateMemoryStorage();
+			}
+
+		private:
+			boost::filesystem::path basePath;
+			CertificateFactory* certificateFactory;
+	};
+}
diff --git a/Swift/Controllers/SConscript b/Swift/Controllers/SConscript
index 5b55892..eed1f4d 100644
--- a/Swift/Controllers/SConscript
+++ b/Swift/Controllers/SConscript
@@ -53,6 +53,7 @@ if env["SCONS_STAGE"] == "build" :
 			"Storages/CertificateStorageFactory.cpp",
 			"Storages/CertificateStorage.cpp",
 			"Storages/CertificateFileStorage.cpp",
+			"Storages/CertificateMemoryStorage.cpp",
 			"Storages/AvatarFileStorage.cpp",
 			"Storages/FileStorages.cpp",
 			"Storages/RosterFileStorage.cpp",
diff --git a/Swift/Controllers/Storages/CertificateMemoryStorage.cpp b/Swift/Controllers/Storages/CertificateMemoryStorage.cpp
new file mode 100644
index 0000000..71d7c4a
--- /dev/null
+++ b/Swift/Controllers/Storages/CertificateMemoryStorage.cpp
@@ -0,0 +1,27 @@
+/*
+ * Copyright (c) 2011 Remko Tronçon
+ * Licensed under the GNU General Public License v3.
+ * See Documentation/Licenses/GPLv3.txt for more information.
+ */
+
+#include <Swift/Controllers/Storages/CertificateMemoryStorage.h>
+
+#include <Swiften/Base/foreach.h>
+
+using namespace Swift;
+
+CertificateMemoryStorage::CertificateMemoryStorage() {
+}
+
+bool CertificateMemoryStorage::hasCertificate(Certificate::ref certificate) const {
+	foreach(Certificate::ref storedCert, certificates) {
+		if (storedCert->toDER() == certificate->toDER()) {
+			return true;
+		}
+	}
+	return false;
+}
+
+void CertificateMemoryStorage::addCertificate(Certificate::ref certificate) {
+	certificates.push_back(certificate);
+}
diff --git a/Swift/Controllers/Storages/CertificateMemoryStorage.h b/Swift/Controllers/Storages/CertificateMemoryStorage.h
new file mode 100644
index 0000000..5c0333d
--- /dev/null
+++ b/Swift/Controllers/Storages/CertificateMemoryStorage.h
@@ -0,0 +1,25 @@
+/*
+ * Copyright (c) 2011 Remko Tronçon
+ * Licensed under the GNU General Public License v3.
+ * See Documentation/Licenses/GPLv3.txt for more information.
+ */
+
+#pragma once
+
+#include <vector>
+
+#include <Swift/Controllers/Storages/CertificateStorage.h>
+
+namespace Swift {
+	class CertificateMemoryStorage : public CertificateStorage {
+		public:
+			CertificateMemoryStorage();
+
+			virtual bool hasCertificate(Certificate::ref certificate) const;
+			virtual void addCertificate(Certificate::ref certificate);
+
+		private:
+			std::vector<Certificate::ref> certificates;
+	};
+
+}
diff --git a/Swift/Controllers/Storages/MemoryStoragesFactory.h b/Swift/Controllers/Storages/MemoryStoragesFactory.h
index 6648bcd..0dea349 100644
--- a/Swift/Controllers/Storages/MemoryStoragesFactory.h
+++ b/Swift/Controllers/Storages/MemoryStoragesFactory.h
@@ -10,6 +10,8 @@
 #include "Swiften/Client/MemoryStorages.h"
 
 namespace Swift {
+	class JID;
+	
 	class MemoryStoragesFactory : public StoragesFactory {
 		public:
 			MemoryStoragesFactory() {}
diff --git a/Swift/Controllers/Storages/StoragesFactory.h b/Swift/Controllers/Storages/StoragesFactory.h
index 441a4e9..203f9c9 100644
--- a/Swift/Controllers/Storages/StoragesFactory.h
+++ b/Swift/Controllers/Storages/StoragesFactory.h
@@ -8,6 +8,7 @@
 
 namespace Swift {
 	class Storages;
+	class JID;
 
 	class StoragesFactory {
 		public:
-- 
cgit v0.10.2-6-g49f6