Sim-LIT  2.0
 All Classes Namespaces Files Functions Variables Typedefs
ChannelFile.h
Go to the documentation of this file.
1 
10 #ifndef CLASS_CHANNELFILE
11 #define CLASS_CHANNELFILE
12 
13 #include <iostream>
14 #include <string>
15 #include <fstream>
16 #include <sstream>
17 #include <vector>
18 #include "Package.h"
19 #include "Channel.h"
20 
21 class ChannelFile: public Channel{
22 
23 public:
24 
25  ChannelFile(vector<string> extras){
26  /*
27  * @brief Constructor de la clase Erlang
28  * @param ext argumentos que serán asignados al simulador
29  */
30  this->setExtras(extras);
31  }
32 
33  vector<Package> simulate(vector<Package> list){
34  /*
35  * @brief Método que genera la pérdida de paquetes sobre list
36  * @param list Vector con los paquetes que se someterán a la simulación
37  * @return list;
38  */
39  ifstream fp;
40  if(this->getExtras().size()==0){
41  cout << "File hasn't especific\n";
42  return list;
43  }
44  string file = this->getExtras()[0];
45  file = "files/"+file;
46  fp.open(file.c_str());
47  //cout << "Simulating Loss...\n";
48  vector<string> array;
49  string line, delimiter=" ";
50  if(fp.is_open()){
51  while(getline(fp, line)){
52  array.push_back(line);
53  }
54  for (int i = 0; i < array.size(); i++)
55  {
56  string s = array.at(i);
57  size_t pos=0;
58  string token;
59  pos = s.find(delimiter);
60  token = s.substr(0, pos);
61  int element = atoi(token.c_str());
62  s.erase(0, pos + delimiter.length());
63  pos = s.find(delimiter);
64  token = s.substr(0, pos);
65  int opc = atoi(token.c_str());
66  if(opc==0)
67  list = deletePackageById(element,list);
68  }
69  fp.close();
70  }
71  return list;
72  }
73 
74 
75 
76 private:
77 
78  vector<Package> deletePackageById(int ID, vector<Package> list){
79  /*
80  * @brief Método que elimina un Paquete de la lista por su ID
81  * @param ID identificador del paquete que se eliminará
82  * @param list Lista de Paquetes del cual se eliminará uno por el ID
83  * @return list
84  */
85  for (int i = 0; i < list.size(); i++)
86  {
87  if(list[i].getID()==ID){
88  list.erase(list.begin()+i);
89  i--;
90  }
91  }
92  return list;
93  }
94 
95 
96 };
97 
98 #endif
Clase que representa el Simulador utilizando Un Fichero.
Definition: ChannelFile.h:21
Clase Abstracta que representa el Simulador de pérdida de paquetes.
Definition: Channel.h:16