| /* |
| * Licensed to the Apache Software Foundation (ASF) under one |
| * or more contributor license agreements. See the NOTICE file |
| * distributed with this work for additional information |
| * regarding copyright ownership. The ASF licenses this file |
| * to you under the Apache License, Version 2.0 (the |
| * "License"); you may not use this file except in compliance |
| * with the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, |
| * software distributed under the License is distributed on an |
| * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| * KIND, either express or implied. See the License for the |
| * specific language governing permissions and limitations |
| * under the License. |
| */ |
| |
| import Foundation // For (NS)Data |
| |
| |
| /// Generic protocol, implementes TProtocol and wraps a concrete protocol. |
| /// Useful for generically subclassing protocols to override specific methods |
| /// (i.e. TMultiplexedProtocol) |
| open class TWrappedProtocol<Protocol: TProtocol> : TProtocol { |
| var concreteProtocol: Protocol |
| |
| public var transport: TTransport { |
| get { |
| return concreteProtocol.transport |
| } |
| set { |
| concreteProtocol.transport = newValue |
| } |
| } |
| |
| public required init(on transport: TTransport) { |
| self.concreteProtocol = Protocol(on: transport) |
| } |
| |
| // Read methods |
| |
| public func readMessageBegin() throws -> (String, TMessageType, Int32) { |
| return try concreteProtocol.readMessageBegin() |
| } |
| |
| public func readMessageEnd() throws { |
| try concreteProtocol.readMessageEnd() |
| } |
| |
| public func readStructBegin() throws -> String { |
| return try concreteProtocol.readStructBegin() |
| } |
| |
| public func readStructEnd() throws { |
| try concreteProtocol.readStructEnd() |
| } |
| |
| public func readFieldBegin() throws -> (String, TType, Int32) { |
| return try concreteProtocol.readFieldBegin() |
| } |
| |
| public func readFieldEnd() throws { |
| try concreteProtocol.readFieldEnd() |
| } |
| |
| public func readMapBegin() throws -> (TType, TType, Int32) { |
| return try concreteProtocol.readMapBegin() |
| } |
| |
| public func readMapEnd() throws { |
| try concreteProtocol.readMapEnd() |
| } |
| |
| public func readSetBegin() throws -> (TType, Int32) { |
| return try concreteProtocol.readSetBegin() |
| } |
| |
| public func readSetEnd() throws { |
| try concreteProtocol.readSetEnd() |
| } |
| |
| public func readListBegin() throws -> (TType, Int32) { |
| return try concreteProtocol.readListBegin() |
| } |
| |
| public func readListEnd() throws { |
| try concreteProtocol.readListEnd() |
| } |
| |
| public func read() throws -> String { |
| return try concreteProtocol.read() |
| } |
| |
| public func read() throws -> Bool { |
| return try concreteProtocol.read() |
| } |
| |
| public func read() throws -> UInt8 { |
| return try concreteProtocol.read() |
| } |
| |
| public func read() throws -> Int16 { |
| return try concreteProtocol.read() |
| } |
| |
| public func read() throws -> Int32 { |
| return try concreteProtocol.read() |
| } |
| |
| public func read() throws -> Int64 { |
| return try concreteProtocol.read() |
| } |
| |
| public func read() throws -> Double { |
| return try concreteProtocol.read() |
| } |
| |
| public func read() throws -> Data { |
| return try concreteProtocol.read() |
| } |
| |
| // Write methods |
| |
| public func writeMessageBegin(name: String, type messageType: TMessageType, sequenceID: Int32) throws { |
| return try concreteProtocol.writeMessageBegin(name: name, type: messageType, sequenceID: sequenceID) |
| } |
| |
| public func writeMessageEnd() throws { |
| try concreteProtocol.writeMessageEnd() |
| } |
| |
| public func writeStructBegin(name: String) throws { |
| try concreteProtocol.writeStructBegin(name: name) |
| } |
| |
| public func writeStructEnd() throws { |
| try concreteProtocol.writeStructEnd() |
| } |
| |
| public func writeFieldBegin(name: String, type fieldType: TType, fieldID: Int32) throws { |
| try concreteProtocol.writeFieldBegin(name: name, type: fieldType, fieldID: fieldID) |
| } |
| |
| public func writeFieldStop() throws { |
| try concreteProtocol.writeFieldStop() |
| } |
| |
| public func writeFieldEnd() throws { |
| try concreteProtocol.writeFieldEnd() |
| } |
| |
| public func writeMapBegin(keyType: TType, valueType: TType, size: Int32) throws { |
| try concreteProtocol.writeMapBegin(keyType: keyType, valueType: valueType, size: size) |
| } |
| |
| public func writeMapEnd() throws { |
| try concreteProtocol.writeMapEnd() |
| } |
| |
| public func writeSetBegin(elementType: TType, size: Int32) throws { |
| try concreteProtocol.writeSetBegin(elementType: elementType, size: size) |
| } |
| |
| public func writeSetEnd() throws { |
| try concreteProtocol.writeSetEnd() |
| } |
| |
| public func writeListBegin(elementType: TType, size: Int32) throws { |
| try concreteProtocol.writeListBegin(elementType: elementType, size: size) |
| } |
| |
| public func writeListEnd() throws { |
| try concreteProtocol.writeListEnd() |
| } |
| public func write(_ value: String) throws { |
| try concreteProtocol.write(value) |
| } |
| |
| public func write(_ value: Bool) throws { |
| try concreteProtocol.write(value) |
| } |
| |
| public func write(_ value: UInt8) throws { |
| try concreteProtocol.write(value) |
| } |
| |
| public func write(_ value: Int16) throws { |
| try concreteProtocol.write(value) |
| } |
| |
| public func write(_ value: Int32) throws { |
| try concreteProtocol.write(value) |
| } |
| |
| public func write(_ value: Int64) throws { |
| try concreteProtocol.write(value) |
| } |
| |
| public func write(_ value: Double) throws { |
| try concreteProtocol.write(value) |
| } |
| |
| public func write(_ data: Data) throws { |
| try concreteProtocol.write(data) |
| } |
| } |