Skip to content

Commit 91f5d0f

Browse files
committed
fix
1 parent d65da44 commit 91f5d0f

13 files changed

+193
-85
lines changed

.swift-format

Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
{
2+
"fileScopedDeclarationPrivacy": {
3+
"accessLevel": "private"
4+
},
5+
"indentConditionalCompilationBlocks": true,
6+
"indentSwitchCaseLabels": false,
7+
"indentation": {
8+
"spaces": 4
9+
},
10+
"lineBreakAroundMultilineExpressionChainComponents": false,
11+
"lineBreakBeforeControlFlowKeywords": false,
12+
"lineBreakBeforeEachArgument": false,
13+
"lineBreakBeforeEachGenericRequirement": false,
14+
"lineBreakBetweenDeclarationAttributes": false,
15+
"lineLength": 150,
16+
"maximumBlankLines": 1,
17+
"multiElementCollectionTrailingCommas": true,
18+
"noAssignmentInExpressions": {
19+
"allowedFunctions": [
20+
"XCTAssertNoThrow"
21+
]
22+
},
23+
"prioritizeKeepingFunctionOutputTogether": false,
24+
"reflowMultilineStringLiterals": {
25+
"never": {}
26+
},
27+
"respectsExistingLineBreaks": true,
28+
"rules": {
29+
"AllPublicDeclarationsHaveDocumentation": false,
30+
"AlwaysUseLiteralForEmptyCollectionInit": false,
31+
"AlwaysUseLowerCamelCase": true,
32+
"AmbiguousTrailingClosureOverload": true,
33+
"AvoidRetroactiveConformances": true,
34+
"BeginDocumentationCommentWithOneLineSummary": false,
35+
"DoNotUseSemicolons": true,
36+
"DontRepeatTypeInStaticProperties": true,
37+
"FileScopedDeclarationPrivacy": true,
38+
"FullyIndirectEnum": true,
39+
"GroupNumericLiterals": true,
40+
"IdentifiersMustBeASCII": true,
41+
"NeverForceUnwrap": false,
42+
"NeverUseForceTry": false,
43+
"NeverUseImplicitlyUnwrappedOptionals": false,
44+
"NoAccessLevelOnExtensionDeclaration": true,
45+
"NoAssignmentInExpressions": true,
46+
"NoBlockComments": true,
47+
"NoCasesWithOnlyFallthrough": true,
48+
"NoEmptyLinesOpeningClosingBraces": false,
49+
"NoEmptyTrailingClosureParentheses": true,
50+
"NoLabelsInCasePatterns": true,
51+
"NoLeadingUnderscores": false,
52+
"NoParensAroundConditions": true,
53+
"NoPlaygroundLiterals": true,
54+
"NoVoidReturnOnFunctionSignature": true,
55+
"OmitExplicitReturns": false,
56+
"OneCasePerLine": true,
57+
"OneVariableDeclarationPerLine": true,
58+
"OnlyOneTrailingClosureArgument": true,
59+
"OrderedImports": true,
60+
"ReplaceForEachWithForLoop": true,
61+
"ReturnVoidInsteadOfEmptyTuple": true,
62+
"TypeNamesShouldBeCapitalized": true,
63+
"UseEarlyExits": false,
64+
"UseExplicitNilCheckInConditions": true,
65+
"UseLetInEveryBoundCaseVariable": true,
66+
"UseShorthandTypeNames": true,
67+
"UseSingleLinePropertyGetter": true,
68+
"UseSynthesizedInitializer": true,
69+
"UseTripleSlashForDocumentationComments": true,
70+
"UseWhereClausesInForLoops": false,
71+
"ValidateDocumentationComments": false
72+
},
73+
"spacesAroundRangeFormationOperators": false,
74+
"spacesBeforeEndOfLineComments": 2,
75+
"tabWidth": 8,
76+
"version": 1
77+
}

