Main Page | Namespace List | Class Hierarchy | Class List | File List | Namespace Members | Class Members | File Members | Related Pages

QuoAdvocate.cc

Go to the documentation of this file.
00001 /*
00002  * QuoAdvocate.cc
00003  *
00004  * Copyright (c) 2003, 2004 The University of Utah and the Flux Group.
00005  * All rights reserved.
00006  *
00007  * This file is licensed under the terms of the GNU Public License.  
00008  * See the file "license.terms" for restrictions on redistribution 
00009  * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
00010  */
00011 
00012 /**
00013  * @file QuoAdvocate.cc
00014  *
00015  * Implementation of the QuoAdvocate class.
00016  */
00017 
00018 #include "config.h"
00019 
00020 #include <string.h>
00021 #include <sys/time.h>
00022 
00023 #include <iostream>
00024 #include <fstream>
00025 #include <iomanip>
00026 
00027 #include "QuoAdvocate.hh"
00028 
00029 QuoAdvocate::QuoAdvocate(void)
00030 {
00031 }
00032 
00033 QuoAdvocate::~QuoAdvocate()
00034 {
00035 }
00036 
00037 void QuoAdvocate::SetDelegateAttribute(const char *name,
00038                                        const CORBA::Any &value)
00039     throw (CORBA::SystemException)
00040 {
00041     if( name == NULL )
00042     {
00043         throw CORBA::BAD_PARAM();
00044     }
00045     else if( (strcasecmp(name, "status-sc") == 0) ||
00046              (strcasecmp(name, "status_sc") == 0) ||
00047              (strcasecmp(name, "status sc") == 0) )
00048     {
00049         quo::ValueSC_ptr scp;
00050 
00051         if( value >>= scp )
00052         {
00053             this->eta_Status = quo::ValueSC::_duplicate(scp);
00054         }
00055         else
00056         {
00057             throw CORBA::BAD_PARAM();
00058         }
00059     }
00060     else if( (strcasecmp(name, "advice-sc") == 0) ||
00061              (strcasecmp(name, "advice_sc") == 0) ||
00062              (strcasecmp(name, "advice sc") == 0) )
00063     {
00064         quo::ValueSC_ptr scp;
00065 
00066         if( value >>= scp )
00067         {
00068             this->eta_Advice = quo::ValueSC::_duplicate(scp);
00069         }
00070         else
00071         {
00072             throw CORBA::BAD_PARAM();
00073         }
00074     }
00075     else
00076     {
00077         this->RealTimeTaskDelegateImpl::SetDelegateAttribute(name, value);
00078     }
00079 }
00080 
00081 CORBA::Any_ptr QuoAdvocate::GetDelegateAttribute(const char *name)
00082     throw (CORBA::SystemException)
00083 {
00084     CORBA::Any_var retval;
00085     
00086     if( name == NULL )
00087     {
00088         throw CORBA::BAD_PARAM();
00089     }
00090     else if( (strcasecmp(name, "status-sc") == 0) ||
00091              (strcasecmp(name, "status_sc") == 0) ||
00092              (strcasecmp(name, "status sc") == 0) )
00093     {
00094         retval = new CORBA::Any();
00095         (*retval) <<= this->eta_Status.in();
00096     }
00097     else if( (strcasecmp(name, "advice-sc") == 0) ||
00098              (strcasecmp(name, "advice_sc") == 0) ||
00099              (strcasecmp(name, "advice sc") == 0) )
00100     {
00101         retval = new CORBA::Any();
00102         (*retval) <<= this->eta_Advice.in();
00103     }
00104     else
00105     {
00106         retval = this->RealTimeTaskDelegateImpl::GetDelegateAttribute(name);
00107     }
00108     return( retval._retn() );
00109 }
00110 
00111 Broker::CPUReserve QuoAdvocate::PassCPU(Broker::RealTimeTask_ptr rtt,
00112                                         const Broker::CPUReserve &status,
00113                                         const Broker::CPUReserve &advice,
00114                                         const Broker::KeyedReportParameters &krp)
00115     throw (CORBA::SystemException)
00116 {
00117     if( CORBA::is_nil(this->dm_RemoteObject.in()) )
00118     {
00119         throw CORBA::BAD_INV_ORDER();
00120     }
00121     
00122     if( !CORBA::is_nil(this->eta_Status.in()) )
00123     {
00124         this->eta_Status->longValue(status.Compute);
00125     }
00126     if( !CORBA::is_nil(this->eta_Advice.in()) )
00127     {
00128         this->eta_Advice->longValue(advice.Compute);
00129     }
00130     return this->RealTimeTaskDelegateImpl::PassCPU(rtt, status, advice, krp);
00131 }

Generated on Tue Jun 22 14:50:09 2004 for CPU Broker by doxygen 1.3.6