1 #ifndef __PORT_FORWARD_SOURCE_LISTENER_H__ 2 #define __PORT_FORWARD_SOURCE_LISTENER_H__ 3 4 #include "Headers.hpp" 5 6 #include "ETerminal.pb.h" 7 #include "SocketHandler.hpp" 8 9 namespace et { 10 class PortForwardSourceHandler { 11 public: 12 PortForwardSourceHandler(shared_ptr<SocketHandler> _socketHandler, 13 int _sourcePort, int _destinationPort); 14 15 int listen(); 16 17 void update(vector<PortForwardData>* data); 18 19 bool hasUnassignedFd(int fd); 20 21 void closeUnassignedFd(int fd); 22 23 void addSocket(int socketId, int sourceFd); 24 25 void closeSocket(int socketId); 26 27 void sendDataOnSocket(int socketId, const string& data); 28 getDestinationPort()29 inline int getDestinationPort() { return destinationPort; } 30 31 protected: 32 shared_ptr<SocketHandler> socketHandler; 33 int sourcePort; 34 int destinationPort; 35 unordered_set<int> unassignedFds; 36 unordered_map<int, int> socketFdMap; 37 }; 38 } // namespace et 39 40 #endif // __PORT_FORWARD_SOURCE_LISTENER_H__ 41