// Copyright (c) 2005-2007 Andre Merzky // // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE file or copy at // http://www.boost.org/LICENSE_1_0.txt) #include #include /////////////////////////////////////////////////////////////////////////////// void usage (int val = -1) { std::cout << "Usage: job_check [-t] " << std::endl << " reads job ids to check from stdin" << std::endl; exit (val); } /////////////////////////////////////////////////////////////////////////////// int main (int argc, char* argv[]) { bool tail = false; if ( argc < 2 ) { usage (); } std::string contact; std::string first ("hallo"); if ( std::string (argv[1]) == "-t") { if ( argc < 3 ) { usage (); } tail = true; contact = argv[2]; } else { contact = argv[1]; } try { std::string id; std::cout << "enter jobid: " << std::flush; std::cin >> id; while ( id != "" ) { saga::job_service js (contact); saga::job job = js.get_job (id); saga::job::state state = job.get_state (); std::cout << "job id: " << job.get_job_id () << std::endl; if ( state == saga::job::Running || state == saga::job::Suspended ) { std::cout << "found job, is active" << std::endl; saga::istream out = job.get_stdout (); // print stdout of this job while ( true ) { std::string outstring; out >> outstring; std::cout << outstring << " "; if ( out.fail () ) break; } std::cout << std::flush; state = job.get_state (); } if ( state == saga::job::Done ) { std::cout << "job finished." << std::endl; } else { std::cerr << "job failed or canceled!" << std::endl; } std::cout << "enter jobid: " << std::flush; std::cin >> id; } } catch ( saga::exception const & e ) { std::cerr << "saga exception caught: " << e.what () << std::endl; } return 0; }