Skip to content

Commit

Permalink
[HTTPConnectionPool] StateMachine has explicit function for HTTP1 con…
Browse files Browse the repository at this point in the history
…nection close (#448)
  • Loading branch information
fabianfett authored Oct 1, 2021
1 parent 2bd8885 commit a6ca288
Show file tree
Hide file tree
Showing 4 changed files with 10 additions and 10 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -456,7 +456,7 @@ extension HTTPConnectionPool: HTTP1ConnectionDelegate {
"ahc-http-version": "http/1.1",
])
self.modifyStateAndRunActions {
$0.connectionClosed(connection.id)
$0.http1ConnectionClosed(connection.id)
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -214,7 +214,7 @@ extension HTTPConnectionPool {
}

/// A connection has been unexpectedly closed
mutating func connectionClosed(_ connectionID: Connection.ID) -> Action {
mutating func http1ConnectionClosed(_ connectionID: Connection.ID) -> Action {
guard let (index, context) = self.connections.failConnection(connectionID) else {
// When a connection close is initiated by the connection pool, the connection will
// still report its close to the state machine. In those cases we must ignore the
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -157,10 +157,10 @@ extension HTTPConnectionPool {
}

/// A connection has been closed
mutating func connectionClosed(_ connectionID: Connection.ID) -> Action {
mutating func http1ConnectionClosed(_ connectionID: Connection.ID) -> Action {
switch self.state {
case .http1(var http1StateMachine):
let action = http1StateMachine.connectionClosed(connectionID)
let action = http1StateMachine.http1ConnectionClosed(connectionID)
self.state = .http1(http1StateMachine)
return action
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -250,7 +250,7 @@ class HTTPConnectionPool_HTTP1StateMachineTests: XCTestCase {
XCTAssertEqual(failAction.request, .failRequest(finalRequest, HTTPClientError.alreadyShutdown, cancelTimeout: false))

// 5. close open connection
let closeAction = state.connectionClosed(connectionID)
let closeAction = state.http1ConnectionClosed(connectionID)
XCTAssertEqual(closeAction.connection, .cleanupConnections(.init(), isShutdown: .yes(unclean: true)))
XCTAssertEqual(closeAction.request, .none)
}
Expand Down Expand Up @@ -371,7 +371,7 @@ class HTTPConnectionPool_HTTP1StateMachineTests: XCTestCase {
let doneAction = state.http1ConnectionReleased(connectionID)
XCTAssertEqual(doneAction.request, .none)
XCTAssertEqual(doneAction.connection, .closeConnection(connection, isShutdown: .no))
XCTAssertEqual(state.connectionClosed(connectionID), .none)
XCTAssertEqual(state.http1ConnectionClosed(connectionID), .none)

case .cancelTimeoutTimer(let connectionID):
guard let expectedConnection = connections.newestParkedConnection(for: reqEventLoop) ?? connections.newestParkedConnection else {
Expand Down Expand Up @@ -428,7 +428,7 @@ class HTTPConnectionPool_HTTP1StateMachineTests: XCTestCase {
XCTAssertEqual(connections.parked, 7)
XCTAssertEqual(connections.used, 1)
XCTAssertNoThrow(try connections.abortConnection(connectionToAbort.id))
XCTAssertEqual(state.connectionClosed(connectionToAbort.id), .none)
XCTAssertEqual(state.http1ConnectionClosed(connectionToAbort.id), .none)
XCTAssertEqual(connections.parked, 7)
XCTAssertEqual(connections.used, 0)
}
Expand All @@ -448,7 +448,7 @@ class HTTPConnectionPool_HTTP1StateMachineTests: XCTestCase {
return XCTFail("Expected to have a parked connection")
}
XCTAssertNoThrow(try connections.closeConnection(connectionToClose))
XCTAssertEqual(state.connectionClosed(connectionToClose.id), .none)
XCTAssertEqual(state.http1ConnectionClosed(connectionToClose.id), .none)
XCTAssertEqual(connections.parked, 7)
}

Expand Down Expand Up @@ -499,7 +499,7 @@ class HTTPConnectionPool_HTTP1StateMachineTests: XCTestCase {
while let closedConnection = connections.randomLeasedConnection() {
XCTAssertNoThrow(try connections.abortConnection(closedConnection.id))
XCTAssertEqual(connections.parked, 0)
let action = state.connectionClosed(closedConnection.id)
let action = state.http1ConnectionClosed(closedConnection.id)

switch action.connection {
case .createConnection(let newConnectionID, on: let eventLoop):
Expand Down Expand Up @@ -584,7 +584,7 @@ class HTTPConnectionPool_HTTP1StateMachineTests: XCTestCase {

// triggered by remote peer
XCTAssertNoThrow(try connections.abortConnection(connection.id))
XCTAssertEqual(state.connectionClosed(connection.id), .none)
XCTAssertEqual(state.http1ConnectionClosed(connection.id), .none)

// triggered by timer
XCTAssertEqual(state.connectionIdleTimeout(connection.id), .none)
Expand Down

0 comments on commit a6ca288

Please sign in to comment.