Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2026-04-17 08:35:02

0001 /*
0002  * Licensed to the Apache Software Foundation (ASF) under one
0003  * or more contributor license agreements. See the NOTICE file
0004  * distributed with this work for additional information
0005  * regarding copyright ownership. The ASF licenses this file
0006  * to you under the Apache License, Version 2.0 (the
0007  * "License"); you may not use this file except in compliance
0008  * with the License. You may obtain a copy of the License at
0009  *
0010  *   http://www.apache.org/licenses/LICENSE-2.0
0011  *
0012  * Unless required by applicable law or agreed to in writing,
0013  * software distributed under the License is distributed on an
0014  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
0015  * KIND, either express or implied. See the License for the
0016  * specific language governing permissions and limitations
0017  * under the License.
0018  */
0019 
0020 #ifndef THRIFT_TPROTOCOLDECORATOR_H_
0021 #define THRIFT_TPROTOCOLDECORATOR_H_ 1
0022 
0023 #include <thrift/protocol/TProtocol.h>
0024 #include <memory>
0025 
0026 namespace apache {
0027 namespace thrift {
0028 namespace protocol {
0029 using std::shared_ptr;
0030 
0031 /**
0032  * <code>TProtocolDecorator</code> forwards all requests to an enclosed
0033  * <code>TProtocol</code> instance, providing a way to author concise
0034  * concrete decorator subclasses.
0035  *
0036  * <p>See p.175 of Design Patterns (by Gamma et al.)</p>
0037  *
0038  * @see apache::thrift::protocol::TMultiplexedProtocol
0039  */
0040 class TProtocolDecorator : public TProtocol {
0041 public:
0042   ~TProtocolDecorator() override = default;
0043 
0044   // Desc: Initializes the protocol decorator object.
0045   TProtocolDecorator(shared_ptr<TProtocol> proto)
0046     : TProtocol(proto->getTransport()), protocol(proto) {}
0047 
0048   uint32_t writeMessageBegin_virt(const std::string& name,
0049                                           const TMessageType messageType,
0050                                           const int32_t seqid) override {
0051     return protocol->writeMessageBegin(name, messageType, seqid);
0052   }
0053   uint32_t writeMessageEnd_virt() override { return protocol->writeMessageEnd(); }
0054   uint32_t writeStructBegin_virt(const char* name) override {
0055     return protocol->writeStructBegin(name);
0056   }
0057   uint32_t writeStructEnd_virt() override { return protocol->writeStructEnd(); }
0058 
0059   uint32_t writeFieldBegin_virt(const char* name,
0060                                         const TType fieldType,
0061                                         const int16_t fieldId) override {
0062     return protocol->writeFieldBegin(name, fieldType, fieldId);
0063   }
0064 
0065   uint32_t writeFieldEnd_virt() override { return protocol->writeFieldEnd(); }
0066   uint32_t writeFieldStop_virt() override { return protocol->writeFieldStop(); }
0067 
0068   uint32_t writeMapBegin_virt(const TType keyType,
0069                                       const TType valType,
0070                                       const uint32_t size) override {
0071     return protocol->writeMapBegin(keyType, valType, size);
0072   }
0073 
0074   uint32_t writeMapEnd_virt() override { return protocol->writeMapEnd(); }
0075 
0076   uint32_t writeListBegin_virt(const TType elemType, const uint32_t size) override {
0077     return protocol->writeListBegin(elemType, size);
0078   }
0079   uint32_t writeListEnd_virt() override { return protocol->writeListEnd(); }
0080 
0081   uint32_t writeSetBegin_virt(const TType elemType, const uint32_t size) override {
0082     return protocol->writeSetBegin(elemType, size);
0083   }
0084   uint32_t writeSetEnd_virt() override { return protocol->writeSetEnd(); }
0085 
0086   uint32_t writeBool_virt(const bool value) override { return protocol->writeBool(value); }
0087   uint32_t writeByte_virt(const int8_t byte) override { return protocol->writeByte(byte); }
0088   uint32_t writeI16_virt(const int16_t i16) override { return protocol->writeI16(i16); }
0089   uint32_t writeI32_virt(const int32_t i32) override { return protocol->writeI32(i32); }
0090   uint32_t writeI64_virt(const int64_t i64) override { return protocol->writeI64(i64); }
0091 
0092   uint32_t writeDouble_virt(const double dub) override { return protocol->writeDouble(dub); }
0093   uint32_t writeString_virt(const std::string& str) override { return protocol->writeString(str); }
0094   uint32_t writeBinary_virt(const std::string& str) override { return protocol->writeBinary(str); }
0095   uint32_t writeUUID_virt(const TUuid& uuid) override { return protocol->writeUUID(uuid); }
0096 
0097   uint32_t readMessageBegin_virt(std::string& name,
0098                                          TMessageType& messageType,
0099                                          int32_t& seqid) override {
0100     return protocol->readMessageBegin(name, messageType, seqid);
0101   }
0102   uint32_t readMessageEnd_virt() override { return protocol->readMessageEnd(); }
0103 
0104   uint32_t readStructBegin_virt(std::string& name) override {
0105     return protocol->readStructBegin(name);
0106   }
0107   uint32_t readStructEnd_virt() override { return protocol->readStructEnd(); }
0108 
0109   uint32_t readFieldBegin_virt(std::string& name, TType& fieldType, int16_t& fieldId) override {
0110     return protocol->readFieldBegin(name, fieldType, fieldId);
0111   }
0112   uint32_t readFieldEnd_virt() override { return protocol->readFieldEnd(); }
0113 
0114   uint32_t readMapBegin_virt(TType& keyType, TType& valType, uint32_t& size) override {
0115     return protocol->readMapBegin(keyType, valType, size);
0116   }
0117   uint32_t readMapEnd_virt() override { return protocol->readMapEnd(); }
0118 
0119   uint32_t readListBegin_virt(TType& elemType, uint32_t& size) override {
0120     return protocol->readListBegin(elemType, size);
0121   }
0122   uint32_t readListEnd_virt() override { return protocol->readListEnd(); }
0123 
0124   uint32_t readSetBegin_virt(TType& elemType, uint32_t& size) override {
0125     return protocol->readSetBegin(elemType, size);
0126   }
0127   uint32_t readSetEnd_virt() override { return protocol->readSetEnd(); }
0128 
0129   uint32_t readBool_virt(bool& value) override { return protocol->readBool(value); }
0130   uint32_t readBool_virt(std::vector<bool>::reference value) override {
0131     return protocol->readBool(value);
0132   }
0133 
0134   uint32_t readByte_virt(int8_t& byte) override { return protocol->readByte(byte); }
0135 
0136   uint32_t readI16_virt(int16_t& i16) override { return protocol->readI16(i16); }
0137   uint32_t readI32_virt(int32_t& i32) override { return protocol->readI32(i32); }
0138   uint32_t readI64_virt(int64_t& i64) override { return protocol->readI64(i64); }
0139 
0140   uint32_t readDouble_virt(double& dub) override { return protocol->readDouble(dub); }
0141 
0142   uint32_t readString_virt(std::string& str) override { return protocol->readString(str); }
0143   uint32_t readBinary_virt(std::string& str) override { return protocol->readBinary(str); }
0144   uint32_t readUUID_virt(TUuid& uuid) override { return protocol->readUUID(uuid); }
0145 
0146 private:
0147   shared_ptr<TProtocol> protocol;
0148 };
0149 }
0150 }
0151 }
0152 
0153 #endif // THRIFT_TPROTOCOLDECORATOR_H_