stat without struct
[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     args = the_args.unshift ""##optparser cuts the first arg TODO
30     args_pointer = ArcClientCWrapper::string_array_as_pointer(args)
31     c_result = @wrapper.arc_stat(args.size, args_pointer)
32     c_result
33   end
34   
35   def get(the_args)
36     generic_call(the_args) do |args_size, args_pointer|
37       c_result = @wrapper.arc_get(args_size, args_pointer)
38       result = ArcClientCWrapper::GetResult.new(c_result)
39       ruby_result = [result.get_str(:message), result[:get]]
40       [result, ruby_result]
41     end
42   end
43   
44   def kill(the_args)
45     args = the_args.unshift ""##optparser cuts the first arg TODO
46     args_pointer = ArcClientCWrapper::string_array_as_pointer(args)
47     @wrapper.arc_kill(args.size, args_pointer)
48   end
49   
50 end