Skip to content

Commit e127327

Browse files
committed
use a private function to simplify cascading channel failures
1 parent e92b2f0 commit e127327

File tree

1 file changed

+15
-25
lines changed

1 file changed

+15
-25
lines changed

Sources/PostgresNIO/Connection/PostgresConnection.swift

+15-25
Original file line numberDiff line numberDiff line change
@@ -222,9 +222,7 @@ public final class PostgresConnection: @unchecked Sendable {
222222
promise: promise
223223
)
224224

225-
let writePromise = self.channel.eventLoop.makePromise(of: Void.self)
226-
self.channel.write(HandlerTask.extendedQuery(context), promise: writePromise)
227-
writePromise.futureResult.cascadeFailure(to: promise)
225+
self.write(HandlerTask.extendedQuery(context), cascadingFailureTo: promise)
228226

229227
return promise.futureResult
230228
}
@@ -241,9 +239,7 @@ public final class PostgresConnection: @unchecked Sendable {
241239
promise: promise
242240
)
243241

244-
let writePromise = self.channel.eventLoop.makePromise(of: Void.self)
245-
self.channel.write(HandlerTask.extendedQuery(context), promise: writePromise)
246-
writePromise.futureResult.cascadeFailure(to: promise)
242+
self.write(HandlerTask.extendedQuery(context), cascadingFailureTo: promise)
247243

248244
return promise.futureResult.map { rowDescription in
249245
PSQLPreparedStatement(name: name, query: query, connection: self, rowDescription: rowDescription)
@@ -260,9 +256,7 @@ public final class PostgresConnection: @unchecked Sendable {
260256
logger: logger,
261257
promise: promise)
262258

263-
let writePromise = self.channel.eventLoop.makePromise(of: Void.self)
264-
self.channel.write(HandlerTask.extendedQuery(context), promise: writePromise)
265-
writePromise.futureResult.cascadeFailure(to: promise)
259+
self.write(HandlerTask.extendedQuery(context), cascadingFailureTo: promise)
266260

267261
return promise.futureResult
268262
}
@@ -271,9 +265,7 @@ public final class PostgresConnection: @unchecked Sendable {
271265
let promise = self.channel.eventLoop.makePromise(of: Void.self)
272266
let context = CloseCommandContext(target: target, logger: logger, promise: promise)
273267

274-
let writePromise = self.channel.eventLoop.makePromise(of: Void.self)
275-
self.channel.write(HandlerTask.closeCommand(context), promise: writePromise)
276-
writePromise.futureResult.cascadeFailure(to: promise)
268+
self.write(HandlerTask.closeCommand(context), cascadingFailureTo: promise)
277269

278270
return promise.futureResult
279271
}
@@ -437,9 +429,7 @@ extension PostgresConnection {
437429
promise: promise
438430
)
439431

440-
let writePromise = self.channel.eventLoop.makePromise(of: Void.self)
441-
self.channel.write(HandlerTask.extendedQuery(context), promise: writePromise)
442-
writePromise.futureResult.cascadeFailure(to: promise)
432+
self.write(HandlerTask.extendedQuery(context), cascadingFailureTo: promise)
443433

444434
do {
445435
return try await promise.futureResult.map({ $0.asyncSequence() }).get()
@@ -498,9 +488,7 @@ extension PostgresConnection {
498488
promise: promise
499489
))
500490

501-
let writePromise = self.channel.eventLoop.makePromise(of: Void.self)
502-
self.channel.write(task, promise: writePromise)
503-
writePromise.futureResult.cascadeFailure(to: promise)
491+
self.write(task, cascadingFailureTo: promise)
504492

505493
do {
506494
return try await promise.futureResult
@@ -537,9 +525,7 @@ extension PostgresConnection {
537525
promise: promise
538526
))
539527

540-
let writePromise = self.channel.eventLoop.makePromise(of: Void.self)
541-
self.channel.write(task, promise: writePromise)
542-
writePromise.futureResult.cascadeFailure(to: promise)
528+
self.write(task, cascadingFailureTo: promise)
543529

544530
do {
545531
return try await promise.futureResult
@@ -555,6 +541,12 @@ extension PostgresConnection {
555541
throw error // rethrow with more metadata
556542
}
557543
}
544+
545+
private func write<T, Value>(_ any: T, cascadingFailureTo promise: EventLoopPromise<Value>) {
546+
let writePromise = self.channel.eventLoop.makePromise(of: Void.self)
547+
self.channel.write(any, promise: writePromise)
548+
writePromise.futureResult.cascadeFailure(to: promise)
549+
}
558550
}
559551

560552
// MARK: EventLoopFuture interface
@@ -738,10 +730,7 @@ extension PostgresConnection {
738730
closure: notificationHandler
739731
)
740732

741-
let task = HandlerTask.startListening(listener)
742-
let writePromise = self.channel.eventLoop.makePromise(of: Void.self)
743-
self.channel.write(task, promise: writePromise)
744-
writePromise.futureResult.cascadeFailure(to: listenContext.promise)
733+
self.write(HandlerTask.startListening(listener), cascadingFailureTo: listenContext.promise)
745734

746735
listenContext.future.whenComplete { _ in
747736
let task = HandlerTask.cancelListening(channel, id)
@@ -788,3 +777,4 @@ extension PostgresConnection {
788777
#endif
789778
}
790779
}
780+

0 commit comments

Comments
 (0)