import tango.io.selector.SelectSelector;
Socket socket;
ISelector selector = new SelectSelector();
selector.open(100, 10);
// Register to read from socket
selector.register(socket, Event.Read);
int eventCount = selector.select(0.1); // 0.1 seconds
if (eventCount > 0)
{
// We can now read from the socket
socket.read();
}
else if (eventCount == 0)
{
// Timeout
}
else if (eventCount == -1)
{
// Another thread called the wakeup() method.
}
else
{
// Error: should never happen.
}
selector.close();
| uint size | maximum amount of conduits that will be registered; it will grow dynamically if needed. |
| uint maxEvents | maximum amount of conduit events that will be returned in the selection set per call to select(); this value is currently not used by this selector. |
| ISelectable conduit | conduit that will be associated to the selector; must be a valid conduit (i.e. not null and open). |
| Event events | bit mask of Event values that represent the events that will be tracked for the conduit. |
| Object attachment | optional object with application-specific data that will be available when an event is triggered for the conduit |
selector.register(conduit, Event.Read | Event.Write, object);
| ISelectable conduit | conduit that had been previously associated to the selector; it can be null. |
| TimeSpan timeout | TimeSpan with the maximum amount of time that the selector will wait for events from the conduits; the amount of time is relative to the current system time (i.e. just the number of milliseconds that the selector has to wait for the events). |