diff --git a/Builds/VisualStudio2012/RippleD.vcxproj b/Builds/VisualStudio2012/RippleD.vcxproj
index 91c7963d1..8f50970f3 100644
--- a/Builds/VisualStudio2012/RippleD.vcxproj
+++ b/Builds/VisualStudio2012/RippleD.vcxproj
@@ -164,6 +164,439 @@
true
+
+
+ true
+ true
+ true
+ true
+
+
+ true
+ true
+ true
+ true
+
+
+ true
+ true
+ true
+ true
+
+
+ true
+ true
+ true
+ true
+
+
+ true
+ true
+ true
+ true
+
+
+ true
+ true
+ true
+ true
+
+
+ true
+ true
+ true
+ true
+
+
+ true
+ true
+ true
+ true
+
+
+ true
+ true
+ true
+ true
+
+
+ true
+ true
+ true
+ true
+
+
+ true
+ true
+ true
+ true
+
+
+ true
+ true
+ true
+ true
+
+
+ true
+ true
+ true
+ true
+
+
+ true
+ true
+ true
+ true
+
+
+ true
+ true
+ true
+ true
+
+
+ true
+ true
+ true
+ true
+
+
+ true
+ true
+ true
+ true
+
+
+ true
+ true
+ true
+ true
+
+
+ true
+ true
+ true
+ true
+
+
+ true
+ true
+ true
+ true
+
+
+ true
+ true
+ true
+ true
+
+
+ true
+ true
+ true
+ true
+
+
+ true
+ true
+ true
+ true
+
+
+ true
+ true
+ true
+ true
+
+
+ true
+ true
+ true
+ true
+
+
+ true
+ true
+ true
+ true
+
+
+ true
+ true
+ true
+ true
+
+
+ true
+ true
+ true
+ true
+
+
+ true
+ true
+ true
+ true
+
+
+ true
+ true
+ true
+ true
+
+
+ true
+ true
+ true
+ true
+
+
+ true
+ true
+ true
+ true
+
+
+ true
+ true
+ true
+ true
+
+
+ true
+ true
+ true
+ true
+
+
+ true
+ true
+ true
+ true
+
+
+ true
+ true
+ true
+ true
+
+
+ true
+ true
+ true
+ true
+
+
+ true
+ true
+ true
+ true
+
+
+ true
+ true
+ true
+ true
+
+
+ true
+ true
+ true
+ true
+
+
+ true
+ true
+ true
+ true
+
+
+ true
+ true
+ true
+ true
+
+
+ true
+ true
+ true
+ true
+
+
+ true
+ true
+ true
+ true
+
+
+ true
+ true
+ true
+ true
+
+
+ true
+ true
+ true
+ true
+
+
+ true
+ true
+ true
+ true
+
+
+ true
+ true
+ true
+ true
+
+
+ true
+ true
+ true
+ true
+
+
+ true
+ true
+ true
+ true
+
+
+ true
+ true
+ true
+ true
+
+
+ true
+ true
+ true
+ true
+
+
+ true
+ true
+ true
+ true
+
+
+ true
+ true
+ true
+ true
+
+
+ true
+ true
+ true
+ true
+
+
+ true
+ true
+ true
+ true
+
+
+ true
+ true
+ true
+ true
+
+
+ true
+ true
+ true
+ true
+
+
+ true
+ true
+ true
+ true
+
+
+ true
+ true
+ true
+ true
+
+
+ true
+ true
+ true
+ true
+
+
+ true
+ true
+ true
+ true
+
+
+ true
+ true
+ true
+ true
+
+
+ true
+ true
+ true
+ true
+
+
+ true
+ true
+ true
+ true
+
+
+ true
+ true
+ true
+ true
+
+
+ true
+ true
+ true
+ true
+
+
+ true
+ true
+ true
+ true
+
+
+ true
+ true
+ true
+ true
+
+
+ true
+ true
+ true
+ true
+
+
+ true
+ true
+ true
+ true
+
+
+ true
+ true
+ true
+ true
+
true
true
@@ -1735,6 +2168,96 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Builds/VisualStudio2012/RippleD.vcxproj.filters b/Builds/VisualStudio2012/RippleD.vcxproj.filters
index 861ccf56a..46abe7747 100644
--- a/Builds/VisualStudio2012/RippleD.vcxproj.filters
+++ b/Builds/VisualStudio2012/RippleD.vcxproj.filters
@@ -262,6 +262,39 @@
{5609ad93-0654-41db-8ecb-7dfcde58d2e6}
+
+ {b244f110-0549-40d2-963b-8c0af87de917}
+
+
+ {514156a8-2473-4bf3-940f-bd7c166e726f}
+
+
+ {9e7aee3c-76bf-408c-8577-b055919b9f8c}
+
+
+ {7e693c99-fcae-4f60-a6d4-e4fe27119959}
+
+
+ {d2a35ae6-6911-4b77-966d-cac44fccb429}
+
+
+ {076ca841-0b06-400a-a87c-8d1df126f43f}
+
+
+ {17b0a87f-5a62-48af-9cdd-cbe9af7736d2}
+
+
+ {e4649e1a-07bc-4633-a01f-3615a7da53c7}
+
+
+ {c02d2b7e-253d-49fb-b0db-b30c861bb2dc}
+
+
+ {424405b5-72c7-4d07-add8-3c81d3da6e5a}
+
+
+ {013f0eb9-bf1d-4b11-8c2c-3fd99d4b8ef5}
+
@@ -1149,6 +1182,225 @@
[1] Ripple\sitefiles\impl
+
+ [1] Ripple\rocksdb
+
+
+ [1] Ripple\rocksdb\rocksdb\db
+
+
+ [1] Ripple\rocksdb\rocksdb\db
+
+
+ [1] Ripple\rocksdb\rocksdb\db
+
+
+ [1] Ripple\rocksdb\rocksdb\db
+
+
+ [1] Ripple\rocksdb\rocksdb\db
+
+
+ [1] Ripple\rocksdb\rocksdb\db
+
+
+ [1] Ripple\rocksdb\rocksdb\db
+
+
+ [1] Ripple\rocksdb\rocksdb\db
+
+
+ [1] Ripple\rocksdb\rocksdb\db
+
+
+ [1] Ripple\rocksdb\rocksdb\db
+
+
+ [1] Ripple\rocksdb\rocksdb\db
+
+
+ [1] Ripple\rocksdb\rocksdb\db
+
+
+ [1] Ripple\rocksdb\rocksdb\db
+
+
+ [1] Ripple\rocksdb\rocksdb\db
+
+
+ [1] Ripple\rocksdb\rocksdb\db
+
+
+ [1] Ripple\rocksdb\rocksdb\db
+
+
+ [1] Ripple\rocksdb\rocksdb\db
+
+
+ [1] Ripple\rocksdb\rocksdb\db
+
+
+ [1] Ripple\rocksdb\rocksdb\db
+
+
+ [1] Ripple\rocksdb\rocksdb\db
+
+
+ [1] Ripple\rocksdb\rocksdb\db
+
+
+ [1] Ripple\rocksdb\rocksdb\db
+
+
+ [1] Ripple\rocksdb\rocksdb\db
+
+
+ [1] Ripple\rocksdb\rocksdb\memenv
+
+
+ [1] Ripple\rocksdb\rocksdb\port
+
+
+ [1] Ripple\rocksdb\rocksdb\port
+
+
+ [1] Ripple\rocksdb\rocksdb\table
+
+
+ [1] Ripple\rocksdb\rocksdb\table
+
+
+ [1] Ripple\rocksdb\rocksdb\table
+
+
+ [1] Ripple\rocksdb\rocksdb\table
+
+
+ [1] Ripple\rocksdb\rocksdb\table
+
+
+ [1] Ripple\rocksdb\rocksdb\table
+
+
+ [1] Ripple\rocksdb\rocksdb\table
+
+
+ [1] Ripple\rocksdb\rocksdb\table
+
+
+ [1] Ripple\rocksdb\rocksdb\table
+
+
+ [1] Ripple\rocksdb\rocksdb\table
+
+
+ [1] Ripple\rocksdb\rocksdb\table
+
+
+ [1] Ripple\rocksdb\rocksdb\table
+
+
+ [1] Ripple\rocksdb\rocksdb\table
+
+
+ [1] Ripple\rocksdb\rocksdb\util
+
+
+ [1] Ripple\rocksdb\rocksdb\util
+
+
+ [1] Ripple\rocksdb\rocksdb\util
+
+
+ [1] Ripple\rocksdb\rocksdb\util
+
+
+ [1] Ripple\rocksdb\rocksdb\util
+
+
+ [1] Ripple\rocksdb\rocksdb\util
+
+
+ [1] Ripple\rocksdb\rocksdb\util
+
+
+ [1] Ripple\rocksdb\rocksdb\util
+
+
+ [1] Ripple\rocksdb\rocksdb\util
+
+
+ [1] Ripple\rocksdb\rocksdb\util
+
+
+ [1] Ripple\rocksdb\rocksdb\util
+
+
+ [1] Ripple\rocksdb\rocksdb\util
+
+
+ [1] Ripple\rocksdb\rocksdb\util
+
+
+ [1] Ripple\rocksdb\rocksdb\util
+
+
+ [1] Ripple\rocksdb\rocksdb\util
+
+
+ [1] Ripple\rocksdb\rocksdb\util
+
+
+ [1] Ripple\rocksdb\rocksdb\util
+
+
+ [1] Ripple\rocksdb\rocksdb\util
+
+
+ [1] Ripple\rocksdb\rocksdb\util
+
+
+ [1] Ripple\rocksdb\rocksdb\util
+
+
+ [1] Ripple\rocksdb\rocksdb\util
+
+
+ [1] Ripple\rocksdb\rocksdb\util
+
+
+ [1] Ripple\rocksdb\rocksdb\util
+
+
+ [1] Ripple\rocksdb\rocksdb\util
+
+
+ [1] Ripple\rocksdb\rocksdb\util
+
+
+ [1] Ripple\rocksdb\rocksdb\util
+
+
+ [1] Ripple\rocksdb\rocksdb\util
+
+
+ [1] Ripple\rocksdb\rocksdb\util
+
+
+ [1] Ripple\rocksdb\rocksdb\util
+
+
+ [1] Ripple\rocksdb\rocksdb\util
+
+
+ [1] Ripple\rocksdb\rocksdb\util
+
+
+ [1] Ripple\rocksdb\rocksdb\util
+
+
+ [1] Ripple\rocksdb\rocksdb\util
+
@@ -2352,6 +2604,276 @@
[0] Libraries\websocket
+
+ [1] Ripple\rocksdb
+
+
+ [1] Ripple\rocksdb\rocksdb\db
+
+
+ [1] Ripple\rocksdb\rocksdb\db
+
+
+ [1] Ripple\rocksdb\rocksdb\db
+
+
+ [1] Ripple\rocksdb\rocksdb\db
+
+
+ [1] Ripple\rocksdb\rocksdb\db
+
+
+ [1] Ripple\rocksdb\rocksdb\db
+
+
+ [1] Ripple\rocksdb\rocksdb\db
+
+
+ [1] Ripple\rocksdb\rocksdb\db
+
+
+ [1] Ripple\rocksdb\rocksdb\db
+
+
+ [1] Ripple\rocksdb\rocksdb\db
+
+
+ [1] Ripple\rocksdb\rocksdb\db
+
+
+ [1] Ripple\rocksdb\rocksdb\db
+
+
+ [1] Ripple\rocksdb\rocksdb\db
+
+
+ [1] Ripple\rocksdb\rocksdb\db
+
+
+ [1] Ripple\rocksdb\rocksdb\db
+
+
+ [1] Ripple\rocksdb\rocksdb\db
+
+
+ [1] Ripple\rocksdb\rocksdb\db
+
+
+ [1] Ripple\rocksdb\rocksdb\db
+
+
+ [1] Ripple\rocksdb\rocksdb\db
+
+
+ [1] Ripple\rocksdb\rocksdb\db
+
+
+ [1] Ripple\rocksdb\rocksdb\db
+
+
+ [1] Ripple\rocksdb\rocksdb\db
+
+
+ [1] Ripple\rocksdb\rocksdb\memenv
+
+
+ [1] Ripple\rocksdb\rocksdb\port
+
+
+ [1] Ripple\rocksdb\rocksdb\port
+
+
+ [1] Ripple\rocksdb\rocksdb\port
+
+
+ [1] Ripple\rocksdb\rocksdb\port\win
+
+
+ [1] Ripple\rocksdb\rocksdb\table
+
+
+ [1] Ripple\rocksdb\rocksdb\table
+
+
+ [1] Ripple\rocksdb\rocksdb\table
+
+
+ [1] Ripple\rocksdb\rocksdb\table
+
+
+ [1] Ripple\rocksdb\rocksdb\table
+
+
+ [1] Ripple\rocksdb\rocksdb\table
+
+
+ [1] Ripple\rocksdb\rocksdb\table
+
+
+ [1] Ripple\rocksdb\rocksdb\table
+
+
+ [1] Ripple\rocksdb\rocksdb\table
+
+
+ [1] Ripple\rocksdb\rocksdb\table
+
+
+ [1] Ripple\rocksdb\rocksdb\table
+
+
+ [1] Ripple\rocksdb\rocksdb\util
+
+
+ [1] Ripple\rocksdb\rocksdb\util
+
+
+ [1] Ripple\rocksdb\rocksdb\util
+
+
+ [1] Ripple\rocksdb\rocksdb\util
+
+
+ [1] Ripple\rocksdb\rocksdb\util
+
+
+ [1] Ripple\rocksdb\rocksdb\util
+
+
+ [1] Ripple\rocksdb\rocksdb\util
+
+
+ [1] Ripple\rocksdb\rocksdb\util
+
+
+ [1] Ripple\rocksdb\rocksdb\util
+
+
+ [1] Ripple\rocksdb\rocksdb\util
+
+
+ [1] Ripple\rocksdb\rocksdb\util
+
+
+ [1] Ripple\rocksdb\rocksdb\util
+
+
+ [1] Ripple\rocksdb\rocksdb\util
+
+
+ [1] Ripple\rocksdb\rocksdb\util
+
+
+ [1] Ripple\rocksdb\rocksdb\util
+
+
+ [1] Ripple\rocksdb\rocksdb\util
+
+
+ [1] Ripple\rocksdb\rocksdb\util
+
+
+ [1] Ripple\rocksdb\rocksdb\util
+
+
+ [1] Ripple\rocksdb\rocksdb\util
+
+
+ [1] Ripple\rocksdb\rocksdb\util
+
+
+ [1] Ripple\rocksdb\rocksdb\util
+
+
+ [1] Ripple\rocksdb\rocksdb\util
+
+
+ [1] Ripple\rocksdb\rocksdb\util
+
+
+ [1] Ripple\rocksdb\rocksdb\util
+
+
+ [1] Ripple\rocksdb\rocksdb\include\rocksdb
+
+
+ [1] Ripple\rocksdb\rocksdb\include\rocksdb
+
+
+ [1] Ripple\rocksdb\rocksdb\include\rocksdb
+
+
+ [1] Ripple\rocksdb\rocksdb\include\rocksdb
+
+
+ [1] Ripple\rocksdb\rocksdb\include\rocksdb
+
+
+ [1] Ripple\rocksdb\rocksdb\include\rocksdb
+
+
+ [1] Ripple\rocksdb\rocksdb\include\rocksdb
+
+
+ [1] Ripple\rocksdb\rocksdb\include\rocksdb
+
+
+ [1] Ripple\rocksdb\rocksdb\include\rocksdb
+
+
+ [1] Ripple\rocksdb\rocksdb\include\rocksdb
+
+
+ [1] Ripple\rocksdb\rocksdb\include\rocksdb
+
+
+ [1] Ripple\rocksdb\rocksdb\include\rocksdb
+
+
+ [1] Ripple\rocksdb\rocksdb\include\rocksdb
+
+
+ [1] Ripple\rocksdb\rocksdb\include\rocksdb
+
+
+ [1] Ripple\rocksdb\rocksdb\include\rocksdb
+
+
+ [1] Ripple\rocksdb\rocksdb\include\rocksdb
+
+
+ [1] Ripple\rocksdb\rocksdb\include\rocksdb
+
+
+ [1] Ripple\rocksdb\rocksdb\include\rocksdb
+
+
+ [1] Ripple\rocksdb\rocksdb\include\rocksdb
+
+
+ [1] Ripple\rocksdb\rocksdb\include\rocksdb
+
+
+ [1] Ripple\rocksdb\rocksdb\include\rocksdb
+
+
+ [1] Ripple\rocksdb\rocksdb\include\rocksdb
+
+
+ [1] Ripple\rocksdb\rocksdb\include\rocksdb
+
+
+ [1] Ripple\rocksdb\rocksdb\include\rocksdb
+
+
+ [1] Ripple\rocksdb\rocksdb\include\rocksdb
+
+
+ [1] Ripple\rocksdb\rocksdb\include\utilities
+
+
+ [1] Ripple\rocksdb\rocksdb\include\utilities
+
diff --git a/SConstruct b/SConstruct
index 7244e80b4..68576e926 100644
--- a/SConstruct
+++ b/SConstruct
@@ -160,6 +160,7 @@ COMPILED_FILES.extend([
'src/ripple/json/ripple_json.cpp',
'src/ripple/peerfinder/ripple_peerfinder.cpp',
'src/ripple/resource/ripple_resource.cpp',
+ 'src/ripple/rocksdb/ripple_rocksdb.cpp',
'src/ripple/rpc/ripple_rpc.cpp',
'src/ripple/sitefiles/ripple_sitefiles.cpp',
'src/ripple/sophia/ripple_sophia.c',
diff --git a/src/ripple/rocksdb/ripple_rocksdb.cpp b/src/ripple/rocksdb/ripple_rocksdb.cpp
new file mode 100644
index 000000000..38e6f061e
--- /dev/null
+++ b/src/ripple/rocksdb/ripple_rocksdb.cpp
@@ -0,0 +1,110 @@
+//------------------------------------------------------------------------------
+/*
+ This file is part of rippled: https://github.com/ripple/rippled
+ Copyright (c) 2012, 2013 Ripple Labs Inc.
+
+ Permission to use, copy, modify, and/or distribute this software for any
+ purpose with or without fee is hereby granted, provided that the above
+ copyright notice and this permission notice appear in all copies.
+
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ ANY SPECIAL , DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+*/
+//==============================================================================
+
+#include "BeastConfig.h"
+
+#include "ripple_rocksdb.h"
+
+#if RIPPLE_ROCKSDB_AVAILABLE
+
+#if BEAST_WIN32
+# define ROCKSDB_PLATFORM_WINDOWS
+#else
+# define ROCKSDB_PLATFORM_POSIX
+# if BEAST_MAC || BEAST_IOS
+# define OS_MACOSX
+# elif BEAST_BSD
+# define OS_FREEBSD
+# else
+# define OS_LINUX
+# endif
+#endif
+
+#if BEAST_GCC
+# pragma GCC diagnostic push
+# pragma GCC diagnostic ignored "-Wreorder"
+# pragma GCC diagnostic ignored "-Wunused-variable"
+# pragma GCC diagnostic ignored "-Wunused-but-set-variable"
+#endif
+
+#include "rocksdb/db/builder.cc"
+#include "rocksdb/db/db_filesnapshot.cc"
+#include "rocksdb/db/dbformat.cc"
+#include "rocksdb/db/db_impl.cc"
+#include "rocksdb/db/db_impl_readonly.cc"
+#include "rocksdb/db/db_iter.cc"
+#include "rocksdb/db/db_stats_logger.cc"
+#include "rocksdb/db/filename.cc"
+#include "rocksdb/db/log_reader.cc"
+#include "rocksdb/db/log_writer.cc"
+#include "rocksdb/db/memtable.cc"
+#include "rocksdb/db/memtablelist.cc"
+#include "rocksdb/db/merge_helper.cc"
+#include "rocksdb/db/merge_operator.cc"
+#include "rocksdb/db/repair.cc"
+#include "rocksdb/db/table_cache.cc"
+#include "rocksdb/db/table_properties_collector.cc"
+#include "rocksdb/db/transaction_log_impl.cc"
+#include "rocksdb/db/version_edit.cc"
+#include "rocksdb/db/version_set.cc"
+#include "rocksdb/db/version_set_reduce_num_levels.cc"
+#include "rocksdb/db/write_batch.cc"
+
+#include "rocksdb/table/block_based_table_builder.cc"
+#include "rocksdb/table/block_based_table_factory.cc"
+#include "rocksdb/table/block_based_table_reader.cc"
+#include "rocksdb/table/block_builder.cc"
+#include "rocksdb/table/block.cc"
+#include "rocksdb/table/filter_block.cc"
+#include "rocksdb/table/flush_block_policy.cc"
+#include "rocksdb/table/format.cc"
+#include "rocksdb/table/iterator.cc"
+#include "rocksdb/table/merger.cc"
+#include "rocksdb/table/two_level_iterator.cc"
+
+#include "rocksdb/util/arena_impl.cc"
+#include "rocksdb/util/auto_roll_logger.cc"
+#include "rocksdb/util/blob_store.cc"
+#include "rocksdb/util/bloom.cc"
+#include "rocksdb/util/cache.cc"
+#include "rocksdb/util/coding.cc"
+#include "rocksdb/util/comparator.cc"
+#include "rocksdb/util/crc32c.cc"
+#include "rocksdb/util/env.cc"
+//#include "rocksdb/util/env_hdfs.cc"
+#include "rocksdb/util/env_posix.cc"
+#include "rocksdb/util/filter_policy.cc"
+#include "rocksdb/util/hash.cc"
+#include "rocksdb/util/hash_skiplist_rep.cc"
+#include "rocksdb/util/histogram.cc"
+#include "rocksdb/util/logging.cc"
+#include "rocksdb/util/murmurhash.cc"
+#include "rocksdb/util/options.cc"
+#include "rocksdb/util/perf_context.cc"
+#include "rocksdb/util/skiplistrep.cc"
+#include "rocksdb/util/slice.cc"
+#include "rocksdb/util/statistics.cc"
+#include "rocksdb/util/status.cc"
+#include "rocksdb/util/string_util.cc"
+#include "rocksdb/util/transformrep.cc"
+#include "rocksdb/util/vectorrep.cc"
+
+#include "rocksdb/port/port_posix.cc"
+
+#endif
diff --git a/src/ripple/rocksdb/ripple_rocksdb.h b/src/ripple/rocksdb/ripple_rocksdb.h
new file mode 100644
index 000000000..b59032212
--- /dev/null
+++ b/src/ripple/rocksdb/ripple_rocksdb.h
@@ -0,0 +1,59 @@
+//------------------------------------------------------------------------------
+/*
+ This file is part of rippled: https://github.com/ripple/rippled
+ Copyright (c) 2012, 2013 Ripple Labs Inc.
+
+ Permission to use, copy, modify, and/or distribute this software for any
+ purpose with or without fee is hereby granted, provided that the above
+ copyright notice and this permission notice appear in all copies.
+
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ ANY SPECIAL , DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+*/
+//==============================================================================
+
+#ifndef RIPPLE_ROCKSDB_H_INCLUDED
+#define RIPPLE_ROCKSDB_H_INCLUDED
+
+#include "beast/beast/Config.h"
+
+#ifndef RIPPLE_ROCKSDB_AVAILABLE
+# if BEAST_WIN32
+# define RIPPLE_ROCKSDB_AVAILABLE 0
+# else
+# define RIPPLE_ROCKSDB_AVAILABLE 1
+# endif
+#endif
+
+#if RIPPLE_ROCKSDB_AVAILABLE
+#include "rocksdb/include/rocksdb/arena.h"
+#include "rocksdb/include/rocksdb/cache.h"
+#include "rocksdb/include/rocksdb/compaction_filter.h"
+#include "rocksdb/include/rocksdb/comparator.h"
+#include "rocksdb/include/rocksdb/db.h"
+#include "rocksdb/include/rocksdb/env.h"
+#include "rocksdb/include/rocksdb/filter_policy.h"
+#include "rocksdb/include/rocksdb/flush_block_policy.h"
+#include "rocksdb/include/rocksdb/iterator.h"
+#include "rocksdb/include/rocksdb/memtablerep.h"
+#include "rocksdb/include/rocksdb/merge_operator.h"
+#include "rocksdb/include/rocksdb/options.h"
+#include "rocksdb/include/rocksdb/perf_context.h"
+#include "rocksdb/include/rocksdb/slice.h"
+#include "rocksdb/include/rocksdb/slice_transform.h"
+#include "rocksdb/include/rocksdb/statistics.h"
+#include "rocksdb/include/rocksdb/status.h"
+#include "rocksdb/include/rocksdb/table.h"
+#include "rocksdb/include/rocksdb/table_properties.h"
+#include "rocksdb/include/rocksdb/transaction_log.h"
+#include "rocksdb/include/rocksdb/types.h"
+#include "rocksdb/include/rocksdb/universal_compaction.h"
+#include "rocksdb/include/rocksdb/write_batch.h"
+#endif
+
+#endif
diff --git a/src/ripple/rocksdb/rocksdb/db/builder.cc b/src/ripple/rocksdb/rocksdb/db/builder.cc
index 63fd43b08..fe650ca6b 100644
--- a/src/ripple/rocksdb/rocksdb/db/builder.cc
+++ b/src/ripple/rocksdb/rocksdb/db/builder.cc
@@ -19,7 +19,7 @@
#include "../include/rocksdb/env.h"
#include "../include/rocksdb/iterator.h"
#include "../include/rocksdb/options.h"
-#include "table/block_based_table_builder.h"
+#include "../table/block_based_table_builder.h"
#include "../util/stop_watch.h"
namespace rocksdb {
diff --git a/src/ripple/rocksdb/rocksdb/db/db_impl.cc b/src/ripple/rocksdb/rocksdb/db/db_impl.cc
index 40b1d5f4d..983bafc72 100644
--- a/src/ripple/rocksdb/rocksdb/db/db_impl.cc
+++ b/src/ripple/rocksdb/rocksdb/db/db_impl.cc
@@ -43,10 +43,10 @@
#include "../include/rocksdb/status.h"
#include "../include/rocksdb/table.h"
#include "../port/port.h"
-#include "table/block.h"
-#include "table/block_based_table_factory.h"
-#include "table/merger.h"
-#include "table/two_level_iterator.h"
+#include "../table/block.h"
+#include "../table/block_based_table_factory.h"
+#include "../table/merger.h"
+#include "../table/two_level_iterator.h"
#include "../util/auto_roll_logger.h"
#include "../util/build_version.h"
#include "../util/coding.h"
@@ -283,7 +283,10 @@ DBImpl::DBImpl(const Options& options, const std::string& dbname)
versions_.reset(new VersionSet(dbname_, &options_, storage_options_,
table_cache_.get(), &internal_comparator_));
+#ifdef ROCKSDB_LDB_BUILD_VERSION
dumpLeveldbBuildVersion(options_.info_log.get());
+#endif
+
options_.Dump(options_.info_log.get());
char name[100];
@@ -3587,6 +3590,7 @@ Status DestroyDB(const std::string& dbname, const Options& options) {
return result;
}
+#ifdef ROCKSDB_LDB_BUILD_VERSION
//
// A global method that can dump out the build version
void dumpLeveldbBuildVersion(Logger * log) {
@@ -3594,5 +3598,6 @@ void dumpLeveldbBuildVersion(Logger * log) {
Log(log, "Compile time %s %s",
rocksdb_build_compile_time, rocksdb_build_compile_date);
}
+#endif
} // namespace rocksdb
diff --git a/src/ripple/rocksdb/rocksdb/db/db_impl_readonly.cc b/src/ripple/rocksdb/rocksdb/db/db_impl_readonly.cc
index 605c31715..c06572fcb 100644
--- a/src/ripple/rocksdb/rocksdb/db/db_impl_readonly.cc
+++ b/src/ripple/rocksdb/rocksdb/db/db_impl_readonly.cc
@@ -31,9 +31,9 @@
#include "../include/rocksdb/status.h"
#include "../include/rocksdb/table.h"
#include "../port/port.h"
-#include "table/block.h"
-#include "table/merger.h"
-#include "table/two_level_iterator.h"
+#include "../table/block.h"
+#include "../table/merger.h"
+#include "../table/two_level_iterator.h"
#include "../util/coding.h"
#include "../util/logging.h"
#include "../util/build_version.h"
diff --git a/src/ripple/rocksdb/rocksdb/db/memtable.cc b/src/ripple/rocksdb/rocksdb/db/memtable.cc
index d9f9d86a7..63aa5b8cc 100644
--- a/src/ripple/rocksdb/rocksdb/db/memtable.cc
+++ b/src/ripple/rocksdb/rocksdb/db/memtable.cc
@@ -20,6 +20,8 @@
#include "../util/mutexlock.h"
#include "../util/murmurhash.h"
+#ifndef ROCKSDB_HASH_SLICE_DECLARED
+#define ROCKSDB_HASH_SLICE_DECLARED
namespace std {
template <>
struct hash {
@@ -28,6 +30,7 @@ struct hash {
}
};
}
+#endif
namespace rocksdb {
diff --git a/src/ripple/rocksdb/rocksdb/db/version_set.cc b/src/ripple/rocksdb/rocksdb/db/version_set.cc
index 5af44e512..04168cf3d 100644
--- a/src/ripple/rocksdb/rocksdb/db/version_set.cc
+++ b/src/ripple/rocksdb/rocksdb/db/version_set.cc
@@ -20,8 +20,8 @@
#include "../include/rocksdb/env.h"
#include "../include/rocksdb/merge_operator.h"
#include "../include/rocksdb/table.h"
-#include "table/merger.h"
-#include "table/two_level_iterator.h"
+#include "../table/merger.h"
+#include "../table/two_level_iterator.h"
#include "../util/coding.h"
#include "../util/logging.h"
#include "../util/stop_watch.h"
diff --git a/src/ripple/rocksdb/rocksdb/table/block_based_table_reader.cc b/src/ripple/rocksdb/rocksdb/table/block_based_table_reader.cc
index e1082825a..67da647d8 100644
--- a/src/ripple/rocksdb/rocksdb/table/block_based_table_reader.cc
+++ b/src/ripple/rocksdb/rocksdb/table/block_based_table_reader.cc
@@ -559,7 +559,7 @@ Status BlockBasedTable::GetBlock(
if (s.ok()) {
if (options.fill_cache && entry->value->isCachable()) {
entry->cache_handle = block_cache->Insert(
- key, entry->value, entry->value->size(), &DeleteCachedBlock);
+ key, entry->value, entry->value->size(), &rocksdb::DeleteCachedBlock);
RecordTick(statistics, BLOCK_CACHE_ADD);
}
}
@@ -673,7 +673,7 @@ Iterator* BlockBasedTable::BlockReader(void* arg,
if (block_cache != nullptr && block->isCachable() &&
options.fill_cache) {
cache_handle = block_cache->Insert(key, block, block->size(),
- &DeleteCachedBlock);
+ &rocksdb::DeleteCachedBlock);
assert(reinterpret_cast(block_cache->Value(cache_handle))
== block);
}
@@ -726,7 +726,7 @@ Iterator* BlockBasedTable::BlockReader(void* arg,
// Release the hold on the compressed cache entry immediately.
if (block_cache_compressed != nullptr && cblock != nullptr) {
compressed_cache_handle = block_cache_compressed->Insert(
- ckey, cblock, cblock->size(), &DeleteCachedBlock);
+ ckey, cblock, cblock->size(), &rocksdb::DeleteCachedBlock);
block_cache_compressed->Release(compressed_cache_handle);
RecordTick(statistics, BLOCK_CACHE_COMPRESSED_MISS);
cblock = nullptr;
@@ -735,7 +735,7 @@ Iterator* BlockBasedTable::BlockReader(void* arg,
assert((block->compressionType() == kNoCompression));
if (block_cache != nullptr) {
cache_handle = block_cache->Insert(
- key, block, block->size(), &DeleteCachedBlock);
+ key, block, block->size(), &rocksdb::DeleteCachedBlock);
RecordTick(statistics, BLOCK_CACHE_ADD);
assert(reinterpret_cast(block_cache->Value(
cache_handle))== block);
diff --git a/src/ripple/rocksdb/rocksdb/util/options.cc b/src/ripple/rocksdb/rocksdb/util/options.cc
index 79ae90eab..87e0c328c 100644
--- a/src/ripple/rocksdb/rocksdb/util/options.cc
+++ b/src/ripple/rocksdb/rocksdb/util/options.cc
@@ -17,7 +17,7 @@
#include "../include/rocksdb/env.h"
#include "../include/rocksdb/filter_policy.h"
#include "../include/rocksdb/merge_operator.h"
-#include "table/block_based_table_factory.h"
+#include "../table/block_based_table_factory.h"
namespace rocksdb {
diff --git a/src/ripple/rocksdb/rocksdb/util/transformrep.cc b/src/ripple/rocksdb/rocksdb/util/transformrep.cc
index 9831c54ad..23e771d45 100644
--- a/src/ripple/rocksdb/rocksdb/util/transformrep.cc
+++ b/src/ripple/rocksdb/rocksdb/util/transformrep.cc
@@ -18,6 +18,8 @@
#include "murmurhash.h"
#include "stl_wrappers.h"
+#ifndef ROCKSDB_HASH_SLICE_DECLARED
+#define ROCKSDB_HASH_SLICE_DECLARED
namespace std {
template <>
struct hash {
@@ -26,6 +28,7 @@ struct hash {
}
};
}
+#endif
namespace rocksdb {
namespace {