summaryrefslogtreecommitdiff
path: root/apps/fabric/src/fabric_dict.erl
diff options
context:
space:
mode:
authorAdam Kocoloski <adam@cloudant.com>2010-08-12 02:27:21 -0400
committerAdam Kocoloski <adam@cloudant.com>2010-08-12 02:27:21 -0400
commit4d7e3604c9ed5788747334c08359af1822368d15 (patch)
treea523dd8383ac7c7e0bc853469b3b7c539b4c30f2 /apps/fabric/src/fabric_dict.erl
parent72d7a60124b4ee7e31912fe7ed3a50bbc5cb9f64 (diff)
parent5e2f90537f5b54adc94c58b58512a05b058fa804 (diff)
Add 'apps/fabric/' from commit '5e2f90537f5b54adc94c58b58512a05b058fa804'
git-subtree-dir: apps/fabric git-subtree-mainline: 72d7a60124b4ee7e31912fe7ed3a50bbc5cb9f64 git-subtree-split: 5e2f90537f5b54adc94c58b58512a05b058fa804
Diffstat (limited to 'apps/fabric/src/fabric_dict.erl')
-rw-r--r--apps/fabric/src/fabric_dict.erl37
1 files changed, 37 insertions, 0 deletions
diff --git a/apps/fabric/src/fabric_dict.erl b/apps/fabric/src/fabric_dict.erl
new file mode 100644
index 00000000..42d46b34
--- /dev/null
+++ b/apps/fabric/src/fabric_dict.erl
@@ -0,0 +1,37 @@
+-module(fabric_dict).
+-compile(export_all).
+
+% Instead of ets, let's use an ordered keylist. We'll need to revisit if we
+% have >> 100 shards, so a private interface is a good idea. - APK June 2010
+
+init(Keys, InitialValue) ->
+ orddict:from_list([{Key, InitialValue} || Key <- Keys]).
+
+
+decrement_all(Dict) ->
+ [{K,V-1} || {K,V} <- Dict].
+
+store(Key, Value, Dict) ->
+ orddict:store(Key, Value, Dict).
+
+erase(Key, Dict) ->
+ orddict:erase(Key, Dict).
+
+update_counter(Key, Incr, Dict0) ->
+ orddict:update_counter(Key, Incr, Dict0).
+
+
+lookup_element(Key, Dict) ->
+ couch_util:get_value(Key, Dict).
+
+size(Dict) ->
+ orddict:size(Dict).
+
+any(Value, Dict) ->
+ lists:keymember(Value, 2, Dict).
+
+filter(Fun, Dict) ->
+ orddict:filter(Fun, Dict).
+
+fold(Fun, Acc0, Dict) ->
+ orddict:fold(Fun, Acc0, Dict).