00001 //FIXME: Removed oneway, leaving only void to deal with current O^2 limitation 00002 //FIXME: Uncomment modules when O^2 adds support for nested modules 00003 //FIXME: uncomment block comments when O^2 adds support for them 00004 //FIXME: Separate in different IDL files when supported by O^2 00005 00006 //-------------------------------------------------------------------------------------- 00007 module subsubtypes{ 00008 00009 typedef sequence<string> FileNameSeq; 00010 typedef sequence<octet> File; 00011 00012 }; 00013 00014 //-------------------------------------------------------------------------------------- 00015 module subtypes{ 00016 00020 struct FileStruct{ 00021 string filename; 00022 subsubtypes::File file; 00023 }; 00024 }; 00025 00026 //-------------------------------------------------------------------------------------- 00027 module types{ 00028 00029 typedef sequence<subtypes::FileStruct> FileSeq; 00030 00034 struct StaticInfo{ 00035 string hostName; 00036 string osName; 00037 string osVersion; 00038 string processorName; 00039 long processorMhz; 00040 long totalRAM; 00041 long totalSwap; 00042 }; 00043 00047 struct DynamicInfo{ 00048 long freeRAM; 00049 long freeSwap; 00050 long fsFree; 00051 long filesFree; 00052 string cpuUsage; 00053 long fsTotal; 00054 long filesTotal; 00055 }; 00056 00060 struct OfferSpecs{ 00061 string lrmIor; 00062 string requestId; 00063 string lrmRequestId; 00064 }; 00065 00070 struct CommonExecutionSpecs{ 00071 string requestingAsctIor; 00072 string requestId; 00073 00074 string grmIor; 00075 string applicationId; 00076 00077 string applicationConstraints; 00078 00079 string applicationPreferences; 00080 00081 string deniedExecution; 00082 }; 00083 00088 struct DistinctExecutionSpecs{ 00089 string applicationArgs; 00090 subsubtypes::FileNameSeq inputFiles; 00091 subsubtypes::FileNameSeq outputFiles; 00092 }; 00093 00097 struct ExecutionSpecs{ 00098 string requestingAsctIor; 00099 string requestId; 00100 00101 string grmIor; 00102 string deniedExecution; 00103 string applicationId; 00104 00105 string applicationArgs; 00106 string applicationConstraints; 00107 00108 string applicationPreferences; 00109 00110 subsubtypes::FileNameSeq inputFiles; 00111 subsubtypes::FileNameSeq outputFiles; 00112 }; 00113 00118 struct BspInfo{ 00119 boolean isProcessZero; 00120 string processZeroIor; 00121 }; 00122 00123 };//types 00124 00125 //-------------------------------------------------------------------------------------- 00126 module yetAnotherType{ 00127 00128 typedef sequence<types::DistinctExecutionSpecs> DistExecSpecsSeq; 00129 00130 }; 00131 00132 //-------------------------------------------------------------------------------------- 00133 module interfaces{ 00134 00140 interface Lrm{ 00141 00148 void setSampleInterval(in long seconds); 00149 00155 void setKeepAliveInterval(in long seconds); 00156 00160 void ping(); 00161 00169 void remoteExecutionRequest(in types::ExecutionSpecs execSpecs); 00170 00176 types::FileSeq requestOutputFiles(in string appId); 00177 00183 string getStatus(in string appId); 00184 00190 void kill(in string appId); 00191 00192 };//Lrm 00193 00199 interface Grm{ 00200 00207 void registerLrm (in string lrmId, in types::StaticInfo staticInfo); 00208 00215 void sendUpdate (in string lrmId,in types::DynamicInfo dynamicInfo); 00216 00229 void remoteExecutionRequest(in types::CommonExecutionSpecs commonSpecs, 00230 in yetAnotherType::DistExecSpecsSeq distinctSpecs, 00231 in boolean forceDifferentMachines); 00232 00233 };//interface Grm 00234 00240 interface Asct{ 00241 00251 void acceptedExecutionRequest(in types::OfferSpecs offSpecs); 00252 00262 void refusedExecutionRequest(in string requestId); 00263 00271 subsubtypes::File requestInputFiles(in string paths); 00272 00278 void appFinished(in string appId); 00279 00289 types::BspInfo registerBspNode(in string appId, in string bspProxyIor); 00290 00291 };//Asct 00292 00293 00294 00295 }; //Interfaces