stat without struct
authorTamas Jung <tamasjung@gmail.com>
Fri, 7 Jan 2011 17:38:09 +0000 (18:38 +0100)
committerTamas Jung <tamasjung@gmail.com>
Fri, 7 Jan 2011 17:38:09 +0000 (18:38 +0100)
ext/arc_stat.cpp
ext/arc_stat.h
lib/arc_client_c_wrapper.rb
lib/arc_client_r.rb
test/test_kill.rb
test/test_stat.rb

index 488b42c..eda1c9b 100644 (file)
 #include <algorithm>
 #include "arc_libs.h"
 
-stat_result_t*  arc_stat(int argc, char **argv) {
-       
-       stat_result_t* result = (stat_result_t*)malloc(sizeof(stat_result_t));
-       if (!result) {
-               return NULL;//TBD: throw sth?
-       }
-       result->message = NULL;
-       result->stat = NULL;
-       
+char*  arc_stat(int argc, char **argv) {
        
+  char* result;
        Arc::OptionParser options(istring("[job ...]"),
                                                          istring("The arcstat command is used for "
                                                                          "obtaining the status of jobs that have\n"
@@ -73,7 +66,7 @@ stat_result_t*  arc_stat(int argc, char **argv) {
        if (!usercfg) {
                //result  -> message = new_str("Failed configuration initialization");
                logger.msg(Arc::ERROR, "Failed configuration initialization");
-               return result;
+               return NULL;
        }
                
        if (timeout > 0)
@@ -93,20 +86,20 @@ stat_result_t*  arc_stat(int argc, char **argv) {
        if (!jobmaster.JobsFound()) {
                //result -> message = new_str("No jobs");
     logger.msg(Arc::INFO, "No jobs");
-               return result;
+               return NULL;
        }
        std::list<Arc::JobController*> jobcont = jobmaster.GetJobControllers();
        
        if (jobcont.empty()) {
                //result -> message = new_str("No job controller plugins loaded");
     logger.msg(Arc::INFO, "No job controller plugins loaded");
-               return result;
+               return NULL;
        }
        
        if (jobcont.size() != 1){
                //result -> message = new_str("Too many jobs found");
     logger.msg(Arc::ERROR, "Too many jobs found");
-               return result;
+               return NULL;
        } 
        Arc::JobController* it = jobcont.front();
        
@@ -117,12 +110,12 @@ stat_result_t*  arc_stat(int argc, char **argv) {
        if (jobs_list.size() != 1) {
                //result -> message = new_str("Ambiguous job");
     logger.msg(Arc::ERROR, "Ambiguous job");
-               return result;
+               return NULL;
        }
        
        Arc::Job& job = jobs_list.front();
        
-       result -> stat = new_str(job.State().c_str());
+       result = new_str(job.State().c_str());
        
        return result;
        
index aafd2ed..cbd1e07 100644 (file)
 
 #include "common_utils.h"
 
-typedef struct{
-       char* message;//might be NULL
-       char* stat;//might be NULL
-} stat_result_t;
 
-PUBLIC_C stat_result_t* arc_stat(int argc, char **argv);
+PUBLIC_C char* arc_stat(int argc, char **argv);
 
 #endif
index 3532aa0..ac7eeed 100644 (file)
@@ -72,11 +72,7 @@ class ArcClientCWrapper
             :job_id,  :pointer
             
   end
-  class StatResult < BaseStruct
-    layout     :message,  :pointer,\
-            :stat,  :pointer
-    
-  end
+
   
   class GetResult < BaseStruct
     layout  :message, :pointer, \
@@ -93,7 +89,7 @@ class ArcClientCWrapper
   attach_function :initialize, [], :string
   
   attach_function :arc_submit, [:int, :pointer], :pointer
-  attach_function :arc_stat, [:int, :pointer], :pointer
+  attach_function :arc_stat, [:int, :pointer], :string
   attach_function :arc_get, [:int, :pointer], :pointer
   attach_function :arc_kill, [:int, :pointer], :int
   
index fa1901b..4702daa 100644 (file)
@@ -26,12 +26,10 @@ class ArcClientR
   end
   
   def stat(the_args)
-    generic_call(the_args) do |args_size, args_pointer|
-      c_result = @wrapper.arc_stat(args_size, args_pointer)
-      result = ArcClientCWrapper::StatResult.new(c_result)
-      ruby_result = [result.get_str(:message), result.get_str(:stat)]
-      [result, ruby_result]
-    end
+    args = the_args.unshift ""##optparser cuts the first arg TODO
+    args_pointer = ArcClientCWrapper::string_array_as_pointer(args)
+    c_result = @wrapper.arc_stat(args.size, args_pointer)
+    c_result
   end
   
   def get(the_args)
index 1429db5..8860e84 100644 (file)
@@ -18,7 +18,7 @@ class TestGet < ::Test::Unit::TestCase
     p 'waking and killing'
     result = arc_client.kill(["-j", joblistfile, job_id])
     p "result #{result}"
-    p arc_client.stat(["-j", "test_jobkill_list.xml", job_id])
+    p arc_client.stat(["-j", joblistfile, job_id])
     File.delete(joblistfile)
   end
 end
\ No newline at end of file
index 5c67065..64e8887 100644 (file)
@@ -6,9 +6,8 @@ class TestStat < ::Test::Unit::TestCase
   def test_base
     arc_client = ArcClientR.new
     2.times do 
-    message, stat = arc_client.stat(["-j", "test_job_list.xml", "https://interop.grid.niif.hu:2010/arex-x509/218791288114550534117300"])
-    p message
-    p stat
-  end
+      stat = arc_client.stat(["-j", "test_job_list.xml", "https://testce.grid.niif.hu:60000/arex/2026912944213001043153596"])
+      p stat
+    end
   end
 end
\ No newline at end of file