diff options
Diffstat (limited to 'swift/src/Ice/Blobject.swift')
-rw-r--r-- | swift/src/Ice/Blobject.swift | 15 |
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) } } |