summaryrefslogtreecommitdiffstats
path: root/vendor/github.com/couchbase/gomemcached/README.markdown
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/github.com/couchbase/gomemcached/README.markdown')
-rw-r--r--vendor/github.com/couchbase/gomemcached/README.markdown32
1 files changed, 32 insertions, 0 deletions
diff --git a/vendor/github.com/couchbase/gomemcached/README.markdown b/vendor/github.com/couchbase/gomemcached/README.markdown
new file mode 100644
index 0000000000..5e9b2de5be
--- /dev/null
+++ b/vendor/github.com/couchbase/gomemcached/README.markdown
@@ -0,0 +1,32 @@
+# gomemcached
+
+This is a memcached binary protocol toolkit in [go][go].
+
+It provides client and server functionality as well as a little sample
+server showing how I might make a server if I valued purity over
+performance.
+
+## Server Design
+
+<div>
+ <img src="http://dustin.github.com/images/gomemcached.png"
+ alt="overview" style="float: right"/>
+</div>
+
+The basic design can be seen in [gocache]. A [storage
+server][storage] is run as a goroutine that receives a `MCRequest` on
+a channel, and then issues an `MCResponse` to a channel contained
+within the request.
+
+Each connection is a separate goroutine, of course, and is responsible
+for all IO for that connection until the connection drops or the
+`dataServer` decides it's stupid and sends a fatal response back over
+the channel.
+
+There is currently no work at all in making the thing perform (there
+are specific areas I know need work). This is just my attempt to
+learn the language somewhat.
+
+[go]: http://golang.org/
+[gocache]: gomemcached/blob/master/gocache/gocache.go
+[storage]: gomemcached/blob/master/gocache/mc_storage.go