native functions result is not struct anymore
authorTamas Jung <tamasjung@gmail.com>
Fri, 7 Jan 2011 19:14:05 +0000 (20:14 +0100)
committerTamas Jung <tamasjung@gmail.com>
Fri, 7 Jan 2011 19:14:05 +0000 (20:14 +0100)
ext/arc_get.cpp
ext/arc_get.h
ext/arc_submit.cpp
ext/arc_submit.h
lib/arc_client_c_wrapper.rb
lib/arc_client_r.rb
test/test_get.rb
test/test_stat.rb

index 8d17a29..415c2e9 100644 (file)
 #ifdef HAVE_CONFIG_H
 #include <config.h>
 #endif
-
+#include "logger.h"
 #include <iostream>
 #include <list>
 #include <string>
 #include "arc_libs.h"
 
 
-get_result_t* arc_get(int argc, char **argv) {
+int arc_get(int argc, char **argv) {
        
        
-       get_result_t* result = (get_result_t*)malloc(sizeof(get_result_t));
-       if (!result) {
-               return NULL;//TBD: throw sth?
-       }
-       result->message = NULL;
-       result->get = NULL;
+
        
        Arc::OptionParser options(istring("[job ...]"),
                                                          istring("The arcget command is used for "
@@ -89,18 +84,16 @@ get_result_t* arc_get(int argc, char **argv) {
                
        Arc::UserConfig usercfg(conffile, joblist);
        if (!usercfg) {
-               result -> message = new_str("Failed configuration initialization");
-               result -> get = 1;
-               return result;
+               logger.msg(Arc::ERROR, "Failed configuration initialization");
+               return 1;
        }
                
        if (timeout > 0)
        usercfg.Timeout(timeout);
                
        if (jobs.empty() && clusters.empty()) {
-               result -> message = new_str("No jobs given");
-               result -> get = 1;
-               return result;
+               logger.msg(Arc::ERROR, "No jobs given");
+               return 1;
        }
        
        if (!jobs.empty())
@@ -113,24 +106,22 @@ get_result_t* arc_get(int argc, char **argv) {
        
        Arc::JobSupervisor jobmaster(usercfg, jobs);
        if (!jobmaster.JobsFound()) {
-               result -> message = new_str("No jobs");
-               result -> get = 0;
-               return result;
+               logger.msg(Arc::ERROR, "No jobs");
+               return 1;
        }
        std::list<Arc::JobController*> jobcont = jobmaster.GetJobControllers();
        
        // If the user specified a joblist on the command line joblist equals
        // usercfg.JobListFile(). If not use the default, ie. usercfg.JobListFile().
        if (jobcont.empty()) {
-               result -> message = new_str("No job controller plugins loaded");
-               result -> get = 1;
-               return result;
+               logger.msg(Arc::ERROR, "No job controller plugins loaded");
+               return 1;
        }
-       
+  int result = 0;
        for (std::list<Arc::JobController*>::iterator it = jobcont.begin();
                 it != jobcont.end(); it++){
                if (!(*it)->Get(status, downloaddir, keep)){
-                       result -> get = 1;
+                       result = 1;
                }
        }
        
index 05fb12d..762ea14 100644 (file)
 
 #include "common_utils.h"
 
-typedef struct{
-       char* message;//might be NULL
-       int get;//might be NULL
-} get_result_t;
 
-PUBLIC_C get_result_t* arc_get(int argc, char **argv);
+PUBLIC_C int arc_get(int argc, char **argv);
 
 #endif
\ No newline at end of file
index f9333d8..3c5fbd8 100644 (file)
@@ -15,7 +15,7 @@
 #ifdef HAVE_CONFIG_H
 #include <config.h>
 #endif
-
+#include "logger.h"
 #include <fstream>
 #include <iostream>
 #include <list>
 #include "arc_libs.h"
 
 
-submit_result_t* arc_submit(int argc, char **argv) {
+char* arc_submit(int argc, char **argv) {
        
        
-       submit_result_t* result = (submit_result_t*)malloc(sizeof(submit_result_t));
-       if (!result) {
-               return NULL;//TBD: throw sth?
-       }
-       result->message = NULL;
-       result->job_id = NULL;
+  char* job_id = NULL;
        
        
 
@@ -111,8 +106,8 @@ submit_result_t* arc_submit(int argc, char **argv) {
        
        Arc::UserConfig usercfg(conffile, joblist);
        if (!usercfg) {
-               result->message = new_str("Failed configuration initialization");
-               return result;  
+               logger.msg(Arc::ERROR, "Failed configuration initialization");
+               return NULL;    
        }
        
        if (timeout > 0)
@@ -131,32 +126,26 @@ submit_result_t* arc_submit(int argc, char **argv) {
                usercfg.AddServices(indexurls, Arc::INDEX);
        
        if (jobdescriptionstring.empty()) {
-               result->message = new_str("No job description input specified");
-               return result;
+               logger.msg(Arc::ERROR, "No job description input specified");
+               return NULL;
        }
-       
-       
-
                
        Arc::JobDescription jobdesc;
        
        jobdesc.Parse(jobdescriptionstring);
        
        if (!jobdesc){
-               std::ostringstream sstr;
-               sstr << "Invalid JobDescription:";
-               sstr << jobdescriptionstring;
-               result->message = ostringstream2cstring(sstr);
-               return result;
+               
+               logger.msg(Arc::ERROR, "Invalid JobDescription");
+               return NULL;
        }
        
        Arc::TargetGenerator targen(usercfg);
        targen.GetTargets(0, 1);
        
-       if (targen.FoundTargets().empty()) {
-               
-               result->message = new_str("Job submission aborted because no clusters returned any information");
-               return result;
+       if (targen.FoundTargets().empty()) {            
+               logger.msg(Arc::ERROR, "Job submission aborted because no clusters returned any information");
+               return NULL;
        }
        
        
@@ -164,10 +153,8 @@ submit_result_t* arc_submit(int argc, char **argv) {
        Arc::BrokerLoader loader;
        Arc::Broker *ChosenBroker = loader.load(usercfg.Broker().first, usercfg);
        if (!ChosenBroker) {
-               std::ostringstream sstream;
-               sstream << "Unable to load broker " << usercfg.Broker().first;
-               result->message = ostringstream2cstring(sstream);
-               return result;
+         logger.msg(Arc::ERROR, "Unable to load broker %s", usercfg.Broker().first);
+               return NULL;
        }
        logger.msg(Arc::INFO, "Broker %s loaded", usercfg.Broker().first);
        
@@ -178,14 +165,14 @@ submit_result_t* arc_submit(int argc, char **argv) {
                const Arc::ExecutionTarget* target = ChosenBroker->GetBestTarget();
                
                if (!target) {
-                       result->message = new_str("Job submission failed, no more possible targets");
+                       logger.msg(Arc::ERROR, "Job submission failed, no more possible targets");
                        break;
                }
                
                Arc::Submitter *submitter = target->GetSubmitter(usercfg);
                                
                if (dryrun) {
-                       result->message = new_str("Dry run, job submission is skipped");
+                       logger.msg(Arc::ERROR, "Dry run, job submission is skipped");
                        break;
                }
                //submit the job
@@ -196,13 +183,13 @@ submit_result_t* arc_submit(int argc, char **argv) {
                }
                
                ChosenBroker->RegisterJobsubmission();
-               result->job_id = new_str(jobid.str().c_str());
+               job_id = new_str(jobid.str().c_str());
                logger.msg(Arc::DEBUG, "Job submitted with jobid: %s", jobid.str());
                
                break;
        } //end loop over all possible targets
        
-       return result;
+       return job_id;
 }
 
 
index e37bd03..8efec09 100644 (file)
 
 #include "common_utils.h"
 
-typedef struct{
-       char* message;//might be NULL
-       char* job_id;//might be NULL
-} submit_result_t;
 
-PUBLIC_C submit_result_t* arc_submit(int argc, char **argv);
+
+PUBLIC_C char* arc_submit(int argc, char **argv);
 
 #endif
 
index ac7eeed..916da4a 100644 (file)
@@ -67,12 +67,6 @@ class ArcClientCWrapper
     end
   end
 
-  class SubmitResult < BaseStruct
-    layout     :message,  :pointer,\
-            :job_id,  :pointer
-            
-  end
-
   
   class GetResult < BaseStruct
     layout  :message, :pointer, \
@@ -88,9 +82,9 @@ class ArcClientCWrapper
   
   attach_function :initialize, [], :string
   
-  attach_function :arc_submit, [:int, :pointer], :pointer
+  attach_function :arc_submit, [:int, :pointer], :string
   attach_function :arc_stat, [:int, :pointer], :string
-  attach_function :arc_get, [:int, :pointer], :pointer
+  attach_function :arc_get, [:int, :pointer], :int
   attach_function :arc_kill, [:int, :pointer], :int
   
   def self.string_array_as_pointer(arr)
index 4702daa..b892b6c 100644 (file)
@@ -7,7 +7,7 @@ class ArcClientR
     @wrapper = ArcClientCWrapper.new
   end
   
-  def generic_call(the_args)
+  def generic_call(the_args)#currently not used
     args = the_args.unshift ""##optparser cuts the first arg TODO
     args_pointer = ArcClientCWrapper::string_array_as_pointer(args)
     result, ruby_result = yield(args.size, args_pointer)
@@ -16,35 +16,27 @@ class ArcClientR
     ruby_result
   end
   
+  def generic_value_func(func_name, the_args)
+    args = the_args.unshift ""##optparser cuts the first arg TODO
+    args_pointer = ArcClientCWrapper::string_array_as_pointer(args)
+    result = @wrapper.send func_name, args.size, args_pointer
+    result
+  end
+  
   def submit(the_args)
-    generic_call(the_args) do |args_size, args_pointer|
-      c_result = @wrapper.arc_submit(args_size, args_pointer)
-      result = ArcClientCWrapper::SubmitResult.new(c_result)
-      ruby_result = [result.get_str(:message), result.get_str(:job_id)]
-      [result, ruby_result]
-    end
+    generic_value_func :arc_submit, the_args
   end
   
   def stat(the_args)
-    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
+    generic_value_func :arc_stat, the_args
   end
   
   def get(the_args)
-    generic_call(the_args) do |args_size, args_pointer|
-      c_result = @wrapper.arc_get(args_size, args_pointer)
-      result = ArcClientCWrapper::GetResult.new(c_result)
-      ruby_result = [result.get_str(:message), result[:get]]
-      [result, ruby_result]
-    end
+    generic_value_func :arc_get, the_args
   end
   
   def kill(the_args)
-    args = the_args.unshift ""##optparser cuts the first arg TODO
-    args_pointer = ArcClientCWrapper::string_array_as_pointer(args)
-    @wrapper.arc_kill(args.size, args_pointer)
+    generic_value_func :arc_kill, the_args
   end
   
 end
\ No newline at end of file
index e532de4..d5e72af 100644 (file)
@@ -6,7 +6,7 @@ class TestGet < ::Test::Unit::TestCase
   def test_base
     arc_client = ArcClientR.new
     1.times do
-    message, get = arc_client.get(["-j", "test_job_list.xml", "https://interop.grid.niif.hu:2010/arex-x509/218791288114550534117300"])
+    message, get = arc_client.get(["-j", "test_job_list.xml", "https://testce.grid.niif.hu:60000/arex/2026912944241491054461075"])
     p message
     p get
     end
index 64e8887..d7f020c 100644 (file)
@@ -6,7 +6,7 @@ class TestStat < ::Test::Unit::TestCase
   def test_base
     arc_client = ArcClientR.new
     2.times do 
-      stat = arc_client.stat(["-j", "test_job_list.xml", "https://testce.grid.niif.hu:60000/arex/2026912944213001043153596"])
+      stat = arc_client.stat(["-j", "test_job_list.xml", "https://testce.grid.niif.hu:60000/arex/2026912944241491054461075"])
       p stat
     end
   end