Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- def check_again_soon(response, id)
- EM.add_timer(0.5) do
- if $peers.length < 2
- $log.debug "Still not enough peers, rescheduling check again..."
- check_again_soon(response, id)
- else
- $log.debug "Deleting self from collection..."
- $peers.delete(id)
- respond_with_random_peer(response, id)
- end
- end
- end
- def respond_with_random_peer(response, id)
- $log.debug "Responding with peer..."
- peer = $peers.keys.first
- $peers[peer] = id
- response << peer
- response.done
- end
- app = proc do |env|
- id = Rack::Request.new(env).POST['id']
- #return [ 404, {}, [] ] if id.nil?
- id = "1a2a3a4a" if id.nil?
- response = Thin::AsyncResponse.new(env)
- response.status = 200
- unless $peers.empty?
- $log.debug "Peers collection not empty"
- respond_with_random_peer(response, id)
- else
- $log.debug "Peers collection is empty, adding self to collection and scheduling another check soon..."
- $peers[id] = nil
- check_again_soon(response, id)
- end
- response.finish
- end
- run app
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement