]> gitweb.factorcode.org Git - factor.git/commitdiff
extra.redis.assoc: Assoc protocol implementation for Redis
authorBruno Deferrari <utizoc@gmail.com>
Mon, 11 May 2009 03:08:34 +0000 (00:08 -0300)
committerBruno Deferrari <utizoc@gmail.com>
Mon, 11 May 2009 03:08:34 +0000 (00:08 -0300)
extra/redis/assoc/assoc.factor [new file with mode: 0644]
extra/redis/assoc/authors.txt [new file with mode: 0644]
extra/redis/assoc/summary.txt [new file with mode: 0644]

diff --git a/extra/redis/assoc/assoc.factor b/extra/redis/assoc/assoc.factor
new file mode 100644 (file)
index 0000000..2ddf746
--- /dev/null
@@ -0,0 +1,41 @@
+! Copyright (C) 2009 Bruno Deferrari
+! See http://factorcode.org/license.txt for BSD license.
+USING: accessors assocs io.encodings.8-bit io.sockets
+io.streams.duplex kernel redis sequences ;
+IN: redis.assoc
+
+TUPLE: redis-assoc host port encoding password ;
+
+CONSTANT: default-redis-port 6379
+
+: <redis-assoc> ( -- redis-assoc )
+    redis-assoc new
+        "127.0.0.1" >>host
+        default-redis-port >>port
+        latin1 >>encoding ;
+
+INSTANCE: redis-assoc assoc
+
+: with-redis-assoc ( redis-assoc quot -- )
+    [
+        [ host>> ] [ port>> ] [ encoding>> ] tri
+        [ <inet> ] dip <client> drop
+    ] dip with-stream ; inline
+
+M: redis-assoc at* [ redis-get dup >boolean ] with-redis-assoc ;
+
+M: redis-assoc assoc-size [ redis-dbsize ] with-redis-assoc ;
+
+M: redis-assoc >alist
+    [ "*" redis-keys dup redis-mget zip ] with-redis-assoc ;
+
+M: redis-assoc set-at [ redis-set drop ] with-redis-assoc ;
+
+M: redis-assoc delete-at [ redis-del drop ] with-redis-assoc ;
+
+M: redis-assoc clear-assoc
+    [ "*" redis-keys [ redis-del drop ] each ] with-redis-assoc ;
+
+M: redis-assoc equal? assoc= ;
+
+M: redis-assoc hashcode* assoc-hashcode ;
diff --git a/extra/redis/assoc/authors.txt b/extra/redis/assoc/authors.txt
new file mode 100644 (file)
index 0000000..f4a8cb1
--- /dev/null
@@ -0,0 +1 @@
+Bruno Deferrari
diff --git a/extra/redis/assoc/summary.txt b/extra/redis/assoc/summary.txt
new file mode 100644 (file)
index 0000000..72a76ab
--- /dev/null
@@ -0,0 +1 @@
+Assoc protocol implementation for Redis