MCPcopy Create free account
hub / github.com/HaxeFoundation/hxcpp / _hx_std_socket_poll_prepare

Function _hx_std_socket_poll_prepare

src/hx/libs/std/Socket.cpp:1171–1215  ·  view source on GitHub ↗

socket_poll_prepare : 'poll -> read:'socket array -> write:'socket array -> int array array Prepare a poll for scanning events on sets of sockets. **/

Source from the content-addressed store, hash-verified

1169 </doc>
1170**/
1171Array<Dynamic> _hx_std_socket_poll_prepare( Dynamic pdata, Array<Dynamic> rsocks, Array<Dynamic> wsocks )
1172{
1173 polldata *p = val_poll(pdata);
1174
1175 int len = rsocks.mPtr ? rsocks->length : 0;
1176 int wlen = wsocks.mPtr ? wsocks->length : 0;
1177 if( len + wlen > p->max )
1178 hx::Throw(HX_CSTRING("Too many sockets in poll"));
1179
1180 #ifdef NEKO_WINDOWS
1181 for(int i=0;i<len;i++)
1182 p->fdr->fd_array[i] = val_sock( rsocks[i] );
1183 p->fdr->fd_count = len;
1184
1185 len = wlen;
1186 for(int i=0;i<len;i++)
1187 p->fdw->fd_array[i] = val_sock( wsocks[i]);
1188 p->fdw->fd_count = len;
1189
1190 #else
1191
1192 for(int i=0;i<len;i++)
1193 {
1194 p->fds[i].fd = val_sock( rsocks[i] );
1195 p->fds[i].events = POLLIN;
1196 p->fds[i].revents = 0;
1197 }
1198 p->rcount = len;
1199 len = wlen;
1200 for(int i=0;i<len;i++)
1201 {
1202 int k = i + p->rcount;
1203 p->fds[k].fd = val_sock(wsocks[i]);
1204 p->fds[k].events = POLLOUT;
1205 p->fds[k].revents = 0;
1206 }
1207 p->wcount = len;
1208
1209 #endif
1210
1211 Array<Dynamic> a = Array_obj<Dynamic>::__new(2,2);
1212 a[0] = p->ridx;
1213 a[1] = p->widx;
1214 return a;
1215}
1216
1217
1218/**

Callers 1

_hx_std_socket_pollFunction · 0.85

Calls 4

val_pollFunction · 0.85
ThrowFunction · 0.85
val_sockFunction · 0.85
__newFunction · 0.85

Tested by

no test coverage detected