GreenCloud Simulator
vmmigrationsink.cc
Go to the documentation of this file.
1 /*
2  * vmmigrationsink.cc
3  *
4  * @date Nov 13, 2013
5  * @author Guzek:Mateusz
6  */
7 
8 #include "vmmigrationsink.h"
9 #include "vmmigration.h"
10 
11 static class VmMigrationSinkClass : public TclClass {
12 public:
13  VmMigrationSinkClass() : TclClass("Agent/TCPSink/VmMigrationSink") {}
14  TclObject* create(int, const char*const*) {
15  return (new VmMigrationSink(new Acker()));
16  }
18 
19 VmMigrationSink::VmMigrationSink(Acker* a) : TcpSink(a), seq_expected_(-1),migration_finished_(false){
20 
21 }
22 
24 
25 }
26 
28  vm_migration_ = vm_migration;
29 }
30 
31 void VmMigrationSink::recv(Packet* pkt, Handler*)
32 {
33  bytes_since_ += hdr_cmn::access(pkt)->size();
34 
35  if(seq_expected_ == hdr_tcp::access(pkt)->seqno()){
36  // Migration complete.
37  migration_finished_ = true;
39  }
40  else if(migration_finished_){
41  std::cerr << "ERROR! Something went wrong. Packets received after migration is finished!\n";
42  }
43  TcpSink::recv(pkt,this);
44 }
virtual ~VmMigrationSink()
void finalizeMigration()
Definition: vmmigration.cc:96
VmMigration * vm_migration_
TclObject * create(int, const char *const *)
void setVmMigration(VmMigration *vm_migration)
VmMigrationSink(Acker *)
VmMigrationSinkClass class_vm_migrationsink
virtual void recv(Packet *, Handler *)
int bytes_since_
Definition: bytecounter.h:26