Skip to content

Commit

Permalink
minimalist sinatra restmq
Browse files Browse the repository at this point in the history
  • Loading branch information
gleicon committed Aug 13, 2010
1 parent e8bf269 commit ceaf035
Show file tree
Hide file tree
Showing 3 changed files with 36 additions and 66 deletions.
65 changes: 0 additions & 65 deletions node/frontend.js

This file was deleted.

1 change: 0 additions & 1 deletion node/redis-node-client
Submodule redis-node-client deleted from 9c5ea3
36 changes: 36 additions & 0 deletions ruby/restmq.rb
Original file line number Original file line Diff line number Diff line change
@@ -0,0 +1,36 @@
# Sinatra minimalist RestMQ
# no COMET, just /q/ routes and queue logic
# the core of RestMQ is how it uses Redis' data types

require 'rubygems'
require 'sinatra'
require 'redis'

QUEUESET = 'QUEUESET' # queue index
UUID_SUFFIX = ':UUID' # queue unique id
QUEUE_SUFFIX = ':queue' # suffix to identify each queue's LIST

reds = Redis.new

get '/q/*' do
queue = params['splat'].to_s
throw :halt, [404, 'Not found\n'] if queue == nil
queue = queue + QUEUE_SUFFIX
b = reds.rpop queue
throw :halt, [404, 'Not found (empty queue)\n'] if b == nil
v = reds.get b
"{'value':" + v + "'key':" + b + "}"
end

post '/q/*' do
queue = params['splat'].to_s
value = params['value'].to_s
throw :halt, [404, "Not found"] if queue == nil
q1 = queue + QUEUE_SUFFIX
uuid = reds.incr queue + UUID_SUFFIX
reds.sadd QUEUESET, q1
lkey = queue + ':' + uuid.to_s
reds.set lkey, value
reds.lpush q1, lkey
'{ok, '+lkey+'}'
end

0 comments on commit ceaf035

Please sign in to comment.