Skip to content

Commit ecbc3eb

Browse files
authored
Make ConnectionPool faster (#546)
1 parent b775835 commit ecbc3eb

File tree

4 files changed

+15
-6
lines changed

4 files changed

+15
-6
lines changed

Sources/ConnectionPoolModule/ConnectionRequest.swift

+4-1
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,8 @@ public struct ConnectionRequest<Connection: PooledConnection>: ConnectionRequest
2121
}
2222
}
2323

24-
fileprivate let requestIDGenerator = _ConnectionPoolModule.ConnectionIDGenerator()
24+
@usableFromInline
25+
let requestIDGenerator = _ConnectionPoolModule.ConnectionIDGenerator()
2526

2627
@available(macOS 13.0, iOS 16.0, tvOS 16.0, watchOS 9.0, *)
2728
extension ConnectionPool where Request == ConnectionRequest<Connection> {
@@ -44,6 +45,7 @@ extension ConnectionPool where Request == ConnectionRequest<Connection> {
4445
)
4546
}
4647

48+
@inlinable
4749
public func leaseConnection() async throws -> Connection {
4850
let requestID = requestIDGenerator.next()
4951

@@ -67,6 +69,7 @@ extension ConnectionPool where Request == ConnectionRequest<Connection> {
6769
return connection
6870
}
6971

72+
@inlinable
7073
public func withConnection<Result>(_ closure: (Connection) async throws -> Result) async throws -> Result {
7174
let connection = try await self.leaseConnection()
7275
defer { self.releaseConnection(connection) }

Sources/ConnectionPoolModule/PoolStateMachine+ConnectionGroup.swift

+8-2
Original file line numberDiff line numberDiff line change
@@ -132,6 +132,12 @@ extension PoolStateMachine {
132132

133133
@usableFromInline
134134
var info: ConnectionAvailableInfo
135+
136+
@inlinable
137+
init(use: ConnectionUse, info: ConnectionAvailableInfo) {
138+
self.use = use
139+
self.info = info
140+
}
135141
}
136142

137143
mutating func refillConnections() -> [ConnectionRequest] {
@@ -623,7 +629,7 @@ extension PoolStateMachine {
623629

624630
// MARK: - Private functions -
625631

626-
@usableFromInline
632+
@inlinable
627633
/*private*/ func getConnectionUse(index: Int) -> ConnectionUse {
628634
switch index {
629635
case 0..<self.minimumConcurrentConnections:
@@ -637,7 +643,7 @@ extension PoolStateMachine {
637643
}
638644
}
639645

640-
@usableFromInline
646+
@inlinable
641647
/*private*/ func makeAvailableConnectionContextForConnection(at index: Int, info: ConnectionAvailableInfo) -> AvailableConnectionContext {
642648
precondition(self.connections[index].isAvailable)
643649
let use = self.getConnectionUse(index: index)

Sources/ConnectionPoolModule/PoolStateMachine+ConnectionState.swift

+2-2
Original file line numberDiff line numberDiff line change
@@ -164,7 +164,7 @@ extension PoolStateMachine {
164164
}
165165
}
166166

167-
@usableFromInline
167+
@inlinable
168168
var isLeased: Bool {
169169
switch self.state {
170170
case .leased:
@@ -174,7 +174,7 @@ extension PoolStateMachine {
174174
}
175175
}
176176

177-
@usableFromInline
177+
@inlinable
178178
var isConnected: Bool {
179179
switch self.state {
180180
case .idle, .leased:

Sources/ConnectionPoolTestUtils/MockRequest.swift

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import _ConnectionPoolModule
33
public final class MockRequest: ConnectionRequestProtocol, Hashable, Sendable {
44
public typealias Connection = MockConnection
55

6-
public struct ID: Hashable {
6+
public struct ID: Hashable, Sendable {
77
var objectID: ObjectIdentifier
88

99
init(_ request: MockRequest) {

0 commit comments

Comments
 (0)