Index: runtime/bin/eventhandler_linux.h |
diff --git a/runtime/bin/eventhandler_linux.h b/runtime/bin/eventhandler_linux.h |
index 010a33dbf444f9a65d997416b40a7d924b89af68..217bdb95529efb17561ff05e3eaba15caa06a19a 100644 |
--- a/runtime/bin/eventhandler_linux.h |
+++ b/runtime/bin/eventhandler_linux.h |
@@ -12,7 +12,7 @@ |
#include <unistd.h> |
#include <sys/socket.h> |
-#include "bin/thread_pool.h" |
+#include "bin/hashmap.h" |
class InterruptMessage { |
public: |
@@ -30,6 +30,10 @@ enum PortDataFlags { |
class SocketData { |
public: |
+ explicit SocketData(intptr_t fd) : fd_(fd), port_(0), mask_(0), flags_(0) { |
+ ASSERT(fd_ != -1); |
+ } |
+ |
intptr_t GetPollEvents(); |
void Unregister() { |
@@ -71,7 +75,6 @@ class SocketData { |
} |
intptr_t fd() { return fd_; } |
- void set_fd(intptr_t fd) { fd_ = fd; } |
Dart_Port port() { return port_; } |
intptr_t mask() { return mask_; } |
@@ -88,6 +91,8 @@ class EventHandlerImplementation { |
EventHandlerImplementation(); |
~EventHandlerImplementation(); |
+ // Gets the socket data structure for a given file |
+ // descriptor. Creates a new one of one is not found. |
SocketData* GetSocketData(intptr_t fd); |
void SendData(intptr_t id, Dart_Port dart_port, intptr_t data); |
void StartEventHandler(); |
@@ -103,9 +108,10 @@ class EventHandlerImplementation { |
void HandleInterruptFd(); |
void SetPort(intptr_t fd, Dart_Port dart_port, intptr_t mask); |
intptr_t GetPollEvents(struct pollfd* pollfd); |
+ static void* GetHashmapKeyFromFd(intptr_t fd); |
+ static uint32_t GetHashmapHashFromFd(intptr_t fd); |
- SocketData* socket_map_; |
- intptr_t socket_map_size_; |
+ HashMap socket_map_; |
int64_t timeout_; // Time for next timeout. |
Dart_Port timeout_port_; |
int interrupt_fds_[2]; |