More changes to adapt to ARC 1.0.1
[gp-arc-client-c.git] / ext / arc_stat.cpp
index 84cbb0a..a71cc3d 100644 (file)
@@ -3,7 +3,6 @@
  *  arcclientc
  *
  *  Created by Tamas Jung on 10/25/10.
- *  Copyright 2010 Apple. All rights reserved.
  *
  */
 
 
 // -*- indent-tabs-mode: nil -*-
 
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
+#include "logger.h"
 #include <iostream>
 #include <list>
 #include <string>
 #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"
@@ -71,8 +60,9 @@ stat_result_t*  arc_stat(int argc, char **argv) {
                
        Arc::UserConfig usercfg(conffile, joblist);
        if (!usercfg) {
-               result  -> message = new_str("Failed configuration initialization");
-               return result;
+               //result  -> message = new_str("Failed configuration initialization");
+               logger.msg(Arc::ERROR, "Failed configuration initialization");
+               return NULL;
        }
                
        if (timeout > 0)
@@ -90,19 +80,22 @@ stat_result_t*  arc_stat(int argc, char **argv) {
        
        Arc::JobSupervisor jobmaster(usercfg, jobs);
        if (!jobmaster.JobsFound()) {
-               result -> message = new_str("No jobs");
-               return result;
+               //result -> message = new_str("No jobs");
+    logger.msg(Arc::INFO, "No jobs");
+               return NULL;
        }
        std::list<Arc::JobController*> jobcont = jobmaster.GetJobControllers();
        
        if (jobcont.empty()) {
-               result -> message = new_str("No job controller plugins loaded");
-               return result;
+               //result -> message = new_str("No job controller plugins loaded");
+    logger.msg(Arc::INFO, "No job controller plugins loaded");
+               return NULL;
        }
        
        if (jobcont.size() != 1){
-               result -> message = new_str("Too many jobs found");
-               return result;
+               //result -> message = new_str("Too many jobs found");
+    logger.msg(Arc::ERROR, "Too many jobs found");
+               return NULL;
        } 
        Arc::JobController* it = jobcont.front();
        
@@ -111,13 +104,14 @@ stat_result_t*  arc_stat(int argc, char **argv) {
        std::list<Arc::Job> jobs_list = it->GetJobs();
        
        if (jobs_list.size() != 1) {
-               result -> message = new_str("Ambiguous job");
-               return result;
+               //result -> message = new_str("Ambiguous job");
+    logger.msg(Arc::ERROR, "Ambiguous job");
+               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;