Skip to content

Commit 3931a06

Browse files
authored
ByteBuffer extension, prevent naming conflicts (#204)
### Motivation Because of https://bugs.swift.org/browse/SR-15517, we might run into naming conflicts with SwiftNIO, once apple/swift-nio#1990 lands. ### Changes - Prefix all ByteBuffer utility methods ### Result Chances of breaking code reduced.
1 parent 87cfca5 commit 3931a06

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

52 files changed

+133
-133
lines changed

Sources/PostgresNIO/Data/PostgresData+Double.swift

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import NIOCore
33
extension PostgresData {
44
public init(double: Double) {
55
var buffer = ByteBufferAllocator().buffer(capacity: 0)
6-
buffer.writeDouble(double)
6+
buffer.psqlWriteDouble(double)
77
self.init(type: .float8, formatCode: .binary, value: buffer)
88
}
99

@@ -16,10 +16,10 @@ extension PostgresData {
1616
case .binary:
1717
switch self.type {
1818
case .float4:
19-
return value.readFloat()
19+
return value.psqlReadFloat()
2020
.flatMap { Double($0) }
2121
case .float8:
22-
return value.readDouble()
22+
return value.psqlReadDouble()
2323
case .numeric:
2424
return self.numeric?.double
2525
default:

Sources/PostgresNIO/Data/PostgresData+Float.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,9 @@ extension PostgresData {
1212
case .binary:
1313
switch self.type {
1414
case .float4:
15-
return value.readFloat()
15+
return value.psqlReadFloat()
1616
case .float8:
17-
return value.readDouble()
17+
return value.psqlReadDouble()
1818
.flatMap { Float($0) }
1919
default:
2020
return nil

Sources/PostgresNIO/Message/PostgresMessage+Authentication.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ extension PostgresMessage {
2323
case 10:
2424
var mechanisms: [String] = []
2525
while buffer.readableBytes > 0 {
26-
guard let nextString = buffer.readNullTerminatedString() else {
26+
guard let nextString = buffer.psqlReadNullTerminatedString() else {
2727
throw PostgresError.protocol("Could not parse SASL mechanisms from authentication message")
2828
}
2929
if nextString.isEmpty {
@@ -68,7 +68,7 @@ extension PostgresMessage {
6868
case .saslMechanisms(let mechanisms):
6969
buffer.writeInteger(10, as: Int32.self)
7070
mechanisms.forEach {
71-
buffer.writeNullTerminatedString($0)
71+
buffer.psqlWriteNullTerminatedString($0)
7272
}
7373
case .saslContinue(let challenge):
7474
buffer.writeInteger(11, as: Int32.self)

Sources/PostgresNIO/Message/PostgresMessage+Bind.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,8 +39,8 @@ extension PostgresMessage {
3939

4040
/// Serializes this message into a byte buffer.
4141
public func serialize(into buffer: inout ByteBuffer) {
42-
buffer.writeNullTerminatedString(self.portalName)
43-
buffer.writeNullTerminatedString(self.statementName)
42+
buffer.psqlWriteNullTerminatedString(self.portalName)
43+
buffer.psqlWriteNullTerminatedString(self.statementName)
4444

4545
buffer.write(array: self.parameterFormatCodes)
4646
buffer.write(array: self.parameters) {

Sources/PostgresNIO/Message/PostgresMessage+Close.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ extension PostgresMessage {
3333
/// Serializes this message into a byte buffer.
3434
public func serialize(into buffer: inout ByteBuffer) throws {
3535
buffer.writeInteger(target.rawValue)
36-
buffer.writeNullTerminatedString(name)
36+
buffer.psqlWriteNullTerminatedString(name)
3737
}
3838
}
3939
}

Sources/PostgresNIO/Message/PostgresMessage+CommandComplete.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ extension PostgresMessage {
55
public struct CommandComplete: PostgresMessageType {
66
/// Parses an instance of this message type from a byte buffer.
77
public static func parse(from buffer: inout ByteBuffer) throws -> CommandComplete {
8-
guard let string = buffer.readNullTerminatedString() else {
8+
guard let string = buffer.psqlReadNullTerminatedString() else {
99
throw PostgresError.protocol("Could not parse close response message")
1010
}
1111
return .init(tag: string)

Sources/PostgresNIO/Message/PostgresMessage+Describe.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ extension PostgresMessage {
3131
/// Serializes this message into a byte buffer.
3232
public func serialize(into buffer: inout ByteBuffer) {
3333
buffer.writeInteger(command.rawValue)
34-
buffer.writeNullTerminatedString(name)
34+
buffer.psqlWriteNullTerminatedString(name)
3535
}
3636
}
3737
}

Sources/PostgresNIO/Message/PostgresMessage+Error.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ extension PostgresMessage {
1111
public static func parse(from buffer: inout ByteBuffer) throws -> Error {
1212
var fields: [Field: String] = [:]
1313
while let field = buffer.readInteger(as: Field.self) {
14-
guard let string = buffer.readNullTerminatedString() else {
14+
guard let string = buffer.psqlReadNullTerminatedString() else {
1515
throw PostgresError.protocol("Could not read error response string.")
1616
}
1717
fields[field] = string

Sources/PostgresNIO/Message/PostgresMessage+Execute.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ extension PostgresMessage {
2020

2121
/// Serializes this message into a byte buffer.
2222
public func serialize(into buffer: inout ByteBuffer) {
23-
buffer.writeNullTerminatedString(portalName)
23+
buffer.psqlWriteNullTerminatedString(portalName)
2424
buffer.writeInteger(self.maxRows)
2525
}
2626
}

Sources/PostgresNIO/Message/PostgresMessage+NotificationResponse.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,10 @@ extension PostgresMessage {
1010
guard let backendPID: Int32 = buffer.readInteger() else {
1111
throw PostgresError.protocol("Invalid NotificationResponse message: unable to read backend PID")
1212
}
13-
guard let channel = buffer.readNullTerminatedString() else {
13+
guard let channel = buffer.psqlReadNullTerminatedString() else {
1414
throw PostgresError.protocol("Invalid NotificationResponse message: unable to read channel")
1515
}
16-
guard let payload = buffer.readNullTerminatedString() else {
16+
guard let payload = buffer.psqlReadNullTerminatedString() else {
1717
throw PostgresError.protocol("Invalid NotificationResponse message: unable to read payload")
1818
}
1919
return .init(backendPID: backendPID, channel: channel, payload: payload)

Sources/PostgresNIO/Message/PostgresMessage+ParameterStatus.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,10 @@ extension PostgresMessage {
44
public struct ParameterStatus: PostgresMessageType, CustomStringConvertible {
55
/// Parses an instance of this message type from a byte buffer.
66
public static func parse(from buffer: inout ByteBuffer) throws -> ParameterStatus {
7-
guard let parameter = buffer.readNullTerminatedString() else {
7+
guard let parameter = buffer.psqlReadNullTerminatedString() else {
88
throw PostgresError.protocol("Could not read parameter from parameter status message")
99
}
10-
guard let value = buffer.readNullTerminatedString() else {
10+
guard let value = buffer.psqlReadNullTerminatedString() else {
1111
throw PostgresError.protocol("Could not read value from parameter status message")
1212
}
1313
return .init(parameter: parameter, value: value)

Sources/PostgresNIO/Message/PostgresMessage+RowDescription.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ extension PostgresMessage {
1111
/// Describes a single field returns in a `RowDescription` message.
1212
public struct Field: CustomStringConvertible {
1313
static func parse(from buffer: inout ByteBuffer) throws -> Field {
14-
guard let name = buffer.readNullTerminatedString() else {
14+
guard let name = buffer.psqlReadNullTerminatedString() else {
1515
throw PostgresError.protocol("Could not read row description field name")
1616
}
1717
guard let tableOID = buffer.readInteger(as: UInt32.self) else {

Sources/PostgresNIO/Message/PostgresMessage+SASLResponse.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ extension PostgresMessage {
3838
public let initialData: [UInt8]
3939

4040
public static func parse(from buffer: inout ByteBuffer) throws -> PostgresMessage.SASLInitialResponse {
41-
guard let mechanism = buffer.readNullTerminatedString() else {
41+
guard let mechanism = buffer.psqlReadNullTerminatedString() else {
4242
throw PostgresError.protocol("Could not parse SASL mechanism from initial response message")
4343
}
4444
guard let dataLength = buffer.readInteger(as: Int32.self) else {
@@ -57,7 +57,7 @@ extension PostgresMessage {
5757
}
5858

5959
public func serialize(into buffer: inout ByteBuffer) throws {
60-
buffer.writeNullTerminatedString(mechanism)
60+
buffer.psqlWriteNullTerminatedString(mechanism)
6161
if initialData.count > 0 {
6262
buffer.writeInteger(Int32(initialData.count), as: Int32.self) // write(array:) writes Int16, which is incorrect here
6363
buffer.writeBytes(initialData)

Sources/PostgresNIO/New/Data/Float+PSQLCodable.swift

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,12 +12,12 @@ extension Float: PSQLCodable {
1212
static func decode(from buffer: inout ByteBuffer, type: PSQLDataType, format: PSQLFormat, context: PSQLDecodingContext) throws -> Float {
1313
switch (format, type) {
1414
case (.binary, .float4):
15-
guard buffer.readableBytes == 4, let float = buffer.readFloat() else {
15+
guard buffer.readableBytes == 4, let float = buffer.psqlReadFloat() else {
1616
throw PSQLCastingError.failure(targetType: Self.self, type: type, postgresData: buffer, context: context)
1717
}
1818
return float
1919
case (.binary, .float8):
20-
guard buffer.readableBytes == 8, let double = buffer.readDouble() else {
20+
guard buffer.readableBytes == 8, let double = buffer.psqlReadDouble() else {
2121
throw PSQLCastingError.failure(targetType: Self.self, type: type, postgresData: buffer, context: context)
2222
}
2323
return Float(double)
@@ -32,7 +32,7 @@ extension Float: PSQLCodable {
3232
}
3333

3434
func encode(into byteBuffer: inout ByteBuffer, context: PSQLEncodingContext) {
35-
byteBuffer.writeFloat(self)
35+
byteBuffer.psqlWriteFloat(self)
3636
}
3737
}
3838

@@ -48,12 +48,12 @@ extension Double: PSQLCodable {
4848
static func decode(from buffer: inout ByteBuffer, type: PSQLDataType, format: PSQLFormat, context: PSQLDecodingContext) throws -> Double {
4949
switch (format, type) {
5050
case (.binary, .float4):
51-
guard buffer.readableBytes == 4, let float = buffer.readFloat() else {
51+
guard buffer.readableBytes == 4, let float = buffer.psqlReadFloat() else {
5252
throw PSQLCastingError.failure(targetType: Self.self, type: type, postgresData: buffer, context: context)
5353
}
5454
return Double(float)
5555
case (.binary, .float8):
56-
guard buffer.readableBytes == 8, let double = buffer.readDouble() else {
56+
guard buffer.readableBytes == 8, let double = buffer.psqlReadDouble() else {
5757
throw PSQLCastingError.failure(targetType: Self.self, type: type, postgresData: buffer, context: context)
5858
}
5959
return double
@@ -68,7 +68,7 @@ extension Double: PSQLCodable {
6868
}
6969

7070
func encode(into byteBuffer: inout ByteBuffer, context: PSQLEncodingContext) {
71-
byteBuffer.writeDouble(self)
71+
byteBuffer.psqlWriteDouble(self)
7272
}
7373
}
7474

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
import NIOCore
22

33
internal extension ByteBuffer {
4-
mutating func writeNullTerminatedString(_ string: String) {
4+
mutating func psqlWriteNullTerminatedString(_ string: String) {
55
self.writeString(string)
66
self.writeInteger(0, as: UInt8.self)
77
}
88

9-
mutating func readNullTerminatedString() -> String? {
9+
mutating func psqlReadNullTerminatedString() -> String? {
1010
guard let nullIndex = readableBytesView.firstIndex(of: 0) else {
1111
return nil
1212
}
@@ -15,27 +15,27 @@ internal extension ByteBuffer {
1515
return readString(length: nullIndex - readerIndex)
1616
}
1717

18-
mutating func writeBackendMessageID(_ messageID: PSQLBackendMessage.ID) {
18+
mutating func psqlWriteBackendMessageID(_ messageID: PSQLBackendMessage.ID) {
1919
self.writeInteger(messageID.rawValue)
2020
}
2121

22-
mutating func writeFrontendMessageID(_ messageID: PSQLFrontendMessage.ID) {
22+
mutating func psqlWriteFrontendMessageID(_ messageID: PSQLFrontendMessage.ID) {
2323
self.writeInteger(messageID.rawValue)
2424
}
2525

26-
mutating func readFloat() -> Float? {
26+
mutating func psqlReadFloat() -> Float? {
2727
return self.readInteger(as: UInt32.self).map { Float(bitPattern: $0) }
2828
}
2929

30-
mutating func readDouble() -> Double? {
30+
mutating func psqlReadDouble() -> Double? {
3131
return self.readInteger(as: UInt64.self).map { Double(bitPattern: $0) }
3232
}
3333

34-
mutating func writeFloat(_ float: Float) {
34+
mutating func psqlWriteFloat(_ float: Float) {
3535
self.writeInteger(float.bitPattern)
3636
}
3737

38-
mutating func writeDouble(_ double: Double) {
38+
mutating func psqlWriteDouble(_ double: Double) {
3939
self.writeInteger(double.bitPattern)
4040
}
4141
}

Sources/PostgresNIO/New/Messages/Authentication.swift

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ extension PSQLBackendMessage {
1616
case saslFinal(data: ByteBuffer)
1717

1818
static func decode(from buffer: inout ByteBuffer) throws -> Self {
19-
try buffer.ensureAtLeastNBytesRemaining(2)
19+
try buffer.psqlEnsureAtLeastNBytesRemaining(2)
2020

2121
// we have at least two bytes remaining, therefore we can force unwrap this read.
2222
let authID = buffer.readInteger(as: Int32.self)!
@@ -29,7 +29,7 @@ extension PSQLBackendMessage {
2929
case 3:
3030
return .plaintext
3131
case 5:
32-
try buffer.ensureExactNBytesRemaining(4)
32+
try buffer.psqlEnsureExactNBytesRemaining(4)
3333
let salt1 = buffer.readInteger(as: UInt8.self)!
3434
let salt2 = buffer.readInteger(as: UInt8.self)!
3535
let salt3 = buffer.readInteger(as: UInt8.self)!
@@ -47,7 +47,7 @@ extension PSQLBackendMessage {
4747
case 10:
4848
var names = [String]()
4949
let endIndex = buffer.readerIndex + buffer.readableBytes
50-
while buffer.readerIndex < endIndex, let next = buffer.readNullTerminatedString() {
50+
while buffer.readerIndex < endIndex, let next = buffer.psqlReadNullTerminatedString() {
5151
names.append(next)
5252
}
5353

Sources/PostgresNIO/New/Messages/BackendKeyData.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ extension PSQLBackendMessage {
77
let secretKey: Int32
88

99
static func decode(from buffer: inout ByteBuffer) throws -> Self {
10-
try buffer.ensureExactNBytesRemaining(8)
10+
try buffer.psqlEnsureExactNBytesRemaining(8)
1111

1212
// We have verified the correct length before, this means we have exactly eight bytes
1313
// to read. If we have enough readable bytes, a read of Int32 should always succeed.

Sources/PostgresNIO/New/Messages/Bind.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,8 @@ extension PSQLFrontendMessage {
1313
var parameters: [PSQLEncodable]
1414

1515
func encode(into buffer: inout ByteBuffer, using jsonEncoder: PSQLJSONEncoder) throws {
16-
buffer.writeNullTerminatedString(self.portalName)
17-
buffer.writeNullTerminatedString(self.preparedStatementName)
16+
buffer.psqlWriteNullTerminatedString(self.portalName)
17+
buffer.psqlWriteNullTerminatedString(self.preparedStatementName)
1818

1919
// The number of parameter format codes that follow (denoted C below). This can be
2020
// zero to indicate that there are no parameters or that the parameters all use the

Sources/PostgresNIO/New/Messages/Close.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,10 @@ extension PSQLFrontendMessage {
1010
switch self {
1111
case .preparedStatement(let name):
1212
buffer.writeInteger(UInt8(ascii: "S"))
13-
buffer.writeNullTerminatedString(name)
13+
buffer.psqlWriteNullTerminatedString(name)
1414
case .portal(let name):
1515
buffer.writeInteger(UInt8(ascii: "P"))
16-
buffer.writeNullTerminatedString(name)
16+
buffer.psqlWriteNullTerminatedString(name)
1717
}
1818
}
1919
}

Sources/PostgresNIO/New/Messages/DataRow.swift

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,24 +15,24 @@ struct DataRow: PSQLBackendMessage.PayloadDecodable, Equatable {
1515
var bytes: ByteBuffer
1616

1717
static func decode(from buffer: inout ByteBuffer) throws -> Self {
18-
try buffer.ensureAtLeastNBytesRemaining(2)
18+
try buffer.psqlEnsureAtLeastNBytesRemaining(2)
1919
let columnCount = buffer.readInteger(as: Int16.self)!
2020
let firstColumnIndex = buffer.readerIndex
2121

2222
for _ in 0..<columnCount {
23-
try buffer.ensureAtLeastNBytesRemaining(2)
23+
try buffer.psqlEnsureAtLeastNBytesRemaining(2)
2424
let bufferLength = Int(buffer.readInteger(as: Int32.self)!)
2525

2626
guard bufferLength >= 0 else {
2727
// if buffer length is negative, this means that the value is null
2828
continue
2929
}
3030

31-
try buffer.ensureAtLeastNBytesRemaining(bufferLength)
31+
try buffer.psqlEnsureAtLeastNBytesRemaining(bufferLength)
3232
buffer.moveReaderIndex(forwardBy: bufferLength)
3333
}
3434

35-
try buffer.ensureExactNBytesRemaining(0)
35+
try buffer.psqlEnsureExactNBytesRemaining(0)
3636

3737
buffer.moveReaderIndex(to: firstColumnIndex)
3838
let columnSlice = buffer.readSlice(length: buffer.readableBytes)!

Sources/PostgresNIO/New/Messages/Describe.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,10 @@ extension PSQLFrontendMessage {
1111
switch self {
1212
case .preparedStatement(let name):
1313
buffer.writeInteger(UInt8(ascii: "S"))
14-
buffer.writeNullTerminatedString(name)
14+
buffer.psqlWriteNullTerminatedString(name)
1515
case .portal(let name):
1616
buffer.writeInteger(UInt8(ascii: "P"))
17-
buffer.writeNullTerminatedString(name)
17+
buffer.psqlWriteNullTerminatedString(name)
1818
}
1919
}
2020
}

Sources/PostgresNIO/New/Messages/ErrorResponse.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -117,7 +117,7 @@ extension PSQLBackendMessage.PayloadDecodable where Self: PSQLMessageNotice {
117117
asType: PSQLBackendMessage.Field.self)
118118
}
119119

120-
guard let string = buffer.readNullTerminatedString() else {
120+
guard let string = buffer.psqlReadNullTerminatedString() else {
121121
throw PSQLPartialDecodingError.fieldNotDecodable(type: String.self)
122122
}
123123
fields[field] = string

Sources/PostgresNIO/New/Messages/Execute.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ extension PSQLFrontendMessage {
1515
}
1616

1717
func encode(into buffer: inout ByteBuffer) {
18-
buffer.writeNullTerminatedString(self.portalName)
18+
buffer.psqlWriteNullTerminatedString(self.portalName)
1919
buffer.writeInteger(self.maxNumberOfRows)
2020
}
2121
}

Sources/PostgresNIO/New/Messages/NotificationResponse.swift

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,13 @@ extension PSQLBackendMessage {
88
let payload: String
99

1010
static func decode(from buffer: inout ByteBuffer) throws -> PSQLBackendMessage.NotificationResponse {
11-
try buffer.ensureAtLeastNBytesRemaining(6)
11+
try buffer.psqlEnsureAtLeastNBytesRemaining(6)
1212
let backendPID = buffer.readInteger(as: Int32.self)!
1313

14-
guard let channel = buffer.readNullTerminatedString() else {
14+
guard let channel = buffer.psqlReadNullTerminatedString() else {
1515
throw PSQLPartialDecodingError.fieldNotDecodable(type: String.self)
1616
}
17-
guard let payload = buffer.readNullTerminatedString() else {
17+
guard let payload = buffer.psqlReadNullTerminatedString() else {
1818
throw PSQLPartialDecodingError.fieldNotDecodable(type: String.self)
1919
}
2020

0 commit comments

Comments
 (0)