summaryrefslogtreecommitdiff
path: root/swift/src/Ice/Blobject.swift
diff options
context:
space:
mode:
Diffstat (limited to 'swift/src/Ice/Blobject.swift')
-rw-r--r--swift/src/Ice/Blobject.swift15
1 files changed, 11 insertions, 4 deletions
diff --git a/swift/src/Ice/Blobject.swift b/swift/src/Ice/Blobject.swift
index 23a3cf8ab0c..6aa7b4798c6 100644
--- a/swift/src/Ice/Blobject.swift
+++ b/swift/src/Ice/Blobject.swift
@@ -5,7 +5,7 @@
import Foundation
/// Base protocol for dynamic dispatch servants.
-public protocol Blobject: Disp {
+public protocol Blobject {
/// Dispatch an incoming request.
///
/// - parameter inEncaps: `Data` - The encoded in-parameters for the operation.
@@ -24,10 +24,17 @@ public protocol Blobject: Disp {
func ice_invoke(inEncaps: Data, current: Current) throws -> (ok: Bool, outParams: Data)
}
-public extension Blobject {
- func dispatch(incoming inS: Incoming, current: Current) throws {
+public struct BlobjectDisp: Disp {
+
+ public let servant: Blobject
+
+ public init(_ servant: Blobject) {
+ self.servant = servant
+ }
+
+ public func dispatch(incoming inS: Incoming, current: Current) throws {
let inEncaps = try inS.readParamEncaps()
- let invokeResult = try ice_invoke(inEncaps: inEncaps, current: current)
+ let invokeResult = try servant.ice_invoke(inEncaps: inEncaps, current: current)
inS.writeParamEncaps(ok: invokeResult.ok, outParams: invokeResult.outParams)
}
}