Sources/Omnikit/Remoting/Messages/OmniRemotingHelloMessage.swift

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,7 @@ struct OmniRemotingHelloMessage: RocketMessage, Equatable {
2626
public static func unpack(_ bytes: inout ByteBuffer, depth: UInt32) throws
2727
-> OmniRemotingHelloMessage
2828
{
29-
let text = try RocketMessageReader.getString(&bytes, 1024)
30-
let version = OmniRemotingVersion(rawValue: text) ?? .unknown
29+
let version = OmniRemotingVersion(rawValue: try RocketMessageReader.getString(&bytes, 1024)) ?? .unknown
3130
let functionId = try RocketMessageReader.getUInt32(&bytes)
3231
return OmniRemotingHelloMessage(version: version, functionId: functionId)
3332
}

Sources/Omnikit/Remoting/Messages/OmniRemotingPacketMessage.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import Foundation
22
import NIO
33
import RocketPack
44

5-
enum OmniRemotingPacketMessage<T, E>
5+
public enum OmniRemotingPacketMessage<T, E>
66
where T: RocketMessage, E: RocketMessage & CustomStringConvertible {
77
case unknown
88
case `continue`(T)

Sources/Omnikit/Remoting/OmniRemotingCaller.swift

Lines changed: 16 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@ import Foundation
22
import NIO
33
import RocketPack
44

5-
public class OmniRemotingCaller<TError>
6-
where TError: RocketMessage & CustomStringConvertible & Sendable {
5+
public class OmniRemotingCaller<TErrorMessage>
6+
where TErrorMessage: RocketMessage & CustomStringConvertible & Sendable {
77
private let tcpClient: TcpClient
88
private let sender: FramedSender
99
private let receiver: FramedReceiver
@@ -17,8 +17,7 @@ where TError: RocketMessage & CustomStringConvertible & Sendable {
1717
self.tcpClient = tcpClient
1818
self.functionId = functionId
1919
self.sender = FramedSender(tcpClient, allocator: allocator)
20-
self.receiver = FramedReceiver(
21-
tcpClient, maxFrameLength: maxFrameLength, allocator: allocator)
20+
self.receiver = FramedReceiver(tcpClient, maxFrameLength: maxFrameLength, allocator: allocator)
2221
}
2322

2423
public func close() async throws {
@@ -33,23 +32,26 @@ where TError: RocketMessage & CustomStringConvertible & Sendable {
3332
try await self.sender.send(&bytes)
3433
}
3534

36-
public func call<TParam, TResult>(_ param: TParam) async throws -> TResult
35+
public func call_unary<TRequestMessage, TResponseMessage>(_ param: TRequestMessage) async throws -> TResponseMessage
3736
where
38-
TParam: RocketMessage,
39-
TResult: RocketMessage
37+
TRequestMessage: RocketMessage,
38+
TResponseMessage: RocketMessage
4039
{
41-
var sendingBytes = try OmniRemotingPacketMessage<TParam, TError>.complete(param).export()
40+
var sendingBytes = try OmniRemotingPacketMessage<TRequestMessage, TErrorMessage>.complete(param).export()
4241
try await sender.send(&sendingBytes)
4342

4443
var receivedBytes = try await receiver.receive()
45-
let result = try OmniRemotingPacketMessage<TResult, TError>.import(&receivedBytes)
44+
let result = try OmniRemotingPacketMessage<TResponseMessage, TErrorMessage>.import(&receivedBytes)
4645

4746
switch result {
48-
case .unknown: throw OmniRemotingError<TError>.protocolError(.unexpectedProtocol)
49-
case .continue(_): throw OmniRemotingError<TError>.protocolError(.unexpectedProtocol)
50-
case .complete(let receivedResult): return receivedResult
51-
case .error(let received_error_message):
52-
throw OmniRemotingError<TError>.applicationError(received_error_message)
47+
case .unknown: throw OmniRemotingError<TErrorMessage>.protocolError(.unsupportedType)
48+
case .continue(_): throw OmniRemotingError<TErrorMessage>.protocolError(.unsupportedType)
49+
case .complete(let message): return message
50+
case .error(let error_message): throw OmniRemotingError<TErrorMessage>.applicationError(error_message)
5351
}
5452
}
53+
54+
public func call_stream() async throws -> OmniRemotingStream<TErrorMessage> {
55+
return OmniRemotingStream<TErrorMessage>(sender: self.sender, receiver: self.receiver)
56+
}
5557
}

Sources/Omnikit/Remoting/OmniRemotingError.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ where TErrorMessage: RocketMessage & CustomStringConvertible & Sendable {
1717
}
1818

1919
public enum OmniRemotingProtocolErrorCode: Error, CustomStringConvertible {
20-
case unexpectedProtocol
20+
case unsupportedType
2121
case unsupportedVersion
2222
case sendFailed
2323
case receiveFailed
@@ -27,7 +27,7 @@ public enum OmniRemotingProtocolErrorCode: Error, CustomStringConvertible {
2727

2828
public var description: String {
2929
switch self {
30-
case .unexpectedProtocol:
30+
case .unsupportedType:
3131
return "UnexpectedProtocol"
3232
case .unsupportedVersion:
3333
return "UnsupportedVersion"

Sources/Omnikit/Remoting/OmniRemotingListener.swift

Lines changed: 24 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,11 @@ import RocketPack
55
public enum OmniRemotingListenResult<T, E>
66
where T: RocketMessage, E: RocketMessage & CustomStringConvertible & Sendable {
77
case success(T)
8-
case failure(E)
8+
case error(E)
99
}
1010

11-
public class OmniRemotingListener<TError>
12-
where TError: RocketMessage & CustomStringConvertible & Sendable {
11+
public class OmniRemotingListener<TErrorMessage>
12+
where TErrorMessage: RocketMessage & CustomStringConvertible & Sendable {
1313
private let tcpClient: TcpClient
1414
private let sender: FramedSender
1515
private let receiver: FramedReceiver
@@ -19,8 +19,7 @@ where TError: RocketMessage & CustomStringConvertible & Sendable {
1919
public init(tcpClient: TcpClient, maxFrameLength: Int, allocator: ByteBufferAllocator) {
2020
self.tcpClient = tcpClient
2121
self.sender = FramedSender(tcpClient, allocator: allocator)
22-
self.receiver = FramedReceiver(
23-
tcpClient, maxFrameLength: maxFrameLength, allocator: allocator)
22+
self.receiver = FramedReceiver(tcpClient, maxFrameLength: maxFrameLength, allocator: allocator)
2423
}
2524

2625
public func close() async throws {
@@ -37,36 +36,39 @@ where TError: RocketMessage & CustomStringConvertible & Sendable {
3736
self.functionId = helloMessage.functionId
3837
}
3938

40-
throw OmniRemotingError<TError>.protocolError(.unexpectedProtocol)
39+
throw OmniRemotingError<TErrorMessage>.protocolError(.unsupportedVersion)
4140
}
4241

43-
public func listen<TParam, TResult>(
44-
callback: (TParam) async -> OmniRemotingListenResult<TResult, TError>
42+
public func listen_unary<TParamMessage, TSuccessMessage>(
43+
callback: (TParamMessage) async -> OmniRemotingListenResult<TSuccessMessage, TErrorMessage>
4544
) async throws
4645
where
47-
TParam: RocketMessage,
48-
TResult: RocketMessage
46+
TParamMessage: RocketMessage,
47+
TSuccessMessage: RocketMessage
4948
{
5049
var bytes = try await self.receiver.receive()
51-
let param = try OmniRemotingPacketMessage<TParam, TError>.import(&bytes)
50+
let param = try OmniRemotingPacketMessage<TParamMessage, TErrorMessage>.import(&bytes)
5251

5352
switch param {
54-
case .unknown: throw OmniRemotingError<TError>.protocolError(.unexpectedProtocol)
55-
case .continue(_): throw OmniRemotingError<TError>.protocolError(.unexpectedProtocol)
53+
case .unknown: throw OmniRemotingError<TErrorMessage>.protocolError(.unsupportedType)
54+
case .continue(_): throw OmniRemotingError<TErrorMessage>.protocolError(.unsupportedType)
5655
case .complete(let param):
57-
let result = await callback(param)
58-
switch result {
59-
case .success(let result):
60-
let result = OmniRemotingPacketMessage<TResult, TError>.complete(result)
61-
var bytes = try result.export()
56+
switch await callback(param) {
57+
case .success(let message):
58+
let message = OmniRemotingPacketMessage<TSuccessMessage, TErrorMessage>.complete(message)
59+
var bytes = try message.export()
6260
try await self.sender.send(&bytes)
63-
case .failure(let error):
64-
let error = OmniRemotingPacketMessage<TResult, TError>.error(error)
65-
var bytes = try error.export()
61+
case .error(let error_message):
62+
let error_message = OmniRemotingPacketMessage<TSuccessMessage, TErrorMessage>.error(error_message)
63+
var bytes = try error_message.export()
6664
try await self.sender.send(&bytes)
6765
}
6866
case .error(let received_error_message):
69-
throw OmniRemotingError<TError>.applicationError(received_error_message)
67+
throw OmniRemotingError<TErrorMessage>.applicationError(received_error_message)
7068
}
7169
}
70+
71+
public func listen_stream() async throws -> OmniRemotingStream<TErrorMessage> {
72+
return OmniRemotingStream<TErrorMessage>(sender: self.sender, receiver: self.receiver)
73+
}
7274
}
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
import Foundation
2+
import NIO
3+
import RocketPack
4+
5+
public class OmniRemotingStream<TErrorMessage>
6+
where TErrorMessage: RocketMessage & CustomStringConvertible & Sendable {
7+
private let sender: FramedSender
8+
private let receiver: FramedReceiver
9+
10+
public init(sender: FramedSender, receiver: FramedReceiver) {
11+
self.sender = sender
12+
self.receiver = receiver
13+
}
14+
15+
public func send<TMessage>(_ packet: OmniRemotingPacketMessage<TMessage, TErrorMessage>) async throws
16+
where
17+
TMessage: RocketMessage
18+
{
19+
var sendingBytes = try packet.export()
20+
try await sender.send(&sendingBytes)
21+
}
22+
23+
public func receive<TMessage>() async throws -> OmniRemotingPacketMessage<TMessage, TErrorMessage>
24+
where
25+
TMessage: RocketMessage
26+
{
27+
var receivedBytes = try await self.receiver.receive()
28+
return try OmniRemotingPacketMessage<TMessage, TErrorMessage>.import(&receivedBytes)
29+
}
30+
}
Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,5 @@
11
public enum RocketMessageError: Error {
2-
case endOfInput
3-
case limitExceeded
4-
case tooSmallBody
52
case invalidUtf8
6-
}
7-
8-
public enum VarintError: Error {
93
case endOfInput
10-
case invalidHeader
11-
case tooSmallBody
4+
case tooLarge
125
}

Sources/RocketPack/RocketPackReader.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,14 @@ public struct RocketMessageReader {
55
public static func getBytes(_ reader: inout ByteBuffer, _ limit: Int) throws -> [UInt8] {
66
let length = try self.getUInt32(&reader)
77
guard length <= limit else {
8-
throw RocketMessageError.limitExceeded
8+
throw RocketMessageError.tooLarge
99
}
1010
guard length > 0 else {
1111
return []
1212
}
1313

1414
guard let bytes = reader.readBytes(length: Int(length)) else {
15-
throw RocketMessageError.tooSmallBody
15+
throw RocketMessageError.endOfInput
1616
}
1717
return bytes
1818
}

Sources/RocketPack/Timestamp.swift

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,7 @@ public struct Timestamp96 {
2727

2828
public init(date: Date) {
2929
self.seconds = Int64(date.timeIntervalSince1970)
30-
self.nanos = UInt32(
31-
date.timeIntervalSince1970.truncatingRemainder(dividingBy: 1) * 1_000_000_000)
30+
self.nanos = UInt32(date.timeIntervalSince1970.truncatingRemainder(dividingBy: 1) * 1_000_000_000)
3231
}
3332

3433
public func toDate() -> Date {

0 commit comments

Comments
 (0)