| 1 |
// Copyright (c) 2005-2007 Andre Merzky <andre@merzky.net> |
|---|
| 2 |
// |
|---|
| 3 |
// Distributed under the Boost Software License, Version 1.0. |
|---|
| 4 |
// (See accompanying file LICENSE file or copy at |
|---|
| 5 |
// http://www.boost.org/LICENSE_1_0.txt) |
|---|
| 6 |
|
|---|
| 7 |
#include <saga/saga.hpp> |
|---|
| 8 |
|
|---|
| 9 |
#define COUNT 100 |
|---|
| 10 |
|
|---|
| 11 |
void print_io (saga::job::job j) |
|---|
| 12 |
{ |
|---|
| 13 |
saga::job::istream out = j.get_stdout (); |
|---|
| 14 |
|
|---|
| 15 |
while ( true ) |
|---|
| 16 |
{ |
|---|
| 17 |
char buffer[255]; |
|---|
| 18 |
|
|---|
| 19 |
// get stdout |
|---|
| 20 |
out.read (buffer, sizeof (buffer)); |
|---|
| 21 |
|
|---|
| 22 |
if ( out.gcount () > 0 ) |
|---|
| 23 |
{ |
|---|
| 24 |
std::cout << std::string (buffer, out.gcount ()); |
|---|
| 25 |
} |
|---|
| 26 |
|
|---|
| 27 |
if ( out.fail () ) |
|---|
| 28 |
{ |
|---|
| 29 |
break; |
|---|
| 30 |
} |
|---|
| 31 |
} |
|---|
| 32 |
|
|---|
| 33 |
return; |
|---|
| 34 |
} |
|---|
| 35 |
|
|---|
| 36 |
/////////////////////////////////////////////////////////////////////////////// |
|---|
| 37 |
int main (int argc, char* argv[]) |
|---|
| 38 |
{ |
|---|
| 39 |
|
|---|
| 40 |
// job description is shared by all sessions |
|---|
| 41 |
saga::job::description jd; |
|---|
| 42 |
|
|---|
| 43 |
jd.set_attribute ("Executable", "hostname"); |
|---|
| 44 |
jd.set_attribute ("Interactive", "True"); |
|---|
| 45 |
|
|---|
| 46 |
|
|---|
| 47 |
// 3 sessions |
|---|
| 48 |
saga::session s1; |
|---|
| 49 |
saga::session s2; |
|---|
| 50 |
saga::session s3; |
|---|
| 51 |
|
|---|
| 52 |
|
|---|
| 53 |
// 3 contexts |
|---|
| 54 |
saga::context c1 ("nimbus"); |
|---|
| 55 |
saga::context c2 ("eucalyptus"); |
|---|
| 56 |
saga::context c3 ("ec2"); |
|---|
| 57 |
|
|---|
| 58 |
c1.set_defaults (); |
|---|
| 59 |
c2.set_defaults (); |
|---|
| 60 |
c3.set_defaults (); |
|---|
| 61 |
|
|---|
| 62 |
|
|---|
| 63 |
// one context per session |
|---|
| 64 |
s1.add_context (c1); |
|---|
| 65 |
s2.add_context (c2); |
|---|
| 66 |
s3.add_context (c3); |
|---|
| 67 |
|
|---|
| 68 |
|
|---|
| 69 |
// one job service per session |
|---|
| 70 |
saga::job::service js1 (s1); |
|---|
| 71 |
saga::job::service js2 (s2); |
|---|
| 72 |
saga::job::service js3 (s3); |
|---|
| 73 |
|
|---|
| 74 |
|
|---|
| 75 |
// run 1 job per job service |
|---|
| 76 |
|
|---|
| 77 |
saga::job::job j1 = js1.create_job (jd); |
|---|
| 78 |
saga::job::job j2 = js2.create_job (jd); |
|---|
| 79 |
saga::job::job j3 = js3.create_job (jd); |
|---|
| 80 |
|
|---|
| 81 |
j1.run (); print_io (j1); |
|---|
| 82 |
j2.run (); print_io (j2); |
|---|
| 83 |
j3.run (); print_io (j3); |
|---|
| 84 |
|
|---|
| 85 |
return 0; |
|---|
| 86 |
} |
|---|
| 87 |
|
|---|