Commit 77070cb16ed26705bd24d3d2588efb3db757a072
1 parent
67dee273
check firt if we have events at all
Showing
1 changed file
with
25 additions
and
23 deletions
@@ -82,37 +82,39 @@ TR_commManagerPollSelect(void * _this, TR_Event event, int timeout) | @@ -82,37 +82,39 @@ TR_commManagerPollSelect(void * _this, TR_Event event, int timeout) | ||
82 | 82 | ||
83 | nevents = poll(this->fds, cmgr->n_endpoints, timeout); | 83 | nevents = poll(this->fds, cmgr->n_endpoints, timeout); |
84 | 84 | ||
85 | - for (i = 0; i < cmgr->n_endpoints; i++) { | ||
86 | - TR_CommEndPoint endpoint = cmgr->endpoints[i]; | 85 | + if (nevents) { |
86 | + for (i = 0; i < cmgr->n_endpoints; i++) { | ||
87 | + TR_CommEndPoint endpoint = cmgr->endpoints[i]; | ||
88 | + | ||
89 | + if ((this->fds[i].revents & POLLIN) == POLLIN) { | ||
90 | + nevents--; | ||
91 | + if (TR_INSTANCE_OF(TR_TcpSocket, endpoint->transport) | ||
92 | + && ((TR_TcpSocket)endpoint->transport)->listen) { | ||
93 | + TR_eventHandlerIssueEvent( | ||
94 | + (TR_EventHandler)this, | ||
95 | + (TR_EventSubject)endpoint, | ||
96 | + TR_CET_EVENT_ACC_READY, | ||
97 | + NULL); | ||
98 | + } else { | ||
99 | + TR_eventHandlerIssueEvent( | ||
100 | + (TR_EventHandler)this, | ||
101 | + (TR_EventSubject)endpoint, | ||
102 | + TR_CEP_EVENT_READ_READY, | ||
103 | + NULL); | ||
104 | + } | ||
105 | + } | ||
87 | 106 | ||
88 | - if ((this->fds[i].revents & POLLIN) == POLLIN) { | ||
89 | - nevents--; | ||
90 | - if (TR_INSTANCE_OF(TR_TcpSocket, endpoint->transport) | ||
91 | - && ((TR_TcpSocket)endpoint->transport)->listen) { | ||
92 | - TR_eventHandlerIssueEvent( | ||
93 | - (TR_EventHandler)this, | ||
94 | - (TR_EventSubject)endpoint, | ||
95 | - TR_CET_EVENT_ACC_READY, | ||
96 | - NULL); | ||
97 | - } else { | 107 | + if ((this->fds[i].revents & POLLOUT) == POLLOUT) { |
108 | + nevents--; | ||
98 | TR_eventHandlerIssueEvent( | 109 | TR_eventHandlerIssueEvent( |
99 | (TR_EventHandler)this, | 110 | (TR_EventHandler)this, |
100 | (TR_EventSubject)endpoint, | 111 | (TR_EventSubject)endpoint, |
101 | - TR_CEP_EVENT_READ_READY, | 112 | + TR_CEP_EVENT_WRITE_READY, |
102 | NULL); | 113 | NULL); |
103 | } | 114 | } |
104 | - } | ||
105 | 115 | ||
106 | - if ((this->fds[i].revents & POLLOUT) == POLLOUT) { | ||
107 | - nevents--; | ||
108 | - TR_eventHandlerIssueEvent( | ||
109 | - (TR_EventHandler)this, | ||
110 | - (TR_EventSubject)endpoint, | ||
111 | - TR_CEP_EVENT_WRITE_READY, | ||
112 | - NULL); | 116 | + if (nevents <= 0) break; |
113 | } | 117 | } |
114 | - | ||
115 | - if (nevents <= 0) break; | ||
116 | } | 118 | } |
117 | } | 119 | } |
118 | 120 |
Please
register
or
login
to post a comment