|
|
- /*
- * @file Simulation.h
- *
- * Created on: 16.01.2017
- * @author Piotr Dergun
- */
-
- #ifndef SIMULATION_H_
- #define SIMULATION_H_
-
- #include "common.h"
- #include "Log.h"
-
- enum THREAD_TYPE
- {
- NODE_RECV,
- SIM_TIMER,
- SIM_RESIZE,
- NAT_FP,
- };
-
- struct threadParams
- {
- THREAD_TYPE type;
- void *context;
- pthread_t thread_id;
- };
-
- class Simulation : public Log
- {
- /** mapa z informacjami o wątkach */
- map<string, struct threadParams> threads;
- /** ilość kolumn terminala */
- int cols;
- /** ilość wierszy terminala */
- int rows;
- /** nazwa obiektu, wymagana przez klasę Log */
- string name;
- /** timestamp w momencie uruchomienia symulacji */
- unsigned long startTime;
- public:
- Simulation();
- ~Simulation();
-
- /**
- * tworzy wątek
- * @param name nazwa wątku
- * @param type typ wątku, do ustalania rzutowania i wywołania odpowiedniej metody
- * @param context wskaźnik do obiektu, z którego będzie wywoływana odpowiednia metoda
- */
- void createThread(string name, THREAD_TYPE type, void * context);
- /**
- * usuwa wątek
- * @param name nazwa wątku
- */
- void destroyThread(string name);
- /**
- * wrapper, w który trzeba opakować metody do zastosowania w wątku
- * @param context wskaźnik do obiektu, z którego będzie wywoływana odpowiednia metoda
- */
- static void * threadWrapper(void * context);
- /**
- * wykonuje się w wątku i dba o właściwe dane o rozmiarze okna
- */
- void resizeWnd();
- /**
- * wykonuje się w wątku i wyświetla aktualny czas symulacji
- */
- void timer();
- /**
- * uruchamia symulację typowego P2P - seed i peer łączy się z serwerem-trackerem
- * a serwer odsyła informację zwrotną do seeda z informacją o adresie IP i porcie
- * źródłowym peera
- */
- void p2pSimulation();
- /**
- * uruchamia symulację przeciążenia NAT - sytuacji, w której wszystkie 65535 portów
- * w tablicy NAT routera są zajęte i nie można dokonać SNAT+maskarady
- * @param nNodes liczba klientów łączących się z serwerem
- */
- void natOverflowSimulation(int nNodes);
- };
-
- #endif /* SIMULATION_H_ */
|