Function findConnection [src]

Finds and acquires a connection from the connection pool matching the criteria. If no connection is found, null is returned. Threadsafe.

Prototype

pub fn findConnection(pool: *ConnectionPool, criteria: Criteria) ?*Connection

Parameters

pool: *ConnectionPoolcriteria: Criteria

Source

pub fn findConnection(pool: *ConnectionPool, criteria: Criteria) ?*Connection { pool.mutex.lock(); defer pool.mutex.unlock(); var next = pool.free.last; while (next) |node| : (next = node.prev) { const connection: *Connection = @alignCast(@fieldParentPtr("pool_node", node)); if (connection.protocol != criteria.protocol) continue; if (connection.port != criteria.port) continue; // Domain names are case-insensitive (RFC 5890, Section 2.3.2.4) if (!std.ascii.eqlIgnoreCase(connection.host(), criteria.host)) continue; pool.acquireUnsafe(connection); return connection; } return null; }