GreenCloud Simulator
Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
CBRCloudUser Class Reference
Inheritance diagram for CBRCloudUser:
Inheritance graph
[legend]
Collaboration diagram for CBRCloudUser:
Collaboration graph
[legend]

Public Member Functions

 CBRCloudUser ()
 
virtual double next_interval (int &)
 
double interval ()
 
virtual void timeout ()
 
int command (int argc, const char *const *argv)
 
void addDataCenterPointer (DataCenter *joindc_)
 
- Public Member Functions inherited from CloudUser
 CloudUser ()
 
virtual ~CloudUser ()
 
CloudTaskcreateTask ()
 
void setRandomized (int i)
 
int process_command (int argc, const char *const *argv)
 

Protected Member Functions

virtual void start ()
 
void init ()
 
- Protected Member Functions inherited from CloudUser
void printTasksStatus ()
 
void postSimulationTestTasks ()
 
void calculateStatistics ()
 

Protected Attributes

double rate_
 
double interval_
 
double random_
 
int seqno_
 
int maxpkts_
 
- Protected Attributes inherited from CloudUser
DataCenterdc_
 
int taskcounter_
 
ExponentialRandomVariable random_tskmips_
 
std::vector< TaskInfo * > tasks_info_
 

Additional Inherited Members

- Public Attributes inherited from CloudUser
int id_
 
double tskmips_
 
double memory_
 
double storage_
 
unsigned int tsksize_
 
double tskmaxduration_
 
int toutputsize_
 
int tintercom_
 
int randomized_
 
double mean_response_time_
 
double sd_response_time_
 
int unfinished_tasks_
 

Detailed Description

Definition at line 18 of file cbrclouduser.cc.

Constructor & Destructor Documentation

CBRCloudUser::CBRCloudUser ( )

Definition at line 62 of file cbrclouduser.cc.

62  : seqno_(0)
63 {
64  bind_time("random_tskmips_",random_tskmips_.avgp());
65  bind_bw("rate_", &rate_);
66  bind("random_", &random_);
67  bind("packetSize_", &size_);
68  bind("maxpkts_", &maxpkts_);
69 
70  // Bind CloudUser variables
71  bind("id_", &id_);
72  bind("tskmips_", &tskmips_);
73  bind("tsksize_", &tsksize_);
74  bind("tskmaxduration_", &tskmaxduration_);
75  bind("mean_response_time_", &mean_response_time_);
76  bind("sd_response_time_", &sd_response_time_);
77  bind("unfinished_tasks_", &unfinished_tasks_);
78 }
ExponentialRandomVariable random_tskmips_
Definition: clouduser.h:47
double sd_response_time_
Definition: clouduser.h:41
int id_
Definition: clouduser.h:26
double mean_response_time_
Definition: clouduser.h:40
double tskmips_
Definition: clouduser.h:29
double random_
Definition: cbrclouduser.cc:33
double tskmaxduration_
Definition: clouduser.h:33
int unfinished_tasks_
Definition: clouduser.h:42
unsigned int tsksize_
Definition: clouduser.h:32

Member Function Documentation

void CBRCloudUser::addDataCenterPointer ( DataCenter joindc_)
int CBRCloudUser::command ( int  argc,
const char *const *  argv 
)

Definition at line 47 of file cbrclouduser.cc.

47  {
48 
49  if(argc==3){
50  if (strcmp(argv[1], "join-datacenter") == 0) {
51  DataCenter *dc = dynamic_cast<DataCenter*> (TclObject::lookup(argv[2]));
52  if(dc){
53  dc_ = dc;
54  return (TCL_OK);
55  }
56  return (TCL_ERROR);
57  }
58  }
59  return Application::command(argc,argv);
60 }
DataCenter * dc_
Definition: clouduser.h:45
void CBRCloudUser::init ( )
protected

Definition at line 80 of file cbrclouduser.cc.

81 {
82  // compute inter-packet interval
83  interval_ = (double)(size_ << 3)/(double)rate_;
84  if (agent_)
85  if (agent_->get_pkttype() != PT_TCP &&
86  agent_->get_pkttype() != PT_TFRC)
87  agent_->set_pkttype(PT_CBR);
88 }
double interval_
Definition: cbrclouduser.cc:32
double CBRCloudUser::interval ( )
inline

Definition at line 23 of file cbrclouduser.cc.

23 { return (interval_); }
double interval_
Definition: cbrclouduser.cc:32
double CBRCloudUser::next_interval ( int &  size)
virtual

Definition at line 97 of file cbrclouduser.cc.

98 {
99  // Recompute interval in case rate_ or size_ has changes
100  interval_ = (double)(size_ << 3)/(double)rate_;
101  double t = interval_;
102  if (random_)
103  t += interval_ * Random::uniform(-0.5, 0.5);
104  size = size_;
105  if (++seqno_ < maxpkts_)
106  return(t);
107  else
108  return(-1);
109 }
double interval_
Definition: cbrclouduser.cc:32
double random_
Definition: cbrclouduser.cc:33
void CBRCloudUser::start ( )
protectedvirtual

Definition at line 90 of file cbrclouduser.cc.

91 {
92  init();
93  running_ = 1;
94  timeout();
95 }
virtual void timeout()
void CBRCloudUser::timeout ( )
virtual

Definition at line 111 of file cbrclouduser.cc.

112 {
113  if (! running_)
114  return;
115 
116  /* send a packet */
117  dc_->receivedTsk(size_, createTask());
118  /* figure out when to send the next one */
119  nextPkttime_ = next_interval(size_);
120  /* schedule it */
121  if (nextPkttime_ > 0)
122  timer_.resched(nextPkttime_);
123  else
124  running_ = 0;
125 }
CloudTask * createTask()
Definition: clouduser.cc:19
virtual void receivedTsk(int tsksize, CloudTask *pTask, const char *flags=0)
Definition: datacenter.cc:161
virtual double next_interval(int &)
Definition: cbrclouduser.cc:97
DataCenter * dc_
Definition: clouduser.h:45

Member Data Documentation

double CBRCloudUser::interval_
protected

Definition at line 32 of file cbrclouduser.cc.

int CBRCloudUser::maxpkts_
protected

Definition at line 35 of file cbrclouduser.cc.

double CBRCloudUser::random_
protected

Definition at line 33 of file cbrclouduser.cc.

double CBRCloudUser::rate_
protected

Definition at line 31 of file cbrclouduser.cc.

int CBRCloudUser::seqno_
protected

Definition at line 34 of file cbrclouduser.cc.


The documentation for this class was generated from the following file: