Skip to content

Commit

Permalink
cpp.net.Poll: Include Documentation (HaxeFoundation#11940)
Browse files Browse the repository at this point in the history
Docs are always good. Feel free to make any changes or edits.
  • Loading branch information
dimensionscape authored Jan 24, 2025
1 parent 5fef762 commit b7fce0e
Showing 1 changed file with 35 additions and 1 deletion.
36 changes: 35 additions & 1 deletion std/cpp/net/Poll.hx
Original file line number Diff line number Diff line change
Expand Up @@ -25,30 +25,64 @@ package cpp.net;
import sys.net.Socket;
import cpp.NativeSocket;

/**
* A wrapper around native socket polling functionality for monitoring multiple sockets for I/O readiness.
* This class provides a high-level abstraction over native `poll` operations, allowing you to monitor sockets for read and write events.
*/
class Poll {
var mPollHandle:Dynamic;


/**
* An array of indices corresponding to sockets ready for reading after polling.
*/
public var readIndexes:Array<Int>;

/**
* An array of indices corresponding to sockets ready for writing after polling.
*/
public var writeIndexes:Array<Int>;

/**
* Creates a new `Poll` instance.
*
* @param n The maximum number of sockets to monitor.
*/
public function new(n:Int) {
mPollHandle = NativeSocket.socket_poll_alloc(n);
readIndexes = [];
writeIndexes = [];
}

/**
* Prepares the poll structure for monitoring read and write events on the given sockets.
*
* @param read An array of sockets to monitor for readability.
* @param write An array of sockets to monitor for writability.
*/
public function prepare(read:Array<Socket>, write:Array<Socket>) {
var k = NativeSocket.socket_poll_prepare(mPollHandle, read, write);
readIndexes = k[0];
writeIndexes = k[1];
}

/**
* Waits for events on the prepared sockets.
*
* @param t The timeout in seconds. Use `-1.0` for an infinite wait. Defaults to `-1.0` if not specified.
*/
public function events(?t:Float) {
if (t == null)
t = -1.0;
NativeSocket.socket_poll_events(mPollHandle, t);
}

/**
* Polls the given sockets for any events (e.g., readability or writability).
*
* @param a An array of sockets to monitor for events.
* @param t The timeout in seconds. Use `-1.0` for an infinite wait. Defaults to `-1.0` if not specified.
* @return An array of sockets that are ready for I/O operations.
*/
public function poll(a:Array<Socket>, ?t:Float):Array<Socket> {
if (t == null)
t = -1.0;
Expand Down

0 comments on commit b7fce0e

Please sign in to comment.