Module: EmRiak::MapReduce

Extended by:
MapReduce
Included in:
MapReduce
Defined in:
lib/em-riak/map_reduce.rb

Instance Method Summary collapse

Instance Method Details

#submit(*args) ⇒ Object



19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# File 'lib/em-riak/map_reduce.rb', line 19

def submit(*args)
    mode_or_string,params,result_handler,callback,callback_proc=args.first
    if mode_or_string.class==Hash
        submit_work=mode_or_string
    elsif mode_or_string.class==Symbol
        map_reduce_work=MRMAPPER[mode_or_string]
        submit_work=map_reduce_work.gsub(/@!(.{1,}?)!@/){|m| params[$1] }
        submit_work=eval(submit_work)
    end
    url="/mapred"

    map_reduce_json=EmRiak.send :json_encode ,submit_work
    data={:head=>{"Content-Type"=>"application/json"},:body=>map_reduce_json}
    
    callback_proc=Proc.new{|results|  callback.call(callback_handler(results,result_handler))  } if callback
    res=EmRiak.http("post","mapred",url,data,callback_proc)
    res=callback_handler(res,result_handler) if !callback_proc

    res
rescue Exception=>e 
    puts "Map Reduce Error #{e} #{e.backtrace}"
    []
end