kill implementation fixed
[gp-arc-client-c.git] / lib / arc_client_r.rb
1 require 'arc_client_c_wrapper'
2 require 'ffi_libc'
3
4 class ArcClientR
5   
6   def initialize
7     @wrapper = ArcClientCWrapper.new
8   end
9   
10   def generic_call(the_args)
11     args = the_args.unshift ""##optparser cuts the first arg TODO
12     args_pointer = ArcClientCWrapper::string_array_as_pointer(args)
13     result, ruby_result = yield(args.size, args_pointer)
14     result.free_pointer_members
15     #ArcClientCWrapper::free_array_of_pointer(args_pointer, args.size)
16     ruby_result
17   end
18   
19   def submit(the_args)
20     generic_call(the_args) do |args_size, args_pointer|
21       c_result = @wrapper.arc_submit(args_size, args_pointer)
22       result = ArcClientCWrapper::SubmitResult.new(c_result)
23       ruby_result = [result.get_str(:message), result.get_str(:job_id)]
24       [result, ruby_result]
25     end
26   end
27   
28   def stat(the_args)
29     generic_call(the_args) do |args_size, args_pointer|
30       c_result = @wrapper.arc_stat(args_size, args_pointer)
31       result = ArcClientCWrapper::StatResult.new(c_result)
32       ruby_result = [result.get_str(:message), result.get_str(:stat)]
33       [result, ruby_result]
34     end
35   end
36   
37   def get(the_args)
38     generic_call(the_args) do |args_size, args_pointer|
39       c_result = @wrapper.arc_get(args_size, args_pointer)
40       result = ArcClientCWrapper::GetResult.new(c_result)
41       ruby_result = [result.get_str(:message), result[:get]]
42       [result, ruby_result]
43     end
44   end
45   
46   def kill(the_args)
47     args = the_args.unshift ""##optparser cuts the first arg TODO
48     args_pointer = ArcClientCWrapper::string_array_as_pointer(args)
49     @wrapper.arc_kill(args.size, args_pointer)
50   end
51   
52 end