00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #include "config.h"
00019
00020 #include <assert_pp.h>
00021
00022 #include "BasicTaskCallbackImpl.hh"
00023 #include "BasicTaskQosketImpl.hh"
00024
00025 void BasicTaskQosketImpl::initSysconds(const quo::QuoKernel_ptr &kernel)
00026 throw (CORBA::SystemException)
00027 {
00028 quo::SysCond_var sc;
00029
00030 require(kernel != NULL);
00031
00032
00033 sc = kernel->bindSysCond("DeadlinesMissed",
00034 "quo::ValueSC",
00035 "quo_sc::ValueSCImpl");
00036
00037 this->myDeadlinesMissed =
00038 quo::ValueSC::_duplicate(quo::ValueSC::_narrow(sc.in()));
00039 this->myDeadlinesMissed->longValue(0);
00040
00041
00042 sc = kernel->bindSysCond("LastStatus",
00043 "quo::ValueSC",
00044 "quo_sc::ValueSCImpl");
00045
00046 this->myLastStatus =
00047 quo::ValueSC::_duplicate(quo::ValueSC::_narrow(sc.in()));
00048 this->myLastStatus->longValue(0);
00049 }
00050
00051 void BasicTaskQosketImpl::initCallbacks(const CORBA::ORB_ptr &orb)
00052 throw (CORBA::SystemException)
00053 {
00054 Qosket::Basic::BasicTaskCallback_var btc;
00055 BasicTaskCallbackImpl *btci;
00056
00057 require(!CORBA::is_nil(orb));
00058
00059 btci = new BasicTaskCallbackImpl();
00060 btc = btci->_this();
00061 this->myCallback = Qosket::Basic::BasicTaskCallback::_duplicate(btc.in());
00062 }
00063
00064 quo::ValueSC_ptr BasicTaskQosketImpl::DeadlinesMissed(void)
00065 throw (CORBA::SystemException)
00066 {
00067 quo::ValueSC_var retval;
00068
00069 retval = this->myDeadlinesMissed;
00070 return( retval._retn() );
00071 }
00072
00073 quo::ValueSC_ptr BasicTaskQosketImpl::LastStatus(void)
00074 throw (CORBA::SystemException)
00075 {
00076 quo::ValueSC_var retval;
00077
00078 retval = this->myLastStatus;
00079 return( retval._retn() );
00080 }
00081
00082 quo::Callback_ptr BasicTaskQosketImpl::Callback(void)
00083 throw (CORBA::SystemException)
00084 {
00085 Qosket::Basic::BasicTaskCallback_var retval;
00086
00087 retval = this->myCallback;
00088 return( retval._retn() );
00089 }
00090
00091 CORBA::ULongLong BasicTaskQosketImpl::RUsage(void)
00092 throw (CORBA::SystemException)
00093 {
00094 CORBA::ULongLong retval = 0;
00095 struct rusage ru;
00096
00097 if( getrusage(RUSAGE_SELF, &ru) == 0 )
00098 {
00099 retval = ru.ru_utime.tv_usec;
00100 retval += ru.ru_utime.tv_sec * 1000000;
00101 }
00102 else
00103 {
00104 throw CORBA::UNKNOWN();
00105 }
00106 return( retval );
00107 }